有关反汇编jmp指令的问题.

a294447011294447011 2008-09-21 08:19:07
我是这样理解jmp指令后面的4字节数据的:
反汇编jmp指令后面的4字节数据是:将要跳转的地址与cs:ip的偏移量加上5
不过这好象是断跳转,不是长跳转.
那里有有关的资料可以看看?也就是机器码与汇编指令的转换资料?
...全文
765 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanghongyy 2010-11-08
  • 打赏
  • 举报
回复
如果是一个长跳转呢?偏移地址用4个位置存不下 楼主的5岂不是悲剧了
wangzejing20 2008-09-26
  • 打赏
  • 举报
回复
我看的是INTEL汇编语言程序设计(第四版),在65页,3.4.9节中讲的小尾顺序。
  • 打赏
  • 举报
回复
哪本书有这方面介绍啊?
jvphxys 2008-09-26
  • 打赏
  • 举报
回复
顶一个!
  • 打赏
  • 举报
回复
哪本书有这方面介绍啊?
  • 打赏
  • 举报
回复
如果哪本书有这方面介绍,我定去买!
xtdumpling 2008-09-22
  • 打赏
  • 举报
回复

1382:0106 EA10008213 JMP 1382:0010;长跳转/段间跳转


x86的CPU系统里面存储是:字的低字节存放在低地址,高字节存放在高地址,叫小端存储(Little Endian).
上面EA后面的10008213 ==> 10 00 82 13 ==> 1382:0010
wangzejing20 2008-09-22
  • 打赏
  • 举报
回复
那是小尾顺序。INTEL的CPU。
DWORD和WORD要颠倒,BYTE就没法颠倒了。
  • 打赏
  • 举报
回复
jmp后面的4字节数据好象是按:1对4,2对3的顺序存储的!也就是说:vc里的int数据存储到jmp后面的4字节内,就按高位对低位,低位对高位的存储进去的!
不知道我这样理解是否正确?
xtdumpling 2008-09-22
  • 打赏
  • 举报
回复
指令执行的时候的IP是下一条指令的地址,所以有了LZ说的加"5"(5应该是当前指令的长度)

debug下的试验:


-a 100
1382:0100 jmp 10
1382:0103 jmp short 10
1382:0106 jmp far 10
1382:010B jmp 100 ;jmp far 指令长度:5
1382:010D
-u 1382:100
1382:0100 E90DFF JMP 0010 ;段内跳转
1382:0103 E90AFF JMP 0010 ;段内短跳转
1382:0106 EA10008213 JMP 1382:0010;长跳转/段间跳转
1382:010B EBF3 JMP 0100 ;段内长跳转


FYI.
YNCMCHY 2008-09-21
  • 打赏
  • 举报
回复
学学。帮顶。
RainbowMink 2008-09-21
  • 打赏
  • 举报
回复
你这问题我说点我个人理解, 我很菜..
1.实模式下 masm不支持长跳转.
2.你看杨季文书里demo,用masm写的跳入保护模式的代码,

jump macro selector,offsetv
db 0eah
dw offsetv
dw selector
endm

他直接用机器码跳了.
3.保护模式下应该是不存在长跳转短跳转的.因为直接就可以寻址的到, 不存在跨段的问题.
==========
我很菜..但是希望对你有帮助,
  • 打赏
  • 举报
回复
RainbowMink我谢谢你的热心帮助!
opcodes.rar 这个机器码和汇编指令的对照表我有了!我想要比较具体一些的说明.给一些有关的书籍也好.
RainbowMink 2008-09-21
  • 打赏
  • 举报
回复
我这有个机器码和汇编指令的对照表. 我找下地址给你.
在这呢.

http://www.aogosoft.com/download/opcodes.rar
自己下吧 直接用迅雷下.

21,497

社区成员

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

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