Я провёл тест:
Код:
dd 0xFFFFFFFF ; FF FF FF FF
mov AX, BX ; 89 D8
mov AX, BX ; 89 D8
mov EAX, EBX ; 66 89 D8
mov EAX, EBX ; 66 89 D8
mov AX, BX ; 89 D8
mov EAX, EBX ; 66 89 D8
dw 0xFFFF ; FF FF
bits 32
mov AX, BX ; 66 89 D8
mov EAX, EBX ; 89 D8
mov EAX, EBX ; 89 D8
mov AX, BX ; 66 89 D8
db 0xFF ; FF
bits 16
mov EAX, EBX ; 66 89 D8
mov AX, BX ; 89 D8
mov AX, BX ; 89 D8
mov EAX, EBX ; 66 89 D8
mov AX, BX ; 89 D8
db 0xAA, 0x00, 0xAA ; AA 00 AA
Да, префикс действует на 1 команду и собой "реле" не являет.
Но почему-то в 32-битномом блоке опкоды AX и EAX поменяны местами.
![Удивлён :o](./images/smilies/icon_e_surprised.gif)
Я опять немного в ступоре... Но подозреваю, что имеется ввиду то, что bits 32 надо использовать только тогда, когда процессор переключён в защищённый режим, где данные опкоды расположены наоборот, вероятно, для того, чтобы оптимизировать 32-битный код по размеру.