一道关于汇编指令(8086,8088)的问题,很简单,谢谢

汇编程序中,以下数据段的基地址为0800H,数据定义为:
ORG 1000H
VX DW 1280H
PY DW VX+2000H
FPZ DD PY
已知(DS)=0800H,(CS)=3800H,(BX)=1000H,(SI)=0002H
求下列指令执行完成后指定寄存器的值。
MOV SI,OFFSET FPZ; (SI)=_______
MOV SI,[SI] ; (SI)=_______
PUSH [SI+2] ; 栈顶的内容=_________
JMP WORD PTR[SI]; (CS)=_______(IP)=________

答案给的依次是:1004H;1002H;1002H;3800H;3000H
我不明白(一个空的1004H我明白),希望高人给解释一下,谢谢~~

先了解数据的存放情况:
符号 偏移地址 内容
VX 1000 80 存放1280,需2字节先低后高,下同
1001 12
PY 1002 00 VX+2000H,VX是1000H,加2000H是3000H
1003 30
FPZ 1004 02 PY偏移地址
1005 10
1006 00 PY段地址
1007 08

MOV SI,OFFSET FPZ; FPZ的偏移地址(SI)=1004H
MOV SI,[SI] ; (SI)=1002H,1004H中的内容
PUSH [SI+2] ; 栈顶的内容=1002H,【1002+2】,即【1004H】中的内容,1002H
JMP WORD PTR[SI]; (CS)=3800H (IP)=3000H 原因:段内间接寻址,CS不变,IP为[SI],即[1002H]=3000H
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-14
本人也想知道啊??求解。。。
相似回答