好的,所以我需要挂钩一个程序,但要做到这一点,我将复制指令E8 <Pointer to Byte Array that contains other code>
。这样做的问题是,当我汇编时Call 0x100
,E8 FD
我们知道 E8 是调用指令,所以 FD 必须是目的地,那么汇编器如何将目的地从 0x100 带到 FD 中?谢谢,布拉德利-Imcept
问问题
544 次
2 回答
3
有过多的跳转/调用操作码,其中一些是相对的。我会说你实际上没有E8 FD
但是E8 FD FF
。E8
似乎是“调用 16 位相对”,0x100
是默认放置指令的地方。
所以你把call 0x100
地址放在0x100,生成的代码是“执行跳转指令,从实际指令指针跳转-3”。-3
这是因为移位是从读取指令后E8 FD FF
的位置计算的,在这种情况下为 0x103。这就是为什么移位 if FD FF
, big-endian for 0xfffd
,即 16-bit -3
。
于 2012-01-01T19:08:45.393 回答
0
http://wwwcsif.cs.ucdavis.edu/~davis/50/8086 Opcodes.htm
E8 是 16 位相对调用。因此,例如E8 00 10
意味着调用 PC+0x1000 处的地址。
于 2012-01-01T19:09:01.540 回答