鱼C论坛

 找回密码
 立即注册
查看: 5583|回复: 7

对于jmp什么短转移,近转移,远转移,8位,16位,32位转移神马的云里雾里,求大神指点

[复制链接]
发表于 2013-12-3 12:15:46 | 显示全部楼层 |阅读模式
2鱼币
如题!!!!

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-12-3 12:36:45 | 显示全部楼层
我还没学到那里,你可以去问度娘啊!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-12-3 14:54:32 | 显示全部楼层
简单的说就是:

短转移=8位转移
近转移=16位转移
远转移=32位转移

你用debug测试下就明白了
当ip为100时
 hex码              汇编码
 EB05      jmp 105
 E9FBEE     jmp F000
 EA00020010  jmp 1000:200

短转移和近转移都是在同一个段之内转移,而远转移是跨段转移的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-12-3 16:56:32 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-12-3 17:17:46 | 显示全部楼层
短跳转 是两个字节,一个E8操作码,一个跳转的位移,因为一个字节大小是FF   而跳转是有符号,可以向上面跳转,也可以向下面跳转,所以短跳转范围是-128-127  近跳转是在一个段内范围大小,因为基址一定的情况下,偏移大小只能是FFFF 也就是64K,所以近跳转范围是-32K-32k   远跳转就是64K之外了,也就是65536个字节之外
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-12-3 19:35:47 | 显示全部楼层
要没时间了 发表于 2013-12-3 16:56
那8位16位32位神马的有什么区别?

这只是二进制表示的范围
8位最大8个1
16位最大16个1
32位最大32个1

别说你连二进制是什么都不知道,那我真的……Orz
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-12-4 18:49:41 | 显示全部楼层
到底什么是短转移 什么是近转移 有什么含义呢?


JMP指令是从程序当前执行的地方无条件转移到另一个地方执行。这种转移可以是一个短(short)转移(偏移量在[-128, 127]范围内),近(near)转移(偏移量在[-32K, 32K]范围内)或远(far)转移(在不同的代码段之间转移)。

短和近转移是段内转移,JMP指令只把目标指令位置的偏移量赋值指令指针寄存器IP,从而实现转移功能。但远转移是段间转移,JMP指令不仅会改变指令指针寄存器IP的值,而且还会改变代码段寄存器CS的值。

该转移指令的执行不影响任何标志位。

例如:


next1: …
JMP next1 ;向前转移,偏移量之差为负数

JMP next2 ;向后转移,偏移量之差为正数

next2: …

在目前流行的汇编系统中,当段内转移时,有些软件把该转移指令默认为近转移,从而使指令的偏移量用一个字来表示,于是生成3个字节的指令代码,但如果程序员自己清楚转移的幅度在一个短转移的范围之内,那么,可用前置short的办法来告诉汇编程序,让它产生2个字节的指令代码。

比如:如果程序员知道在上例中的标号next2离“JMP next2”指令的偏移量不会超过127,那么,可用下面的转移方式来省掉一个字节的指令代码。

next2: …
JMP short next2 ;生成2个字节的转移指令,从而节省一个字节


书上这么写的 也就是说 短转移可以用近转移来代替 按理说 这算是"包含"罢 只不过 这个包含是以浪费为代价的 也就是 本来可以用1字节解决的问题 非用两字节来实现 浪费

看到这你应该想到了这样一点 反正我想到了 也就是 两者的区别 或 实质 其实是用多大的空间来存放地址

假设 jmp进行偏移量跳转时的机器码是eb 那 这两者的样子大概是 eb XX  和 eb XX XX (都是16进制数 下同) XX就是偏移量 这也是为什么 两者跳转的范围不同的缘故 呵呵

看出来了么 你应该明白了、、、
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

我爱鱼C论坛 该用户已被删除
发表于 2015-2-19 21:38:28 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-6 22:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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