zkbutt 发表于 2013-7-24 00:07:01

检测点过不了了,大家帮忙解答下!检测点10.4

本帖最后由 zkbutt 于 2013-7-24 16:49 编辑

检测点10.4下面的程序执行后,ax中的数值为多少?内存地址   机器码      汇编指令       执行后情况1000:0   b8 06 00      mov ax,6       ax=6,ip指向1000:31000:3   ff d0         call ax      pop ip,ip指向1000:61000:5   40            inc ax1000:6   58            mov bp,sp      bp=sp=fffeh                         add ax,问题1:1000:3 行 执行后 答题中 POP IP是什么意思,不是应该PUSH ip吗?问题2:1000:6 行 执行后 答题中 bp=sp=fffeh   SP是哪昌出来的,值不是没有告诉我们吗,我们不是只知道SP-2吗?

az4121 发表于 2013-7-24 07:51:35

1、读取指令——>>IP自增——>>执行指令
IP = 5;pop ip & 修改ip = ax = 6
2、因为没有设置sp指令,系统默认0000h,-2 = ……

zkbutt 发表于 2013-7-24 08:07:04

az4121 发表于 2013-7-24 07:51
1、读取指令——>>IP自增——>>执行指令
IP = 5;pop ip & 修改ip = ax = 6
2、因为没有设置sp指令,系统 ...

谢谢 2我懂了 1 popip是哪来的

az4121 发表于 2013-7-24 08:20:47

有没有问号?
如果有:100多条指令中,大部分是一步执行,少数要多步执行;pop ip是call自带的执行步骤,原因是目的操作数AX为16位,如果是32位的目的操作数,就有pop cs & pop ip步骤

清风微雨 发表于 2013-7-24 08:29:46

保存返回地址

281595933 发表于 2013-7-24 09:25:03

楼主~!第1000:3行处应该是push IP,把call指令执行后的第一个字节的IP入栈(sp-2),mov bp,sp就是把栈顶指针的地址sp的值赋予bp,当使用bp做偏移地址时,段地址默认在SS中,所以add ax,=(ax)+(ss:fffeh)

SilverMagic 发表于 2013-7-24 10:26:34

9天 发表于 2013-8-13 22:10:16

SilverMagic 发表于 2013-7-24 10:26 static/image/common/back.gif
内存地址   机器码      汇编指令      执行后情况
1000:0   b8 06 00      mov ax,6       ;ax=6,i ...

谢谢你的解释,比答题好懂

氧化磷酸化 发表于 2013-9-9 10:49:27

检测点过不了了,大家帮忙解答下!检测点10.4

Joker_hb 发表于 2013-9-9 12:22:39

这个……………………

vitamin 发表于 2013-9-9 16:25:16

这个我也糊涂啊,难道答案有问题?10.2 10.3 10.4,情况相同,请高手解答啊:mad:

欠你的幸福 发表于 2013-9-11 17:55:20

我还没有学到——

飞翔工作室 发表于 2013-9-11 19:36:30

pop ip,ip指向1000:6   1000:5呢?直接跳过,inc ax这条代码不走了?

菜鸟一个a 发表于 2014-1-17 15:45:09

学习学习再学习
页: [1]
查看完整版本: 检测点过不了了,大家帮忙解答下!检测点10.4