社区
汇编语言
帖子详情
jmp指令的疑惑?
boywang
2003-07-26 01:34:16
77DFE021 EB21 jmp 77DFE044
77DFE855 E99F000000 jmp 77DFE8F9
以上是我用w32Dasm反汇编的代码,为什么同样的jmp指令反汇编成机器码时会有不同的结果呀?
...全文
242
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
打赏
举报
回复
机器不同吧
王爽 汇编语言 检测点3.1 已验证
博主在学习汇编过程中遇到检测点3.1,对网上找到的不同答案产生
疑惑
。通过实际在DOS系统中运行验证,确认了自己的解答正确。文中详细解释了
jmp
指令
执行后CS和IP的变化,并指出常见错误理解,同时分享了完整的运行过程。
王爽 汇编语言程序设计 检测点9.1 第2题
本文探讨了一段使用
JMP
指令
返回程序起始位置的代码,作者对其中一行代码的作用提出疑问,通过分析发现该行代码对于程序正确运行并非必要,引发了对
JMP
指令
及其在程序中定位功能的深入讨论。
C语言中如何实现同一项目中的快速跳转——goto语句与
jmp
语句的使用
本文探讨了C语言中goto和
jmp
语句的使用,包括它们在快速跳转上的相似性和不同点。goto仅限于在同一函数内的跳转,而
jmp
语句(通过long
jmp
)可以实现跨函数甚至跨源文件的跳转。然而,由于可能导致的逻辑混乱和调试困难,不推荐频繁使用这两种语句。文章中还提出了关于extern声明和long
jmp
使用时遇到的问题,引发对这两点的讨论。
跳转
指令
之目标地址的
疑惑
!
本文探讨了在汇编语言中使用call和
jmp
指令
时,目标地址如何被编译为相对于当前
指令
位置的偏移量,而不是绝对地址。这种做法有助于减少
指令
的长度。
汇编之控制转移
指令
本文深入探讨了汇编语言中的各种控制转移
指令
,包括无条件转移
指令
与条件转移
指令
的详细解析。不仅介绍了不同类型的转移
指令
及其应用场景,还通过实例讲解了如何正确使用这些
指令
。
汇编语言
21,499
社区成员
41,617
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章