Was bedeuten Byte 2 und Byte 3?

Eine Anweisung aus dem Anweisungssatz von Intel 8085, bei der es sich um SBI-Daten handelt (Sofort mit Ausleihen subtrahieren). Diese Anweisung sagt: "Der Inhalt des zweiten Bytes der Anweisung und der Inhalt des CY-Flags werden beide vom Akkumulator subtrahiert. Das Ergebnis wird in den Akkumulator gestellt."

Oder

(A) <-- (A) -(Byte 2) - (CY)

Was bedeutet in diesem second byteoder byte mean?

Auch in der Anweisung STA addr (Speichere unmittelbare Adresse), die besagt: "Der Inhalt des Akkumulators wird an die Speicherstelle verschoben, deren Adresse in Byte 2 und Byte 3 der Anweisung angegeben ist." Was bedeutet byte 2und byte 3bedeuten?

Wenn dies ein falscher Ort ist, um diese Frage zu stellen, teilen Sie dies bitte dem entsprechenden Ort mit
Scheint mir vollkommen angemessen.
Dies ist eigentlich ein Programmierthema und ich würde es nach Stackoverflow verschieben.
Die Montage auf einem Prozessor ist der Firmware so nahe, dass ich nicht sicher bin, ob die Unterscheidung sinnvoll ist. Ein paar Fragen an der Grenze sind für uns in Ordnung, solange sie technisch bleiben und gute Antworten geben können. Wir müssen alle einige Assembler lesen, um Firmware zu machen, was ist hier der Schaden. Ich würde gerne andere Meinungen hören, wenn jemand dieser Meinung widerspricht.

Antworten (4)

Anweisungen bestehen aus einer variablen Anzahl von "Wörtern", und diese Wörter bestehen aus Bits. Im Fall der 8085-Architektur können Sie Anweisungen haben, die ein, zwei oder drei Wörter lang sind, und jedes Wort besteht aus 8 Bits. Diese Bits werden basierend auf Ihrem Befehlssatz in Felder unterteilt. Welche Felder es gibt und was diese Felder bedeuten, hängt normalerweise vom Kontext ab, basierend auf dem Wert eines Felds, das immer dieselbe Bedeutung hat. Typischerweise wird dieses Feld als "Op-Code" bezeichnet. Sie sollten mindestens Kapitel 8 des verlinkten PDFs im Detail lesen, um ein gründliches Verständnis zu erlangen.

Bei Befehlen, die mit Registern arbeiten und ihre Ergebnisse in einem Register speichern, müssen die Quell- und Zielregister in einigen Feldern des Befehls identifiziert werden. Im Fall einer Anweisung, die einem Register eine Konstante hinzufügt und das Ergebnis in einem Register speichert, müssen die Register noch identifiziert werden, aber die Konstante muss auch in der Anweisung in ihrem eigenen Feld codiert werden. In Befehlssatzarchitekturen wird der Begriff "unmittelbar" oft verwendet, um einen "konstanten Wert" zu bezeichnen. Im Falle von Anweisungen, die aus dem Speicher lesen oder in diesen schreiben, muss die Stelle im Speicher möglicherweise innerhalb der Anweisung codiert werden.

Das ist die Grundidee, hoffe, das hilft. Für die Zukunft ist ein guter Suchbegriff für solche Fragen "Instruction Set Architecture" für Ihren Prozessor.


Bearbeiten Re: STA 4200

Der STA-Befehl wird auf Seite 3-61 (S. 117) dieses Assemblersprachen- Programmierhandbuchs für 8080/8085-Prozessoren beschrieben. Die drei Bytes sind:

  • Byte 1 = OpCode (00110010)
  • Byte 2 = Niedriges Adressbyte
  • Byte 3 = Hohes Adressbyte

STA ist die "Store Accumulator Direct"-Anweisung und kopiert den Wert des Akkumulators in den Speicher an der 16-Bit-Adresse, die sich aus den Bytes 2 und 3 zusammensetzt.

können Sie bitte STA 4200 erklären, das den Inhalt des Akkumulators bei 4200 speichert, bzgl. der Begriffe Byte 2 und Byte 3 . Ich verstehe, dass die Anweisung 3 Bytes lang ist und der Opcode STA ist, aber ich verstehe die anderen beiden Felder nicht, die Byte 2 und Byte 3 bilden
@SuhailGupta schau mal in Kapitel drei von tramm.li/i8080/…

Sie haben anscheinend 2-Byte- und 3-Byte-Anweisungen. Das erste Byte ist in diesen Fällen anscheinend der Opcode. Der SBI-Befehl hat nur ein einziges Datenbyte jenseits des Opcodes, sodass das Datenbyte das zweite Byte des Befehls ist. In ähnlicher Weise befindet sich die Adresse, an der der STA-Befehl arbeitet, im zweiten und dritten Byte des Befehls, wobei das erste Byte vermutlich der Opcode ist.

Beachten Sie, dass dies alles Spekulationen aus dem sind, was Sie gesagt haben, und vage Erinnerungen an den x86-Befehlssatz. Ich habe nichts nachgeschlagen, um es zu bestätigen. Das ist dein Job.

Das zweite Byte enthält vermutlich den Wert, der vom Wert im Akkumulator subtrahiert werden soll.

Das zweite und dritte Byte, nach dem Sie im Zusammenhang mit der STA-Anweisung fragen, enthält eine Adresse - einen 16-Bit-Wert, der als zwei 8-Bit-Bytes angegeben werden muss.

Das Untersuchen von zusammengesetztem Code anhand dieser Anweisungen sollte hilfreich sein.

Schauen wir uns ein Fragment des Maschinencodes an: (Dies ist von stoned-b , aber der meiste ausführbare Code für viele Prozessoren sieht ähnlich aus).

...
1000:0148 BB0002        MOV     BX,0200
1000:014B 33C9          XOR     CX,CX
1000:014D 8BD1          MOV     DX,CX
1000:014F 41            INC     CX
...

Bei den meisten Computern bedeutet "Byte" eine einzelne adressierbare Speichereinheit mit 8 Bytes.

Dieses Beispiel zeigt, dass der Bytewert „BB“ in Position 1000:0148 gespeichert ist, der Bytewert „00“ in 1000:0149 gespeichert ist, das Byte „02“ in 1000:014A gespeichert ist, das Byte „33“ gespeichert ist in 1000:014B und so weiter.

Programme werden im Speicher abgelegt. Einige Prozessoren haben Anweisungen mit variabler Länge – wie Sie in diesem Beispiel sehen können, belegt die erste Anweisung 3 Bytes, die nächsten Anweisungen belegen jeweils 2 Bytes und die letzte Anweisung benötigt nur 1 Byte.

Das "Byte 1" der ersten Anweisung in diesem Beispiel ist "BB", "Byte 2" ist "00" und "Byte 3" ist "02".

Das "Byte 1" der nächsten Anweisung in diesem Beispiel ist "33", "Byte 2" ist "C9", und es hat kein "Byte 3".

Befehlssätze mit variabler Länge, wie der 8085 und der in diesem Beispiel, codieren typischerweise den Opcode und das Format des Befehls im ersten Byte. Indem nur das erste Byte untersucht wird, kann die CPU entschlüsseln, wie viele Bytes lang die gesamte Anweisung ist, welche Funktion diese Anweisung hat und die "Bedeutung" der folgenden Bytes.

Ich hoffe, dass Sie und andere Assembler-Bücher wie das Buch „ x86 Assembly “ weiter verbessern werden , bis sie klare, leicht verständliche Antworten auf diese und verwandte Fragen geben.