我用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是什么?
答案 0 :(得分:0)
0x66是操作数大小覆盖前缀,这意味着如果默认操作数大小为32位(视情况而定),则操作码在16位大小的寄存器上工作时为16位(在您的情况下为bx)