ioio_jy 发表于 2014-2-19 14:02:17

对于王爽老师实验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?

oggplay 发表于 2014-2-19 15:43:15

你看到你的push了么,为什么不是00FE 而是 0100?因为-t是显示下一步执行的指令并执行当前的指令,而不是执行下一步。

ioio_jy 发表于 2014-2-19 15:51:15

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,这就很不理解了。

oggplay 发表于 2014-2-19 15:58:41

好,来个简单点的:

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,搞明白这个你就都明白了

ioio_jy 发表于 2014-2-19 16:15:28

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

oggplay 发表于 2014-2-19 16:23:47

ioio_jy 发表于 2014-2-19 16:15 static/image/common/back.gif
这个执行的应该是pop ax吧,将内存 2200:00FC 中的值放入寄存器ax中,执行完之后SP的值加2,变成00FE,也 ...

对啊,恭喜你都会抢答了

HB无影 发表于 2014-2-19 18:14:23

上面的第一个t就是执行pop ax这条指令,所以执行之后sp
sp+2,即00FE=00FC+2。
t指令就是执行上一条指令。

新免武藏 发表于 2017-6-13 15:18:23

很好,还是没明白

新免武藏 发表于 2017-6-13 15:18:56

{:10_269:}
页: [1]
查看完整版本: 对于王爽老师实验2(1)的疑问