我正在做一些汇编编程(实际编写汇编程序),我注意到MOV EBX, <something>
和MOV BX, <something>
具有相同的操作码0xBB
!为什么这样,处理器如何区分这两者?它是根据第二个操作数的大小区分的吗?这就是说80386指令集复杂的原因吗?
答案 0 :(得分:5)
默认操作数大小由当前操作模式定义,您可以使用0x66
前缀切换。在32位模式下运行时0xBB
是32位移动,0x66 0xBB
是16位。在16位模式下,情况正好相反。
在32位模式下:
66 BB 34 12 mov bx, 0x1234
BB 78 56 34 12 mov ebx, 0x12345678
在16位模式下:
BB 34 12 mov bx, 0x1234
66 BB 78 56 34 12 mov ebx, 0x12345678