call far ptr问题
本帖最后由 Push 于 2012-1-25 22:42 编辑为什么ax会是1010?不是1006??求详细解答
难道call far ptr不是执行了push cs,push ip,jmp far ptr???
那如果这么指行的话call far ptr s的cs:1000,ip:3
把cs先扔进栈,后扔ip,那么到了s:pop ax这个时候应该是ip先出来,所以ax=3,接着执行add ax,ax=6接着pop bx,现在
bx=1000,然后执行add ax,bx那么不就是ax=1006???????
求大神解答...在线等答案
内存地址 机器码 汇编指令
1000:0 b8 00 00 mov ax,0
1000:3 9a 09 00 00 10 call far ptr s
1000:8 40 inc ax
1000:9 58 s:pop ax
add ax,ax
pop bx
add ax,bx
本帖最后由 rainymay 于 2012-1-27 04:20 编辑
因为执行指令先要读入到指令缓冲区中,读进去以后IP已经指向下一条指令了。所以为8,add ax,ax 就是10H了
楼上正解,入栈IP=8.不是3,IP指的是CALL完后的下一条指令。还有这个帖子貌似和以前的一个一样 楼上正解:loveliness: 谢谢了 学习 学习啦哈哈哈
页:
[1]