用于机器代码的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?
答案 0 :(得分:1)
相对跳转的命令编码包含一个相对于JMP之后的命令的偏移量。这是因为当执行JMP时,IP寄存器已经指向下一个命令; IP在命令获取阶段递增。
此编码要求汇编程序知道JMP命令的IP值。为此,在MS_DOS的16位分段模式中,它们通常在文件的早期某处放置一个ORG指令。某些汇编程序可能有默认值。如果JMP目标是标签(而不是绝对地址),则不需要这样做。