好的,我需要挂接一个程序,但是为了实现这一点,我要复制指令E8 <Pointer to Byte Array that contains other code>。这样做的问题是,当我汇编Call 0x100时,我得到了E8 FD,我们知道E8是call指令,所以FD必须是目的地,那么汇编程序如何将目的地从0x100转移到FD?谢谢,Bradley - Imcept
发布于 2012-01-02 03:09:02
http://wwwcsif.cs.ucdavis.edu/~davis/50/8086 Opcodes.htm
E8是一个16位的相对调用。例如,E8 00 10的意思是在PC+0x1000调用地址。
发布于 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。
https://stackoverflow.com/questions/8694728
复制相似问题