Der Opcode wird generiert von:
%Vor%mit NASM ist:
%Vor%Aber im Intel Instructions Manual:
%Vor% Meine Frage ist, warum NASM den Opcode 83
anstelle von 81
benutzt und wie man den Opcode 81
erzeugt?
Dies ist die Befehlszeile für NASM: nasm -fwin32 file.asm -l list.lst
NASM wählt die 8-Bit-Operandengröße als Optimierung aus, weil es dasselbe tut und weniger Platz benötigt. Sie können NASM zwingen, eine bestimmte Operandengröße zu verwenden:
%Vor%Dies führt zu:
%Vor% Das Zusammenstellen des ursprünglichen Codes ohne Optimierungen ( nasm -O0
) wird ebenfalls zu diesem Ergebnis führen.
Wenn das Register EAX ist, führt dies dazu, dass der 0D-Opcode ( mov eax, imm32
) statt 81 angezeigt wird. In diesem Fall müssen Sie die Anweisung möglicherweise selbst ausgeben: db 0x81, 0xc8, 0xff, 0xff, 0xff, 0xff
.