鱼C论坛

 找回密码
 立即注册
查看: 5137|回复: 5

call far ptr问题

[复制链接]
发表于 2012-1-25 22:40:27 | 显示全部楼层 |阅读模式
5鱼币
本帖最后由 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???????
求大神解答...在线等答案
  1. 内存地址    机器码                         汇编指令
  2. 1000:0      b8 00 00                      mov ax,0
  3. 1000:3      9a 09 00 00 10            call far ptr s
  4. 1000:8      40                                inc ax
  5. 1000:9      58                             s:pop ax
  6.                                                      add ax,ax
  7.                                                      pop bx
  8.                                                      add ax,bx
复制代码

最佳答案

查看完整内容

因为执行指令先要读入到指令缓冲区中,读进去以后IP已经指向下一条指令了。所以为8,add ax,ax 就是10H了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-1-25 22:40:28 | 显示全部楼层
本帖最后由 rainymay 于 2012-1-27 04:20 编辑

因为执行指令先要读入到指令缓冲区中,读进去以后IP已经指向下一条指令了。所以为8,add ax,ax 就是10H了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-1-27 11:36:33 | 显示全部楼层
楼上正解,入栈IP=8.不是3,IP指的是CALL完后的下一条指令。还有这个帖子貌似和以前的一个一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-1-27 12:25:02 | 显示全部楼层
楼上正解:loveliness:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-1-27 14:15:57 | 显示全部楼层
谢谢了 学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-2-17 18:40:50 | 显示全部楼层
学习啦哈哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-26 13:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表