对于王爽老师实验2(1)的疑问
本帖最后由 ioio_jy 于 2014-2-19 14:11 编辑pop ax ;sp= 00FCH ,ax= 6122H
pop bx ;sp= 00FEH ,bx= 5CCAH
AX=5CCABX=6122CX=0000DX=0000SP=00FCBP=0000SI=0000DI=0000
DS=FFFF ES=0C1CSS=2200 CS=0C1CIP=011E NV UP EI PL NZ NA PE NC
0C1C:011E 58 POP AX
-t
AX=6122BX=6122CX=0000DX=0000SP=00FEBP=0000SI=0000DI=0000
DS=FFFF ES=0C1CSS=2200CS=0C1C IP=011F NV UP EI PL NZ NA PE NC
0C1C:011F 5B POP BX
-t
AX=6122BX=5CCACX=0000DX=0000SP=0100BP=0000SI=0000DI=0000
DS=FFFF ES=0C1C SS=2200 CS=0C1CIP=0120 NV UP EI PL NZ NA PE NC
0C1C:0120 FF360400 PUSH DS:0004=31F0
在执行完pop ax之后,sp为什么不是00FE而是00FC?
同样的,执行完pop bx之后sp为什么不是0100而是00FE? 你看到你的push了么,为什么不是00FE 而是 0100?因为-t是显示下一步执行的指令并执行当前的指令,而不是执行下一步。 oggplay 发表于 2014-2-19 15:43 static/image/common/back.gif
你看到你的push了么,为什么不是00FE 而是 0100?因为-t是显示下一步执行的指令并执行当前的指令,而不是执 ...
AX=5CCABX=6122CX=0000DX=0000SP=0100BP=0000SI=0000DI=0000
DS=FFFF ES=0C1CSS=2200CS=0C1C IP=011C NV UP EI PL NZ NA PE NC
0C1C:011C 50 PUSH AX
-t
AX=5CCABX=6122CX=0000DX=0000SP=00FEBP=0000SI=0000DI=0000
DS=FFFF ES=0C1CSS=2200CS=0C1C IP=011D NV UP EI PL NZ NA PE NC
0C1C:011D 53 PUSH BX
-t
AX=5CCABX=6122CX=0000DX=0000SP=00FCBP=0000SI=0000DI=0000
DS=FFFFES=0C1CSS=2200CS=0C1CIP=011E NV UP EI PL NZ NA PE NC
0C1C:011E 58 POP AX
push ax ;sp= 00FEH ,修改的内存单元地址是 2200:00FE 内容为 5CCAH
push bx ;sp= 00FCH ,修改的内存单元地址是 2200:00FC 内容为 6122H
你说的是上面的这两个push么,但是这两个push的sp都是在push执行完之后的sp啊,而pop的sp却是执行前的sp,这就很不理解了。 好,来个简单点的:
AX=5CCABX=6122CX=0000DX=0000SP=00FCBP=0000SI=0000DI=0000
DS=FFFF ES=0C1CSS=2200 CS=0C1CIP=011E NV UP EI PL NZ NA PE NC
0C1C:011E 58 POP AX
-t
AX=6122BX=6122CX=0000DX=0000SP=00FEBP=0000SI=0000DI=0000
DS=FFFF ES=0C1CSS=2200CS=0C1C IP=011F NV UP EI PL NZ NA PE NC
0C1C:011F 5B POP BX
中间这个-t执行的是那个指令,是pop AX还是pop BX,搞明白这个你就都明白了
oggplay 发表于 2014-2-19 15:58 static/image/common/back.gif
好,来个简单点的:
AX=5CCABX=6122CX=0000DX=0000SP=00FCBP=0000SI=0000DI=0000
这个执行的应该是pop ax吧,将内存 2200:00FC 中的值放入寄存器ax中,执行完之后SP的值加2,变成00FE,也就是说,pop ax执行完之后,SP的值应该是00FE ioio_jy 发表于 2014-2-19 16:15 static/image/common/back.gif
这个执行的应该是pop ax吧,将内存 2200:00FC 中的值放入寄存器ax中,执行完之后SP的值加2,变成00FE,也 ...
对啊,恭喜你都会抢答了 上面的第一个t就是执行pop ax这条指令,所以执行之后sp
sp+2,即00FE=00FC+2。
t指令就是执行上一条指令。 很好,还是没明白
{:10_269:}
页:
[1]