x86 ADD 指令的正确编码
Correct encoding for x86 ADD instruction
我手动编码以下指令:
add [di], al
而根据我对x86文档的理解,对应的机器码应该是:
00 07
使用 nasm
编译上述代码时,我得到以下信息:
# echo "add [di], al" > test.asm && nasm test.asm && xxd -ps test
0005
使用as
编译时也会发生同样的情况。
我怀疑这与 16/32/64 位编码有关,但我找不到相关信息。
不,根据 this reference 00 07
对应于 add [bx], al
而 00 05
对应于 add [di], al
。
我手动编码以下指令:
add [di], al
而根据我对x86文档的理解,对应的机器码应该是:
00 07
使用 nasm
编译上述代码时,我得到以下信息:
# echo "add [di], al" > test.asm && nasm test.asm && xxd -ps test
0005
使用as
编译时也会发生同样的情况。
我怀疑这与 16/32/64 位编码有关,但我找不到相关信息。
不,根据 this reference 00 07
对应于 add [bx], al
而 00 05
对应于 add [di], al
。