XOR BX,BX MOV BL,AL MOV AX,TAB[BX*2]//为什么这里会报错,而如何用EBX就可以通过呢? MOV XXX,AX
作者&投稿:谷月 (若有异议请与网页底部的电邮联系)
MOV DX,[SI]
源操作数:间接寻址
目的操作数:寄存器寻址
MOV AX,[1234H]
源操作数:直接寻址
目的操作数:寄存器寻址
MOV 100[BX],AL
源操作数:寄存器寻址
目的操作数:相对寻址
MOV [BP][SI],AX
源操作数:寄存器寻址
目的操作数:基址变址寻址
MOV [BX+100][SI],AX
源操作数:寄存器寻址
目的操作数:相对基址变址寻址
想问什么呢? 如果是想知道程序运行结果,我想还是自己在本上写写算算,挺简单的小程序,好好学吧,实在不会再问我好了~
1、原因在编译器。2、
XOR EBX,EBX
MOV BL,AL
MOV AX,TAB[EBX*2]//正确!
MOV XXX,AX
从这几句看出你在编写32码段(即32位地址),MOV XXX,AX,其中下XXX应为地址。
另外MOV AX,TAB[EBX*2]//正确!说明编译器支持。
3、XOR BX,BX MOV BL,AL MOV AX,TAB[BX*2]报错说明编译器不支持。
----------------------- 页635-----------------------
MOV—传送
操作码 指令 64位模式 非64位模式 描述
88 /r MOV r/m8,r8 有效 有效 传送 r8 to r/m8.
REX + 88 /r MOV r/m8***,r8*** 有效 N.E. 传送 r8 to r/m8.
89 /r MOV r/m16,r16 有效 有效 传送 r16 to r/m16.
89 /r MOV r/m32,r32 有效 有效 传送 r32 to r/m32.
REX.W + 89 /r MOV r/m64,r64 有效 N.E. 传送 r64 to r/m64.
8A /r MOV r8,r/m8 有效 有效 传送 r/m8 to r8.
REX + 8A /r MOV r8***,r/m8*** 有效 N.E. 传送 r/m8 to r8.
8B /r MOV r16,r/m16 有效 有效 传送 r/m16 to r16.
8B /r MOV r32,r/m32 有效 有效 传送 r/m32 to r32.
REX.W + 8B /r MOV r64,r/m64 有效 N.E. 传送 r/m64 to r64.
8C /r MOV r/m16,Sreg** 有效 有效 传送段寄存器到 r/m16.
REX.W + 8C /r MOV r/m64,Sreg** 有效 有效 传送 零 扩展 16位段寄存器 to r/m64.
8E /r MOV Sreg,r/m16** 有效 有效 传送 r/m16 to段寄存器。
REX.W + 8E /r MOV Sreg,r/m64** 有效 有效 传送 低16位 of r/m64 to段寄存器。
A0 MOV AL,moffs8* 有效 有效 传送 字节 at (seg:offset)到 AL.
REX.W + A0 MOV AL,moffs8* 有效 N.E. 传送 字节 at (offset) to AL.
A1 MOV AX,moffs16* 有效 有效 传送 字 at (seg:offset) to AX.
A1 MOV EAX,moffs32* 有效 有效 传送 双字 at (seg:offset) to EAX.
REX.W + A1 MOV RAX,moffs64* 有效 N.E. 传送四字at (offset) to RAX.
A2 MOV moffs8,AL 有效 有效 传送 AL to (seg:offset)。***
REX.W + A2 MOV moffs8 ,AL 有效 N.E. 传送 AL to (offset)。
A3 MOV moffs16*,AX 有效 有效 传送 AX to (seg:offset)。
A3 MOV moffs32*,EAX 有效 有效 传送 EAX to (seg:offset)。
REX.W + A3 MOV moffs64*,RAX 有效 N.E. 传送 RAX to (offset)。
B0+ rb MOV r8, imm8 有效 有效 传送 imm8 to r8. ***
REX + B0+ rb MOV r8 , imm8 有效 N.E. 传送 imm8 to r8.
B8+ rw MOV r16, imm16 有效 有效 传送 imm16 to r16.
B8+ rd MOV r32, imm32 有效 有效 传送 imm32 to r32.
REX.W + B8+ rd MOV r64, imm64 有效 N.E. 传送 imm64 to r64.
C6 /0 MOV r/m8, imm8 有效 有效 传送 imm8 to r/m8.
REX + C6 /0 MOV r/m8***, imm8 有效 N.E. 传送 imm8 to r/m8.
C7 /0 MOV r/m16, imm16 有效 有效 传送 imm16 to r/m16.
----------------------- 页636-----------------------
C7 /0 MOV r/m32, imm32 有效 有效 传送 imm32 to r/m32.
REX.W + C7 /0 MOV r/m64, imm32 有效 N.E. 传送 imm32 sign 扩展 到64位 to r/m64.
MOV AX,TAB[BX*2]//
改成ADD BX,BX
mov ax,tab[bx]
mov [],tab[?] ?为寄存器,不是表达式
剧春除痰: XOR BX,BX //对本身进行异或运算,清空寄存器bx MOV CX,10 //给寄存器cx赋值10 LPP:MOV AH,1 //给寄存器ah赋值1INT 21H //16进制数21(H表明该数字为16进制数)自减1MOV AH BH //bh的值赋给ah寄存器ADD AL,BL //寄存器al加上bl的值结果在al中存放AAA //不了解,呵呵MOV BX, AX //ax中的值赋给bx寄存器LOOP LPP //回到lpp. 素我直言,,,该程序有点问题哦..
崇明县19158845980: 汇编语言XOR BX,BX - ?
剧春除痰: XOR BX,BX 是异或指令,对应位相同则为0,不同为1,所以相同的两个数相异或,结果为0,同时XOR又属于逻辑运算指令,该类指令执行后标志位清0,也就是FLAG=0.INC AX和ADD AX,1还是不同的,INC只是不影响CF,其它和ADD相同.
崇明县19158845980: 汇编语言中用那条指令来计算字符串的长度 - ?
剧春除痰: 看你用哪种汇编语言了,NASM中是 message db 'hello, world' msglen equ $-message$:当前语句的地址 NASM中变量和标签是一样的应该没有直接的指令吧.要是有的话,它需要两个操作数,一个是字符串的首字符的地址,一个是末字符的地址,那么它不就是减法指令吗.
崇明县19158845980: XOR BX,BX MOV BL,AL MOV AX,TAB[BX*2]//为什么这里会报错,而如何用EBX就可以通过呢? MOV XXX,AX - ?
剧春除痰: 1、原因在编译器.2、 XOR EBX,EBX MOV BL,AL MOV AX,TAB[EBX*2]//正确!MOV XXX,AX 从这几句看出你在编写32码段(即32位地址),MOV XXX,AX,其中下XXX应为地址.另外MOV AX,TAB[EBX*2]//正确!说明编译器支持.3、...
崇明县19158845980: 汇编程序求教 - ?
剧春除痰: 1、这题用16位程序就可以完成了 code segment assume cs:code start: xor bx,bx ;初始化寄存器bx mov cx,404h ;高8位用来计数,低8位存放位移位数 ls_in: shl bx,cl ;bx向左移4位 lp_in: mov ah,8h ;8号中断-输入一个字符,不回显 int 21h cmp al,...
崇明县19158845980: 用简单的汇编语句实现2进制数的16进制输出,假定1A8B - ?
剧春除痰: XOR BX,BX ;BX里面放输入后经转换的2进制数 MOV CL,04 ;转换的时候移位次数 MOV AH,01 MOV DI,4 ;循环4次输入 LP1: SHL BX,CL ;由于最高位也只移3个4位,所以就放在前面. INT 21H SUB AL,30H ;输入的1位数与0的ascii比较 CMP AL,9 JBE DEAL1 ;不小于9的为A,B,C等值 SUB AL,7 ;根据位置关系再减7 DEAL1: ADD BL,AL ;转换后的数存入BL DEC DI CMP DI,0 JNZ LP1这是16进制的2进制
崇明县19158845980: 编写统计AX中1、0个数的程序.0的个数存入CH,1的个数存入CL. - ?
剧春除痰: 核心代码:.code start: xor cx,cxmov ax,9;初始为9 lp: shl ax,1 jc x1;如果是1,就加上 jz ext jmp lp x1: inc cx;CX中保存了1的个数.CXjmp lp ext: mov bx,10h sub bx,cx mov ch,bl;用16减去cx中1的个数,得到0的个数,保存至CH中. end start
崇明县19158845980: 阅读下面的程序段,XOR BX,BXMOV CX,20MOV AX,1L1:TEST AX,1 JNZ L2 ADD BX,AXL2:INC AXLOOP L1(1)程序段执行后,BX寄存器的内容是什么?... - ?
剧春除痰:[答案] XOR BX,BX #BX清零 MOV CX,20 #CX赋值为20 MOV AX,1 #AX赋值为1 L1: TEST AX,1 #测试AX和1是否相等? JNZ L2 #结果不相等就跳转到L2执行? ADD BX,AX #结果相等->BX=BX+AX 21 L2: INC AX #AX清零? LOOP L1 #从L1开始循环
崇明县19158845980: 用汇编语言编一程序段,完成表达式(2x+4y)/2的运算 - ?
剧春除痰: 可不可以先化简哦,化了就是x+2y了 设x,y都是字节 xor ax, ax mov al, x sal ax, 1 xor bx, bx mov bl, y sal bx, 1 sal bx, 1 add ax, bx mov bl 2 div bl ;如果是有符号,改成idiv bl 结果在ax中, al商,ah余数 化简后的程序 xor ax, ax mov al, y sal ax, 1 add al, x adc ah, 0 结果在ax中
崇明县19158845980: 用汇编语言编写程序:从键盘输入5个数(0~9),找其中最大值并显示!急求!!谢谢!!! - ?
剧春除痰: ;程序硬性规定了输入要1 2 8 6 1 这样输入, 即每输入1数字就要空一格assume cs:code, ds:data data segment STR db 0AH,0DH,"Please input five number(0~9): $" BUF db 20 db ? db 20 dup (?) MAX db ? CRLF db 0AH,0DH,'$' ...