8086 Befehlsverschlüsselung verstehen

1347
muffel

Ich versuche, die Kodierung von 8086-Anweisungen zu verstehen. Obwohl ich eine allgemeine Anweisung und einen sperrigen Hinweis gefunden habe, verstehe ich sie immer noch nicht.

Könnten Sie mir bitte erklären, wie die folgenden "Übersetzungen" aus Byte-Daten gemacht werden?

Danke im Voraus!

48 -> dec ax  EB0D -> jmp short 0xf  642120 -> and [fs:bx+si],sp 
0
Warum suchen Sie nicht stattdessen [offizielle Handbücher von Intel] (http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html)? Die Kodierung der Instruktionen wird dort perfekt erklärt. m0skit0 vor 12 Jahren 0
Ich kannte sie nicht, danke! muffel vor 12 Jahren 0

2 Antworten auf die Frage

0
ZaB

Ihr Disassembler zeigt den JMP SHORT-Versatz vom Beginn des Befehls an, wenn der tatsächliche JMP SHORT von Byte nach Instruktion zählt. Möglicherweise benötigen Sie einen anderen Disassembler, der die Decodierung gut macht.

Vielleicht könntest du einen empfehlen? uSlackr vor 12 Jahren 0
IDA? ollydbg? Visual Studio? ZaB vor 12 Jahren 1
[NASM] (http://www.nasm.us/) m0skit0 vor 12 Jahren 0
0
ott--

Auf einen (oder diesen) unbedingten Sprung folgen Daten, entweder echte Daten oder Ausrichtungsdaten. Für 8086 ist 2 oder 4 eine gute Ausrichtung, daher könnte der nächste Befehl bei 21 oder 20 oder darüber hinaus beginnen.

Nicht zu Nitpick, aber 64h ist kein Präfix-Byte auf der 8086. Zumindest nicht nach: http://www.electronicsandbooks.com/eab1/manual/Electronic%20Component%20Databook%20Datasheet/Brand/Intel/Databook/1979 % 20Intel% 20The% 208086% 20Family% 20Benutzer% 20Manual% 20197910% 20 [760] .pdf Seite 273 Es ist noch 4 Jahre her vor 7 Jahren 0