Assembly 关于jmp和否定地址

Assembly 关于jmp和否定地址,assembly,x86,Assembly,X86,我不认为我完全理解使用jmp指令返回代码的概念 比方说,在我的代码中,以5Fh的速度 jmp 9h 这将把控制权转移到68h 5Fh+09h,对吗 不是说在5楼我真的有 jmp 0FFFFFFF6h 这将把控制权转移到56h 5Fh-09h?相对地址使用更新的EIP作为基,即下一条指令的地址。而且,0FFFFF6H是-10而不是-9。否则,就是这样。请阅读。另请参见@Andreas,在我的示例中,我应该将10分包出去,我希望它是9,从61h下滑?jmp的5Fh+5h?我假设这也适用于循环。您

我不认为我完全理解使用jmp指令返回代码的概念

比方说,在我的代码中,以5Fh的速度

jmp 9h
这将把控制权转移到68h 5Fh+09h,对吗

不是说在5楼我真的有

jmp 0FFFFFFF6h

这将把控制权转移到56h 5Fh-09h?

相对地址使用更新的EIP作为基,即下一条指令的地址。而且,0FFFFF6H是-10而不是-9。否则,就是这样。请阅读。另请参见@Andreas,在我的示例中,我应该将10分包出去,我希望它是9,从61h下滑?jmp的5Fh+5h?我假设这也适用于循环。您可以使用十六进制编辑器和反汇编程序来测试类似的东西。例如,使用十六进制编辑器创建一个包含字节E9 09 00 00的文件,然后使用ndisam反汇编-b 32-o 0x5F foo.bin ndisam是nasm附带的反汇编程序,您将获得000000 5F E909000000 jmp dword 0x6d 0x6d作为目标地址,因为0x5F+5+9==0x6d。谢谢。我想这回答了我所有的问题,给了我一个很好的起点。