如何让NASM默认生成短跳?

时间:2017-02-07 19:28:10

标签: assembly nasm x86-16

我有一个16位DOS COM文件的反汇编,我希望尽可能将它组合成一个二进制文件。

我正在使用NASM,但是尽管手册中说跳转一般默认编码为短,但实际上它们在使用数字地址时编码为接近。

程序(以下部分中的文件内容):

nasm jumps_short.asm -fbin -o jumps_short.com
nasm jumps_unspecified.asm -fbin -o jumps_unspecified.com
ndisasm -o 04FEH jumps_short.com > jumps_short.dis.asm
ndisasm -o 04FEH jumps_unspecified.com > jumps_unspecified.dis.asm

jumps_unspecified.asm

bits 16
org 04FEh
main:
    JNZ  0x0529
    TEST BYTE [SI+0x0431], 0x02
    JNZ  0x050A

jumps_short.asm

bits 16
org 04FEh
main:
    JNZ  SHORT 0x0529
    TEST BYTE [SI+0x0431], 0x02
    JNZ  SHORT 0x050A

jumps_unspecified.dis.asm

000004FE  0F852700          jnz word 0x529
00000502  F684310402        test byte [si+0x431],0x2
00000507  0F85FFFF          jnz word 0x50a

jumps_short.dis.asm

000004FE  7529              jnz 0x529
00000500  F684310402        test byte [si+0x431],0x2
00000505  7503              jnz 0x50a

0 个答案:

没有答案
相关问题