请教一个JMP指令跳转地址的问题

IT回忆录 2016-11-18 09:35:51
一、
8048516: E8 29 FF FF FF
下一条指令地址是804851BH,而FFFFFF29H表示-D7H
804851BH-D7H=8048444H
二、
804837B: E9 B0 FF FF FF
下一条指令地址是8048380H,而FFFFFFB0H表示-50H
8048380H-50H=8048330H




8048516 e8 29 ff ff ff call 8048444

804837b e9 b0 ff ff ff jmp 8048330

这里的跳转地址是这样计算出来的
一、
8048516: E8 29 FF FF FF
下一条指令地址是804851BH,而FFFFFF29H表示-D7H
804851BH-D7H=8048444H
二、
804837B: E9 B0 FF FF FF
下一条指令地址是8048380H,而FFFFFFB0H表示-50H
8048380H-50H=8048330H

我不明白的是为什么FFFFFF29H 表示 -D7H
FFFFFFB0H表示-50H
...全文
644 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
IT回忆录 2016-11-19
  • 打赏
  • 举报
回复
哦,懂了,谢谢哈
zara 2016-11-18
  • 打赏
  • 举报
回复
符号数啊,最高位 0=正数 1=负数;这个数,最高位不是 1 嘛,就是个负数了,其余的按照负数补码表示规则,就是这个结果了。
IT回忆录 2016-11-18
  • 打赏
  • 举报
回复
FFFFFF29H 这是数字的补码就是本身吧怎么变成了-D7H呢
zara 2016-11-18
  • 打赏
  • 举报
回复
计算机数据表示啊,补码形式,符号数,就是这个样子了。
其实,不是这么算的吧,没有必要把负偏移计算出了绝对值,再减去它得到目的地址的;当前 IP 直接和偏移相加,结果就是目的地址了。这也是设计补码这一表示形式的初衷和其优点吧。

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧