鱼C论坛

 找回密码
 立即注册
查看: 2542|回复: 3

汇编中CALL的地址和机器码那地址为什么不是一样的?

[复制链接]
发表于 2012-5-15 18:08:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我记得小甲鱼说过是什么位移算的.具体是怎样的忘记了。

  谁能帮帮我
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-5-16 20:54:27 | 显示全部楼层
call命令下   只有  call 标号
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-5-16 21:00:35 | 显示全部楼层
call命令下 只有  call 标号 即:
call s  是依据位移进行转移的call指令
因为calls  == push IP       jmp near ptr s   
即将IP压入堆栈中,然后是一个近转移 ,也就是说只有这一个call命令
其他的例如call  ax
相当于   push IP    jmp   16 位reg   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-5-16 21:12:24 | 显示全部楼层
刚刚理解错你的意思了,重新解答:
你上面题目里所说的call中的地址是 要跳往(jmp)地址的ip或者 cs:ip
而你上面题目里的机器码有两种可能;
第一:如果是近转移或者短转移,则这个机器码是标号地址与call指令后第一个字节地址之差。
第二:如果是段间转移,例如  call far ptr s  ,call ax  , call    word   ptr   ds:【bx】 则你题目里所说的机器码和你题目里所说的地址是相同的。


希望能帮到你,写的有点乱,希望你自己调试一下。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-1 00:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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