社区
汇编语言
帖子详情
jmp指令的疑惑?
boywang
2003-07-26 01:34:16
77DFE021 EB21 jmp 77DFE044
77DFE855 E99F000000 jmp 77DFE8F9
以上是我用w32Dasm反汇编的代码,为什么同样的jmp指令反汇编成机器码时会有不同的结果呀?
...全文
177
4
打赏
收藏
jmp指令的疑惑?
77DFE021 EB21 jmp 77DFE044 77DFE855 E99F000000 jmp 77DFE8F9 以上是我用w32Dasm反汇编的代码,为什么同样的jmp指令反汇编成机器码时会有不同的结果呀?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xinxinyu2000
2003-07-26
打赏
举报
回复
构造jmp near指令
指令格式:
db 0e9h;(jmp near指令机器码)
dw RelativeOffset(相对偏移量)
所以构造jmp near指令的关键在于计算RelativeOffset
用两个等例子来说明问题:
JmpAddr : jmp Exit JmpAddr: db 0e9
... dw offset Exit-offset JmpAddr+3
... ...
Exit:
nop Exit: nop
RelativeOffset=jmp指令的后一条指令地址 减去 你要跳转的位置地址
而jmp指令的后一条指令地址=offset JmpAddr+3(3是本jmp指令长度)
对于Win32的32位jmp near来说,jmp指令机器玛不变,而长度则为5
因为32位的jmp near的RelativeOffset是32位的(它跳转的相对空间是:-2^31~2^31-1)
xinxinyu2000
2003-07-26
打赏
举报
回复
E9 是段内相对转移指令, 后面跟的是个相对当前指令的下一条指令的地址的偏移量, 不是目标地址的绝对值. 即转移去的目的地址是该指令中的偏移值再加上本转移指令的下一条指令的地址, 也就是说, 如果要 JMP 00481F3C, 这条指令在不同的地方是不同的. 比如:
00401000 E9370F0800 JMP 00481F3C
00401005 ...
因为在win32下e9指令占5个字节, 所以偏移量=目的地址-(转移指令地址+5)=00481f3c-(00401000+5)=00080f37, 输入时LSB在前,MSB在后就是了.
Areslee
2003-07-26
打赏
举报
回复
JMP分远、近跳转,又有直接间接之分,当然不同啊
karach
2003-07-26
打赏
举报
回复
机器不同吧
“
指令
系统”学习提纲
指令
系统的组成 组件由大到小(大包含小)依次为:
指令
集
指令
操作码+地址码 二进制代码
指令
的格式 零地址
指令
一地址
指令
二地址
指令
三地址
指令
四地址
指令
或: 定长操作码
指令
扩展操作码
指令
指令
的...
深入计算机组成原理(十九)建立数据通路(下):
指令
+运算=CPU
上一讲,我们讲解了时钟信号是怎么实现...然后,我们还需要一个能够帮我们在内存里面寻找指定数据地址的译码器,以及解析读取到的机器
指令
的译码器。这样,我们就能把所有学习到的硬件组件串联起来,变成一个CPU,实...
汇编 —— 控制
指令
文章目录跳转
指令
直接跳转
指令
有条件跳转 if-else跳转
指令
练习题练习题 答案条件
指令
条件码条件码的设置条件码访问条件码 练习题练习题答案条件控制
指令
条件控制
指令
练习题练习题答案条件传送
指令
CPU流水线 ...
微型计算机的
指令
执行过程,【微机原理】-
指令
系统与程序设计
数据传送
指令
1.基本传送
指令
MOV
指令
是形式最简单、用得最多的
指令
,它可以实现CPU内部数据之间的数据传送、寄存器和内存之间的数据传送,还可以把一个立即数送给CPU的寄存器或者内存单元。(1)目的操作数不允许为立即...
汇编器
指令
及命名规则(1)
第二个字节是一个带符号数的偏移量,当执行完
JMP
指令
后,IP将会加上该偏移量并指向下一条
指令
。这个偏移量可以在-128~+127的范围内变动。负数表示向后
JMP
,正数表示向前
JMP
。所谓3字节格式就是第一个字节是操作码;...
汇编语言
21,459
社区成员
41,602
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章