2016-07-31 34 views
0

Ich lese IBM PC Assembly Sprache und Programmierbuch und im dritten Kapitel denke ich, begann der Autor über Debug-Tool zu sprechen, die mit MS-DOS kommt. In den Beispielen verwendete er den Befehl A, um einen Code zu assemblieren, und verwendete dann den Befehl U, um denselben Code zu demontieren.Die Ausgabe von U-Befehl in Debug-Tool in MS-DOS

Nehmen wir an, dass der Code wie folgt war:

Anmerkung: die Startadresse wird auf 100 gesetzt, indem Sie den Befehl zusammenbauen Start wie folgt aus:A 100

MOV ax, 20 
MOV dx, 10 
ADD ax, dx 
NOP 

Die Frage ist hier, wenn Er verwendete U Befehl, um Code von 100 zu zerlegen, wo wir zu 106 begannen, wo wir die Ausgabe angehalten haben, enthält ungefähr 5 Spalten.

ich es hier kopieren, und hoffen, dass Sie, was diese Hex-Zahlen sind erklären können:

`1` `2` `3`   `4` 

073F:0100 B81000  MOV AX, 20 
073F:0103 BB1000  MOV DX, 10 
073F:0106 01C6  ADD AX, DX 
073F:0108 90   NOP 

Spalte 2 und 4 sind klar und sehr einfach, aber was sind diese Zahlen in Spalte 1 und 3?

+1

1,2-Speicheradresse ist, 3-Byte-Code ist, 4 ist die Demontage von Bytecode? – YOU

+0

@YOU meinst du 1,2 sind nur 1 Spalte? 073F: 0100 sind nicht zwei Dinge? nur eine Sache, die Speicheradresse? – Kordy

+0

0x073F0100 ist echte Adresse, ':' ist nur für Menschen klar zu verstehen, IMO. – YOU

Antwort

0

(Spalte 1) * 16 + 2 = Column die reale Adresse Spalte 3 ist der Maschinencode Spalte 4 ist offensichtlich den Assemblercode

+1

Es ist nicht "das Multiplikationsergebnis". Es ist 'col1 * 16 + col2'. IDK, wenn du den Kommentar von Weather Vane falsch verstanden hast oder wenn du nur die falschen Worte gewählt hast, um es zu beschreiben. Auch "Maschinencode" wäre eine bessere Beschreibung für col3. "Bytecode" hat eine spezifische technische Bedeutung außer "Bytes des Maschinencodes". (Es bedeutet Nicht-Text-Eingabe für einen Interpreter oder JIT-Compiler, aber nicht für Hardware. Zum Beispiel Java-Bytecode.) –

+0

@PeterCordes thanks for illustration – Kordy