16位无条件跳转,操作数如何工作?

时间:2013-10-18 15:51:55

标签: assembly dos 16-bit

用于机器代码的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?

1 个答案:

答案 0 :(得分:1)

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

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