好的,所以我需要挂钩一个程序,但为了做到这一点,我将复制指令E8 <Pointer to Byte Array that contains other code>
。这个问题是,当我汇编Call 0x100
时,我得到E8 FD
,我们知道E8是调用指令,所以FD必须是目的地,那么汇编器如何将目的地从0x100带入FD?谢谢,Bradley - Imcept
答案 0 :(得分:3)
有大量的跳转/调用操作码,其中一些是相对的。我说你其实不是E8 FD
而是E8 FD FF
。 E8
似乎是“调用16位相对”,0x100
是默认放置指令的位置。
因此,您将call 0x100
放在地址0x100处,生成的代码为“执行跳转指令,并从实际指令指针跳转-3”。 -3
是因为移位是在读取指令之后的位置计算的,在E8 FD FF
的情况下是0x103。这就是FD FF
,0xfffd
的大端,即16位-3
的转变。
答案 1 :(得分:0)
http://wwwcsif.cs.ucdavis.edu/~davis/50/8086 Opcodes.htm
E8是16位相对呼叫。因此,例如E8 00 10
表示在PC + 0x1000处调用地址。