鱼C论坛

 找回密码
 立即注册
查看: 8300|回复: 19

jmp short 标号的计算

[复制链接]
发表于 2013-11-18 20:46:17 | 显示全部楼层 |阅读模式
40鱼币
QQ截图20131118201841.png QQ截图20131118195317.png 223.png 以实验8中jmp short s指令为例,jmp short s 指令的功能:ip=ip+8位位移。8位位移等=标号处的地址(8)-jmp指令后的第一个字节(18)然后加上ip的值(16),可是我算的值不等于0008啊?哪的问题

最佳答案

查看完整内容

我怎么感觉这么简单的问题,被你复杂化了呢,刚刚看了你u命令反汇编后的机器码是E8F6,也就代表向上跳转了8个字节,那么这句指令写到s处,也是E8F6,那么仍然是向上跳转了8个字节,而mov ax,4c00h int 21h正好是8个字节,那么不就跳转到那里了么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-11-18 20:46:18 | 显示全部楼层

我怎么感觉这么简单的问题,被你复杂化了呢,刚刚看了你u命令反汇编后的机器码是E8F6,也就代表向上跳转了8个字节,那么这句指令写到s处,也是E8F6,那么仍然是向上跳转了8个字节,而mov ax,4c00h int 21h正好是8个字节,那么不就跳转到那里了么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-11-18 22:31:43 | 显示全部楼层
快快快看看,清冽支持、
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-11-19 08:20:10 | 显示全部楼层
本帖最后由 my_angel 于 2013-11-19 08:28 编辑

是jmp指令的下一条指令地址0022减去目的地址0018,结果为F6(补码表示),。刚好为8。。王爽的那本书说得很清楚的

评分

参与人数 1鱼币 +2 收起 理由
s0512 + 2 热爱鱼C^_^

查看全部评分

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

使用道具 举报

发表于 2013-11-19 10:21:49 | 显示全部楼层
以JMP short s为例
目标标号便宜地址0008  , JMP下一条指令便宜地址0018  。注意,0008 0018都是十六进制数,差为-10H表示成补码为F0H.    所以机器码EBF0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-11-19 13:38:49 | 显示全部楼层
加油,顶你哦。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-11-19 14:15:05 | 显示全部楼层
s标号所在的偏移地址是0008

当前jmp  short s 的偏移地址是0016

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

使用道具 举报

发表于 2013-11-19 21:02:21 | 显示全部楼层
当初我也被这个问题难住了,不得不说,这个程序好卑鄙,你看那个其实是往上跳转的偏移,机器码是E8 xx然后把 E8 XX这个机器码写入s处,这样执行到s后,会短跳转 跳转到mov ax,4c00h int21h  然后程序结束
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-11-19 21:21:22 | 显示全部楼层
vitamin 发表于 2013-11-19 10:21
以JMP short s为例
目标标号便宜地址0008  , JMP下一条指令便宜地址0018  。注意,0008 0018都是十六进制 ...

jmp short标号的功能:(ip)=(ip)加8位位移,8位位移我们求出来了是F0H,在加上ip的值18H(cpu执行指令的过程1从cs:ip指向内存单元读取指令,读取的指令进入指令缓冲器;2ip=ip加所读取指令的长度,从而指向下一条指令;3执行指令,转到1,重复这个过程。)最后偏移地址是8,对吧?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-11-19 22:32:18 | 显示全部楼层
1236 发表于 2013-11-19 21:02
当初我也被这个问题难住了,不得不说,这个程序好卑鄙,你看那个其实是往上跳转的偏移,机器码是E8 xx然后把 ...

我还是不理解,也就是说jmp short s1 把他的位置改变的话,它还是继续向上跳转?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-11-19 22:42:29 | 显示全部楼层
萌辉 发表于 2013-11-19 22:32
我还是不理解,也就是说jmp short s1 把他的位置改变的话,它还是继续向上跳转?

你要知道,短跳转(-128-127)这个范围内  都是跳转的偏移,可以往上跳转,也可以往下跳转, 比如 你刚刚的jmp short s1  就是往上跳转的  ,那么他的机器码就是E8 -2(打个比方往上跳转的偏移是两个字节 其实应该是补码),那么把E8 -2写入到s地址处,当执行s处的内容时,就是往上跳转两个字节 也就是跳转到了 mov ax,4c00h int 21h那里 这下懂了吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-11-19 22:46:24 | 显示全部楼层
1236 发表于 2013-11-19 22:42
你要知道,短跳转(-128-127)这个范围内  都是跳转的偏移,可以往上跳转,也可以往下跳转, 比如 你刚刚 ...

实验8中jmp short s1这条指令是要cpu跳转到s1处执行,实际上这个指令不含跳转地址而是根据8位位移来改变ip的,改变的距离是s2减s1就是F6就是-10,负数向上跳转。我的问题是把这条指令位置改变它还是向上跳转,跳转的距离还是F6?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-11-20 10:40:46 | 显示全部楼层
萌辉 发表于 2013-11-19 21:21
jmp short标号的功能:(ip)=(ip)加8位位移,8位位移我们求出来了是F0H,在加上ip的值18H(cpu执行指令 ...

8位位移是编译器算出来的。读取指令的同时,IP自增,然后cpu根据当前IP值和位移共同算出目标地址。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-11-20 13:05:50 | 显示全部楼层
师兄 或者师姐 接你的平台用一下  谢谢  di =8 ,  si=20  他们是怎么来的呢 :lol:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-11-20 19:10:48 | 显示全部楼层
1236 发表于 2013-11-20 11:02
我怎么感觉这么简单的问题,被你复杂化了呢,刚刚看了你u命令反汇编后的机器码是E8F6,也就代表向上跳转了 ...

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

使用道具 举报

 楼主| 发表于 2013-11-20 19:11:53 | 显示全部楼层
7ghost 发表于 2013-11-20 13:05
师兄 或者师姐 接你的平台用一下  谢谢  di =8 ,  si=20  他们是怎么来的呢

分别是标号s和s2的偏移地址
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-11-20 19:21:45 | 显示全部楼层
vitamin 发表于 2013-11-20 10:40
8位位移是编译器算出来的。读取指令的同时,IP自增,然后cpu根据当前IP值和位移共同算出目标地址。

可明白了,谢谢帮我回答
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-11-20 21:00:33 | 显示全部楼层
thanks !! :lol:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-11-20 21:27:39 | 显示全部楼层
萌辉 发表于 2013-11-20 19:10
谢谢,明白了

恩,加油,32位汇编后,直接进军反汇编,相信你会成功的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-11-20 22:42:33 | 显示全部楼层
1236 发表于 2013-11-20 21:27
恩,加油,32位汇编后,直接进军反汇编,相信你会成功的

其实我学习汇编是为了玩单片机的:big
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-7 12:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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