检测点10.4
程序如下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, ax==6+5=0bh
执行call ax 的时候不是应该把偏移地址5推入栈么?书本上不是说的,执行call 的时候,是push ip然后在jmp跳转的么?跳转的时候为什么跳转到1000:6,1000:6地址也没有AX啊?还有sp的值是不是上机查看的?fffe怎么等于5?
看了好久,终于看明白你想问什么了。
执行call后,sp里存的是当前ip的的值5,fffeh是栈顶sp的偏移地址,ds:(fffeh)指的是地址里的内容,为5.
其它不知道怎么回答了。好好看书吧~ 1、执行call ax 的时候不是应该把偏移地址5推入栈么?
是
2、书本上不是说的,执行call 的时候,是push ip然后在jmp跳转的么?
是
跳转的时候为什么跳转到1000:6,1000:6地址也没有AX啊?
call ax 相当于 push ip
jmp near ptr ax
ax存储的是跳转的偏移地址
3、还有sp的值是不是上机查看的?
这里是没有上下文的sp,当然是系统默认栈
4、fffe怎么等于5?
这里的5就是执行call ax时候push ip中IP的值啊!
页:
[1]