鱼C论坛

 找回密码
 立即注册
查看: 3785|回复: 8

[汇编作业] 对于王爽老师实验2(1)的疑问

[复制链接]
发表于 2014-2-19 14:02:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 ioio_jy 于 2014-2-19 14:11 编辑

pop ax        ;sp= 00FCH ,ax= 6122H
pop bx        ;sp= 00FEH ,bx= 5CCAH

AX=5CCA  BX=6122  CX=0000  DX=0000  SP=00FC  BP=0000  SI=0000  DI=0000
DS=FFFF    ES=0C1C  SS=2200   CS=0C1C  IP=011E   NV UP EI PL NZ NA PE NC
0C1C:011E 58            POP     AX
-t
AX=6122  BX=6122  CX=0000  DX=0000  SP=00FE  BP=0000  SI=0000  DI=0000
DS=FFFF   ES=0C1C  SS=2200  CS=0C1C   IP=011F   NV UP EI PL NZ NA PE NC
0C1C:011F 5B            POP     BX
-t
AX=6122  BX=5CCA  CX=0000  DX=0000  SP=0100  BP=0000  SI=0000  DI=0000
DS=FFFF   ES=0C1C   SS=2200   CS=0C1C  IP=0120   NV UP EI PL NZ NA PE NC
0C1C:0120 FF360400      PUSH    [0004]                             DS:0004=31F0

在执行完pop ax之后,sp为什么不是00FE而是00FC?
同样的,执行完pop bx之后sp为什么不是0100而是00FE?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-19 15:43:15 | 显示全部楼层
你看到你的push了么,为什么不是00FE 而是 0100?因为-t是显示下一步执行的指令并执行当前的指令,而不是执行下一步。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-19 15:51:15 | 显示全部楼层

AX=5CCA  BX=6122  CX=0000  DX=0000  SP=0100  BP=0000  SI=0000  DI=0000
DS=FFFF    ES=0C1C  SS=2200  CS=0C1C   IP=011C   NV UP EI PL NZ NA PE NC
0C1C:011C 50            PUSH    AX
-t
AX=5CCA  BX=6122  CX=0000  DX=0000  SP=00FE  BP=0000  SI=0000  DI=0000
DS=FFFF    ES=0C1C  SS=2200  CS=0C1C   IP=011D   NV UP EI PL NZ NA PE NC
0C1C:011D 53            PUSH    BX
-t
AX=5CCA  BX=6122  CX=0000  DX=0000  SP=00FC  BP=0000  SI=0000  DI=0000
DS=FFFF  ES=0C1C  SS=2200  CS=0C1C  IP=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,这就很不理解了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-2-19 15:58:41 | 显示全部楼层
好,来个简单点的:

AX=5CCA  BX=6122  CX=0000  DX=0000  SP=00FC  BP=0000  SI=0000  DI=0000
DS=FFFF    ES=0C1C  SS=2200   CS=0C1C  IP=011E   NV UP EI PL NZ NA PE NC
0C1C:011E 58            POP     AX
-t
AX=6122  BX=6122  CX=0000  DX=0000  SP=00FE  BP=0000  SI=0000  DI=0000
DS=FFFF   ES=0C1C  SS=2200  CS=0C1C   IP=011F   NV UP EI PL NZ NA PE NC
0C1C:011F 5B            POP     BX


中间这个-t执行的是那个指令,是pop AX还是pop BX,搞明白这个你就都明白了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-19 16:15:28 | 显示全部楼层
oggplay 发表于 2014-2-19 15:58
好,来个简单点的:

AX=5CCA  BX=6122  CX=0000  DX=0000  SP=00FC  BP=0000  SI=0000  DI=0000

这个执行的应该是pop ax吧,将内存 2200:00FC 中的值放入寄存器ax中,执行完之后SP的值加2,变成00FE,也就是说,pop ax执行完之后,SP的值应该是00FE
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-2-19 16:23:47 | 显示全部楼层
ioio_jy 发表于 2014-2-19 16:15
这个执行的应该是pop ax吧,将内存 2200:00FC 中的值放入寄存器ax中,执行完之后SP的值加2,变成00FE,也 ...

对啊,恭喜你都会抢答了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-2-19 18:14:23 | 显示全部楼层
上面的第一个t就是执行pop ax这条指令,所以执行之后sp
sp+2,即00FE=00FC+2。
t指令就是执行上一条指令。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-13 15:18:23 | 显示全部楼层
很好,还是没明白
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-13 15:18:56 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-25 01:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表