我有一个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