分页:
上一页 1 2 3 [4] 5 6 7 下一页
(B)MOV AL, BYTE PTR[BUF+2]
(C)MOV AL, BYTE PTR [BUF+3]
(D)MOV AL,BUF[2]
答案:B
分配示意图: <br>
分析:根据数据定义伪指令BUF DW 1、2、3、4画出内存分配示意图,在存储单元相应位置标出变量名和EA。答案D中目的操作数AL的类型为字节,而源操作数BUF[2]前无BYTEPTR,则BUF[2]类型为字,两个操作数的类型不一致,指令是错误的,因此答案D可排除。变量BUF的EA为0,数据02H在内存中的EA为2。答案ABC中指令的源操作数都是直接寻址,而只有[BUF+2]的EA为2,所以选B。
到目前为止,我们已经复习了寄存器寻址、立即寻址、直接寻址这三种寻址方式。前面三种寻址方式相对来说容易理解和掌握,而后四种寻址方式的操作数都存放在内存储器中,
四种寻址方式中操作数都存放在内存储器中这一特点,而要访问内存储器存放操作数的存储单元,则需要知道存放操作数的存储单元在内存储器中的偏移地址(EA)。寻址方式的重要区别就是得到EA的方式不同。只要掌握如何计算通过这四种寻址方式得到的内存操作数的偏移地址,问题就迎刃而解了。
4.寄存器间接寻址
寄存器间接寻址得到的操作数存放在内存储器中,而操作数的偏移地址EA在指令指明的寄存器中,即寄存器的内容为操作数的偏移地址EA。
汇编格式:[R] R(Register 寄存器的简写,只能是SI,DI,BX,BP其中之一) <br>
功能:R的内容为操作数的偏移地址EA。即操作数的有效地EA存放在基址寄存器(BX或BP)或变址寄存器(DI或SI)中:
EA= [R] 用R作间接寻址寄存器时。
寄存器间接寻址的寻址方式如图所示:
若用寄存器SI,DI,BX间接寻址,则操作数在当前数据段中。
PA=(DS)×10H+EA
若用寄存器BP间接寻址,则操作数在当前堆栈段中。
分页:
上一页 1 2 3 [4] 5 6 7 下一页