mov eax,0和mov ax,0之间机器码的区别

时间:2015-10-09 02:41:02

标签: nasm

我用nasm来研究装配。以下是源代码:

[BITS 32]
mov ebx, 0
mov bx, 0
mov bl, 0

然后我使用'ndisasm -b 32 test.bin'获得如下输出:

00000000  BB00000000        mov ebx,0x0
00000005  66BB0000          mov bx,0x0
00000009  B300              mov bl,0x0

我的问题是BB00000000和66BB0000的区别,我知道MOV的操作码是B,但B之前的66是什么?

1 个答案:

答案 0 :(得分:0)

0x66是操作数大小覆盖前缀,这意味着如果默认操作数大小为32位(视情况而定),则操作码在16位大小的寄存器上工作时为16位(在您的情况下为bx)