Im Real-Mode sind 16-Bit Daten und Adressen Default. Im Protected-Mode wird das durch das D-Bit im Codedescriptor bestimmt.
Beispiel aus dem Real-Mode:
2477:0100 66B800000000 mov eax,00000000
Wie man hier gut sehen kann wird der Operand Size Override (0x66) benutzt um anstelle von ax auf eax zuzugreifen. läßt man ihn weg wird der Befehl als mov ax,0 interpretiert (wodurch aber 2x 0x00 dahinter übrig wären...).
Und ich würde für solche Experimente auch nicht unbedingt einen Hexeditor nehmen, sondern einen 32-Bit Debugger (ich würde den DDEB empfehlen).
@bitmaster:
Ja, die Idee hatte ich auch schon, dass ja sowohl ein Register als auch eine Adresse daran beteiligt sind, jedoch finde ich es trotzdem unlogisch dann mit der 0x67 dafür zu sorgen ecx zu benutzen und nicht wie bei jedem anderen Befehl mit der 0x66.
MM