CPU-Register und Befehlsformate
Eingeordnet in Informatik
Geschrieben am in
Deutsch mit einer Größe von 5,21 KB
CPU-Register: Übersicht und Typen
Register sind extrem schnelle Speicherbereiche innerhalb der CPU, die für die Ausführung von Befehlen und die Verarbeitung von Daten unerlässlich sind. Sie lassen sich in verschiedene Kategorien einteilen:
Allzweckregister
- AX (Akkumulator): Hauptregister für arithmetische Operationen, Multiplikation, Division und Dezimalstellenkorrekturen.
- BX (Basisregister): Wird für die indirekte Adressierung von Speicheradressen verwendet.
- CX (Zählerregister): Dient als Zähler in Schleifen und bei String-Operationen.
- DX (Datenregister): Wird in Verbindung mit AX bei Multiplikation und Division verwendet.
Zeigerregister
- SP (Stackpointer): Zeigt auf das obere Ende des Stacks.
- BP (Basiszeiger): Zeigt auf Datenbereiche innerhalb des Stacks.
Indexregister
- SI (Quellindex): Wird für die indirekte Adressierung und als Zielzeiger verwendet.
- DI (Zielindex): Dient als Zielzeiger bei String-Operationen.
Befehlszeiger
- IP (Befehlszeiger): Zeigt auf den nächsten auszuführenden Befehl im Codesegment.
Segmentregister
CS, DS, ES, FS, GS, SS: Diese Register definieren Speichersegmente für Code, Daten und Stack.
Flaggenregister (PSW)
PSW (Program Status Word): Enthält Statusbits, die den Zustand der CPU nach jeder Operation anzeigen. Wichtige Bits sind:
- N (Negativ): Zeigt an, ob das Ergebnis negativ war.
- Z (Null): Zeigt an, ob das Ergebnis Null war.
- V (Überlauf): Zeigt einen Überlauf an.
- C (Übertrag): Zeigt einen Übertrag aus dem höchstwertigen Bit an.
- A (Hilfsübertrag): Zeigt einen Übertrag von Bit 3 an.
- P (Parität): Zeigt an, ob das Ergebnis gerade Parität hat.
Befehlsformate
Befehlsformate variieren je nach CPU-Architektur. Typische Formate sind:
- Cod.Op
- Cod.Op, Dir
- Cod.Op, Verz1, Dir2
Einige grundlegende Befehlskategorien sind:
1. Datenübertragungsbefehle
- MOV: Daten zwischen Registern verschieben.
- STORE: Daten von Register in Speicher speichern.
- LOAD: Daten von Speicher in Register laden.
- CLEAR: Setzt ein Register auf Null.
- SET: Setzt ein Register auf Eins.
- PUSH: Daten auf den Stack legen.
- POP: Daten vom Stack holen.
2. Arithmetische Befehle
- ADD: Addiert zwei Operanden.
- SUB: Subtrahiert zwei Operanden.
- MULTIPLY: Multipliziert zwei Operanden.
- DIVIDE: Dividiert zwei Operanden.
- ABSOLUTE: Berechnet den Absolutwert.
- NEGATIVE: Ändert das Vorzeichen.
- INCREMENT: Erhöht den Operanden um 1.
- DECREMENT: Verringert den Operanden um 1.
3. Logische Befehle
- AND: Bitweises logisches UND.
- OR: Bitweises logisches ODER.
- NOT: Bitweises logisches NICHT.
- XOR: Bitweises logisches XOR.
- TEST: Wertet Bedingungen aus.
- COMPARE: Vergleicht zwei Operanden.
- SHIFT: Verschiebt Bits nach links oder rechts.
- ROTATE: Zyklische Verschiebung.
4. Befehle zur Ablaufsteuerung
- JUMP: Unbedingter Sprung.
- JUMP ON: Bedingter Sprung.
- JUMP SUB: Sprung zu Unterprogramm.
- RETURN: Rückkehr aus Unterprogramm.
- SKIP: Erhöht den Befehlszähler um 1.
- SKIP TO: Bedingte Erhöhung des Befehlszählers.
- HALT: Stoppt die Programmausführung.
- WAIT: Pausiert die Ausführung.
- NOP: Keine Operation.
5. Ein-/Ausgabebefehle
- INPUT: Daten von E/A nach Speicher oder Register.
- OUTPUT: Daten von Speicher oder Register nach E/A.
- START I/O: Initialisiert ein E/A-Gerät.
- TEST I/O: Überträgt Statusinformationen von E/A.
Adressierungsarten
Direkte Adressierung
Der Operand befindet sich an einer festen Speicheradresse.
Beispiel: MOV AX, [10] (Lädt den Wert von Speicheradresse 10 in das AX-Register)
Indirekte Adressierung
Die Adresse des Operanden befindet sich an einer anderen Speicheradresse.
Registeradressierung
Der Operand befindet sich in einem Register.
Indirekte Adressierung mit Register
Die Adresse des Operanden befindet sich in einem Register.