0

好的,所以我需要挂钩一个程序,但要做到这一点,我将复制指令E8 <Pointer to Byte Array that contains other code>。这样做的问题是,当我汇编时Call 0x100E8 FD我们知道 E8 是调用指令,所以 FD 必须是目的地,那么汇编器如何将目的地从 0x100 带到 FD 中?谢谢,布拉德利-Imcept

4

2 回答 2

3

有过多的跳转/调用操作码,其中一些是相对的。我会说你实际上没有E8 FD但是E8 FD FFE8似乎是“调用 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 回答