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], al00 05 对应于 add [di], al