检测点10.4的sp的问题
本帖最后由 Yara 于 2012-4-24 20:23 编辑程序执行后,ax的值是多少?
内存地址 机器码 汇编指令
1000:0 b8 06 00 mov ax,6
1000:2 ff d0 call ax
1000 :5 40 inc ax
1000 :6 mov bp,sp
add ax,
当执行到 mov bp,sp 时,此时sp等于多少?我觉得此时sp不是等于5,因为call ax时,只是把(sp)推进栈里,而没有把sp推进栈里,那么到了mov bp,sp这一部时,bp就不应该等于5啊,而应该等于sp表示的偏移地址啊,求解啊!!! 1000:0 b8 06 00 mov ax,6
1000:2 ff d0 call ax 这里把IP=5入栈,修改IP为6
1000 :5 40 inc ax
1000 :6 mov bp,sp sp指向栈顶,栈顶为内容为5。【BP】就是栈顶内容了
add ax,
6+5 没有大大知道吗:'( sp的值是无法得到的。这题结果也与sp的值无关。 hxs554f 发表于 2012-4-24 16:19 static/image/common/back.gif
sp的值是无法得到的。这题结果也与sp的值无关。
那么mov bp,sp的意思就是把sp的偏移地址给bp啊,而题目又没有说mov ax,ss mov ds,ax这样的,那怎么可以得到sp所指向的对应5h的偏移地址啊{:5_100:} 我突然明白了:Q,原来bp默认的段寄存器是SS,我忘了。。。 非常有用,谢谢了 帮楼主顶一下,顺便赚点鱼币{:5_107:}
页:
[1]