继续汇编问题

来源:百度知道 编辑:UC知道 时间:2024/09/23 12:51:53
TAB DW 1,2,3,4,5,6
ENTRY EQU 3
MOV BX,OFFSET TAB
ADD BX,ENTRY
MOV AX,[BX]

AX=多少?
希望能够详细解答

按照TAB的定义,我们来看看内存偏移和数据的排放情况:

偏移值:0 1 2 3 4 5 6 7 8 9 10 11
排放: 01 00 02 00 03 00 04 00 05 00 06 00

mov bx,offset tab ; 把TAB的偏移地址放入BX寄存器内
add bx,entry ; 将偏移地址加上3
mov ax,[bx] ; 根据我假设的内存起始地址来算的话,bx=3 !
所以AX=0300而不是0003!

答案:AX=4
TAB DW 1,2,3,4,5,6 ;定义双字节表格
ENTRY EQU 3 ;定义立即数
MOV BX,OFFSET TAB ;取表格首地址至BX
ADD BX,ENTRY ;首地址+3,指向表格的第四个双字节数据
MOV AX,[BX] ;数据赋给AX

你自己在电脑上试试就知道了。
装一个masm,然后在dos模式下运行debug
用E命令修改某段内存的内容
用A命令编写程序
用G命令执行
对不对,你自己说了算
答案应该AX=0300,跟jonhjack说的一样

0300