鱼C论坛

 找回密码
 立即注册
查看: 7458|回复: 20

汇编书讲CALL指令时说CALL不能实现短转移,随后的检测点10.2中又给了那样的程序

[复制链接]
发表于 2017-2-13 14:27:26 | 显示全部楼层 |阅读模式

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

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

x
汇编书讲CALL指令时说CALL不能实现短转移,随后的检测点10.2中又给了那样的程序,那个程序不是短转移吗?求大神普及
QQ截图20170213142605.png
QQ截图20170213142630.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-2-13 14:28:24 | 显示全部楼层
检测点程序如图,答案是6 这块理解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-13 14:33:16 | 显示全部楼层
他所说的 CALL不能实现短转移 具体该怎么去理解呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-15 09:41:27 | 显示全部楼层
快来大神帮忙解答下啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-15 15:25:56 | 显示全部楼层
有人知道吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-16 10:16:56 | 显示全部楼层
大神快来啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-16 11:57:09 | 显示全部楼层
对呀,这是近转移,不是短转移
看书175页
142704cwmu2e5itomyjme8.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-16 14:15:14 | 显示全部楼层
人造人 发表于 2017-2-16 11:57
对呀,这是近转移,不是短转移
看书175页

短转移和近转移的区别不是ip偏移范围-128到127或-32768到32767吗? 图中IP变化应该没超过-128到127之间吧,所以应该属于短转移啊。然而又为什么说call不能实现短转移呢?
QQ截图20170216140912.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-16 17:38:09 | 显示全部楼层
guohuo888meng@1 发表于 2017-2-16 14:15
短转移和近转移的区别不是ip偏移范围-128到127或-32768到32767吗? 图中IP变化应该没超过-128到127之间吧 ...

短转移,偏移使用1个字节
近转移,偏移使用2个字节

这也正是 -128~127 和 -32768~32767 的来源
近转移中包含了短转移

不是说转移的远,就是远转移
你说段间转移,远不远?
可以转移到任何一个位置(包括当前指令的下一个指令)

无标题.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-17 10:03:22 | 显示全部楼层
感谢版主这么耐心教导,看了你图中的例子更不理解了,颠覆了我以前的思维。jmp far ptr既然是段间转移,不得跨段地址吗,图中转移到的段地址和jmp指令所在的段地址属于同一段地址啊,并没有跨越。
另外 短转移和近转移的区分不是看CS:ip中的ip经过跳转之后偏移了多少吗? 偏移在-128-127之间叫短转移,偏移在-32768-32767之间就叫近转移。我一直是这样理解的,是不是从这里就错了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-17 10:12:46 | 显示全部楼层
guohuo888meng@1 发表于 2017-2-17 10:03
感谢版主这么耐心教导,看了你图中的例子更不理解了,颠覆了我以前的思维。jmp far ptr既然是段间转移,不 ...

嗯,你的确理解错了
短转移可以做到,近转移、段间转移同样可以
近转移可以做到,短转移就不一定可以(-128-127之间,短转移可以做到,超出这个范围但在-32768-32767之间近转移可以,超出-32768-32767 近转移也不行了)
段间转移可以做到  短转移可以做到的  近转移可以做到 还有他们做不到的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-17 10:13:22 | 显示全部楼层
话说回来,你理解转移指令的工作原理吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-17 11:37:37 | 显示全部楼层
人造人 发表于 2017-2-17 10:12
嗯,你的确理解错了
短转移可以做到,近转移、段间转移同样可以
近转移可以做到,短转移就不一定可以( ...

奥,那就对了,问题又回到帖子主题了。帖子主题图片中的程序代码的call s的跳转使得ip的变化超出了-128-127的范围了吗?cs:ip只是从1000:6偏移到了1000:7出,偏移了1个字节而已,应该是在-128-127范围内啊,所以也就属于短转移概念之内了。
我这样的理解是错在哪里了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-17 11:38:25 | 显示全部楼层
人造人 发表于 2017-2-17 10:13
话说回来,你理解转移指令的工作原理吗?

这个我自认为还是理解的,书上我都是一字不落的看的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-17 16:07:34 | 显示全部楼层
guohuo888meng@1 发表于 2017-2-17 11:38
这个我自认为还是理解的,书上我都是一字不落的看的

无标题.png

看图
jmp short s  在debug中是   jmp 000a
jmp near ptr s 在debug中也是 jmp 000a,但是机器指令不一样

eb08               jmp 000a            ;eb 表示短转移,偏移使用一个字节,也就是现在的 08
e90500           jmp 000a            ;e9 表示近转移,偏移使用两个字节,也就是现在的 0005(你应该可以明白为什么是0005,不是0500^_^)
ea0a00530b   jmp 0b53:000a   ;ea 表示段间转移,这里就不是偏移了^_^

ea 表示段间转移,ea后面的是ip和cs,ip 是 000a,cs 是0b53(注意nop指令的地址,是不是0b53:000a)

短转移、近转移、段间转移 指的是这个,不是看偏移量的,不是说偏移没有超过 -128-127 就永远是短转移,我完全可以使用段间转移,转移到当前指令的下一条指令(如上图),请问这还叫短转移吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-17 17:05:30 | 显示全部楼层
奥,我似乎明白了,最后一句点睛很好。短转移、近转移、段间转移 指的是用1个字节(叫短转移)或2个字节(叫近转移)表达偏移量 或是用段地址加偏移量的方式表达偏移量来区分定义的。并不是我以前认为的偏移量在-128-127之间就叫短转移,在-32768-32767之间就叫近转移。问题解决了,在此多谢版主的耐心指导!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-17 17:07:23 | 显示全部楼层
本帖最后由 guohuo888meng@1 于 2017-2-17 17:08 编辑
人造人 发表于 2017-2-17 16:07
看图
jmp short s  在debug中是   jmp 000a
jmp near ptr s 在debug中也是 jmp 000a,但是机器指令 ...


奥,我似乎明白了,最后一句点睛很好。短转移、近转移、段间转移 指的是用1个字节(叫短转移)或2个字节(叫近转移)表达偏移量 或是用段地址加偏移量的方式表达来区分定义的。并不是我以前认为的偏移量在-128-127之间就叫短转移,在-32768-32767之间就叫近转移。问题解决了,在此多谢版主的耐心指导!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-31 03:03:48 | 显示全部楼层
讲的好详细啊   认真看看大有收获
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-31 16:32:36 From FishC Mobile | 显示全部楼层
helloTOM 发表于 2017-3-31 03:03
讲的好详细啊   认真看看大有收获

是的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-2 10:56:38 | 显示全部楼层
call指令只能是短转移   不能是段转移
call指令执行的时候   push ip
ret的时候    pop ip
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 12:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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