gaopanhao 发表于 2015-7-14 21:14:33

检测点10.4

本帖最后由 gaopanhao 于 2015-7-14 21:17 编辑

下面的程序执行后,ax中的数值为多少?

内存地址   机器码      汇编指令          执行后情况

1000:0   b8 06 00      mov ax,6          ax=6,ip指向1000:3

1000:3   ff d0         call ax                  pop ip,ip指向1000:6

1000:5   40            inc ax

1000:6   58            mov bp,sp            bp=sp=fffeh

                              add ax,             ax==6+5=0bh



为什么这个call一下IP变成6而fffeh里面的内容却是5呢

fast 发表于 2015-7-15 00:32:47

多看几遍视频,要理解题意。

Ъγ:_小ツ雨oο 发表于 2015-7-15 07:30:04

call 执行时 把下一句的ip压入栈中。,入栈后自然是栈顶了 ,

864195847@aa.co 发表于 2015-7-15 19:56:11

那得多看看

爱你一辈子 发表于 2015-7-15 22:29:38

查看全部内容

人生一撇 发表于 2016-7-22 16:59:55

应该是这样的吧

内存地址   机器码      汇编指令          执行后情况

1000:0   b8 06 00      mov ax,6         ; ax=6,ip指向1000:3

1000:3   ff d0         call ax                ; 此时cs:ip=1000:5, push ip, 栈ss:sp中的内容为5,ip= ax,跳转。

1000:5   40            inc ax

1000:6   58            mov bp,sp          ;bp=sp=fffeh   bp 是栈的

                              add ax,         ;ax=6+(ss:(fffeh))=6+5=0bh
页: [1]
查看完整版本: 检测点10.4