首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >机器代码跳转目标计算

问机器代码跳转目标计算
EN

Stack Overflow用户
提问于 2012-01-02 02:33:19
回答 2查看 534关注 0票数 0

好的,我需要挂接一个程序,但是为了实现这一点,我要复制指令E8 <Pointer to Byte Array that contains other code>。这样做的问题是,当我汇编Call 0x100时,我得到了E8 FD,我们知道E8是call指令,所以FD必须是目的地,那么汇编程序如何将目的地从0x100转移到FD?谢谢,Bradley - Imcept

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-02 03:09:02

http://wwwcsif.cs.ucdavis.edu/~davis/50/8086 Opcodes.htm

E8是一个16位的相对调用。例如,E8 00 10的意思是在PC+0x1000调用地址。

票数 0
EN

Stack Overflow用户

发布于 2012-01-02 03:08:45

有太多的跳转/调用操作码,其中一些是相对的。我会说,实际上你得到的不是E8 FD,而是E8 FD FF。E8似乎是“调用16位相对的”,而0x100是默认放置指令的地方。

因此,您将call 0x100放在地址0x100处,生成的代码是“执行跳转指令,并从实际指令指针跳转-3”。-3是因为从读取指令后的位置开始计算移位,在E8 FD FF的情况下,移位是0x103。这就是为什么转换为FD FF,0xfffd的大端,这是16位-3。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8694728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档