-1

16位DOS无条件jmp汇编指令转机器码:

jmp FF   translated to EBFD
jmp 100  translated to EBFE
jmp 2    translated to E9FFFE
jmp eax  translated to 66FFE0
jmp 80   translated to E97DFF

我知道 EB、E9 和 66 表示不同的 jmps(短、近或寄存器),但它后面的值怎么样?例如,FF 究竟是如何映射到 FD 和 100 是如何映射到 FE 的?

4

1 回答 1

1

相对跳转的命令编码包含相对于 JMP 之后的命令的偏移量。这是因为在执行 JMP 时,IP 寄存器已经指向下一条命令;IP 在命令获取阶段递增。

这种编码要求汇编器知道 JMP 命令的 IP 值。为此,在 MS_DOS 的 16 位分段模式中,他们通常会在文件的早期某处放置 ORG 指令。一些汇编程序可能对此有默认值。如果 JMP 目标是标签(而不是绝对地址),则不需要这样做。

于 2013-10-18T16:39:00.863 回答