您可以进行反汇编并尝试找出您在汇编器中使用的操作码的机器码
例如
org 0x100
mov dx,msg
mov ah,0x09
int 0x21
ret
msg db 'hello$'
使用 nasm -fbin ./a.asm -o ./a.com 编译具有 ndisasm a.com 提供以下反汇编:
00000000 BA0801 mov dx,0x108
00000003 B409 mov ah,0x9
00000005 CD21 int 0x21
00000007 C3 ret
00000008 68656C push word 0x6c65
0000000B 6C insb
0000000C 6F outsw
0000000D 24 db 0x24
00000000 to 00000007 are the instructions
所以您可以使用 ba0801 机器代码,使用一些十六进制编辑器,尝试将其更改为 ba0901,并且只会打印“hello”,您可以使用十六进制编辑器并使用 NOP 填充内容,即机器中的 0x90代码,例如:
00000000: ba 50 01 90 90 90 90 90 90 90 90 90 90 90 90 90 .@..............
00000010: b4 09 90 90 90 90 90 90 90 90 90 90 90 90 90 90 ................
00000020: cd 21 90 90 90 90 90 90 90 90 90 90 90 90 90 90 .!..............
00000030: c3 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 ................
00000040: 71 77 65 72 74 79 75 69 61 73 64 66 67 68 6a 24 qwertyuiasdfghj$
00000050: 61 73 64 66 67 68 6a 6b 61 73 64 66 67 68 6a 24 asdfghjkasdfghj$
00000060: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- ----------------
如果你用扩展名 .com 保存它,你可以在 DosBox 中运行它