Benutzer:Steschke/Befehlssatz

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

Der Befehlssatz des 8085 ist größtenteils identisch mit dem des 8080. Er umfasst überwiegend 8-Bit-Befehle, für Registerpaar und Adessierungen auch eine Hand voll 16-Bit-Befehle. Nur die Interruptbefehle RIM und SIM des 8085 sind beim 8080 nicht vorhanden. Dem gegenüber hat der Z80 einen deutlich erweiterten Befehlssatz.

was tun die interruptbefehle? siehe hier und hier -- 23:05, 11. Dez 2005 (CET)

Lade- und Speicherbefehle (8-Bit)

[Bearbeiten | Quelltext bearbeiten]
Lade- und Speicherbefehle (8-Bit)
Wirkung Befehl Register sonst.
    A B C D E H L M K
A ← r MOV A,r 7Fh 78h 79h 7Ah 7Bh 7Ch 7Dh 7Eh 3Eh
B ← r MOV B,r 47h 40h 41h 42h 43h 44h 45h 46h 06h
C ← __ MOV C,_ 7Fh - R7.5 MSE M7.5 M6.5 M5.5 M6.5 M5.5
D ← __ MOV D,_ 47h I5.5 INTE M7.5 M6.5 M5.5 M6.5 M5.5 M5.5
E ← __ MOV E,_ 7Fh - R7.5 MSE M7.5 M6.5 M5.5 M6.5 M5.5
H ← __ MOV H,_ 47h I5.5 INTE M7.5 M6.5 M5.5 M6.5 M5.5 M5.5
L ← __ MOV L,_ 7Fh - R7.5 MSE M7.5 M6.5 M5.5 M6.5 M5.5
M ← __ MOV M,_ 47h I5.5 INTE M7.5 M6.5 M5.5 M6.5 M5.5 M5.5
M steht für eine Speicheroperation

K steht für Kopierbefehle mit Konstanten

r steht für ein Register, eine Speicherstelle oder eine Konstante als Quelle des Kopiervorgangs

Die Tabelle ist erst einmal nur ein optischer Aufhänger und stammt aus der Registerbescheibung des 8085

Lade- und Speicherbefehle kopieren den Inhalt eines Registers, einer Speicherstelle oder eine Konstante in ein Register oder in eine Speicherstelle. Der Inhalt der Quelle bleibt dabei unverändert. Die Adresse für das Kopieren in eine Speicherstelle oder aus einer Speicherstelle steht im Registerpaar H/L.

Alle Kopierbefehle ohne Konstanten sind ein Byte lang, Kopierbefehle mit Konstanten sind zwei Bytes lang, im zweiten Byte steht die Konstante.

Keiner dieser Befehle verändert Prozessorflags. Somit bleibt das Ergebnis einer vorhergehenden Vergleichs- oder Rechenoperation erhalten und kann auch nach dem Kopieren für Verzweigungen und Sprünge genutzt werden.

Für das Kopieren von einem Register in ein Register wird ein M1-Zyklus (4 Takte) benötigt, beim Kopieren von einer Speicherstelle in ein Register oder umgekehrt wird ein M1- und ein M2-Zyklus (7 Takte) benötigt, beim Kopieren einer Konstanten in ein Register benötigt man 7 Takte, einer Konstanten in eine Speicherstelle 10 Takte.

Befehle, die den Registerinhalt in das selbe Register schreiben sind möglich, aber sinnlos.


Ebenso sind Befehle wenig sinnvoll, die die Register H oder L in eine Speicherstelle schreiben oder eine Speicherstelle in diese beiden Register. -->

POV, möglicherweise braucht man die: -- 21:00, 11. Dez 2005 (CET)

Für Speicher-Kopierbefehle mit den Registern H und L bieten sich eher die 16-Bit-Befehle an. Das direkte Kopieren von Speicherzelle zu Speicherzelle ist nicht möglich.

Hier muss noch ne Menge "Bla" hin, Text ist noch nicht "omatauglich". Wirklich nicht ;-)
und böse wird es (ganz allgemein) bei den erweiterten Z-80-Adressierungen und -Befehlen. Braucht einer von euch Informationen aus Rodney Zaks Z-80-Büchlein? -- Smial 15:01, 27. Jan 2006 (CET)


Logische Operationen

[Bearbeiten | Quelltext bearbeiten]

ANA ANI ORA ORI XRA XRI RAL RAR RLC RRC -- 23:13, 11. Dez 2005 (CET)

Mathematische Operationen

[Bearbeiten | Quelltext bearbeiten]
Arithmetische Operationen (8-Bit)
Wirkung Befehl Register sonst.
    A B C D E H L M K
r ← r +1 INC r 7Fh - R7.5 MSE M7.5 M6.5 M5.5 M6.5 M5.5
r ← r -1 DEC r 47h I5.5 INTE M7.5 M6.5 M5.5 M6.5 M5.5 M5.5
* ← A - r CMP r 7Fh - R7.5 MSE M7.5 M6.5 M5.5 M6.5 M5.5
A ← A + r ADD r 47h I5.5 INTE M7.5 M6.5 M5.5 M6.5 M5.5 M5.5
A ← A +r+c ADC r 7Fh - R7.5 MSE M7.5 M6.5 M5.5 M6.5 M5.5
H <- __ MOV H,_ 47h I5.5 INTE M7.5 M6.5 M5.5 M6.5 M5.5 M5.5
L <- __ MOV L,_ 7Fh - R7.5 MSE M7.5 M6.5 M5.5 M6.5 M5.5
M <- __ MOV M,_ 47h I5.5 INTE M7.5 M6.5 M5.5 M6.5 M5.5 M5.5
M steht für eine Speicheroperation

K steht für Kopierbefehle mit Konstanten.

  • INC r erhöht den Wert eines Registers oder einer Speicherstelle um 1. Durch die Ausführung des Befehls werden die Flags verändert, nicht aber das Übertragsbit.
  • DEC r verringert den Wert eines Registers oder einer Speicherstelle um 1 analog zum INC-Befehl.
  • CMP r vergleicht den Wert des Akkumulators A mit dem Wert eines Registers, einer Speicherstelle oder einer Konstante durch Subtraktion. Vom Wert des Akkumulators wird dabei der Wert des angegebenen Registers, der Konstante oder der Speicherstelle abgezogen, die Flags werden dabei gesetzt. Das Ergebnis der Subtraktion selbst wird nicht gespeichert, einziges Ergebnis sind die gesetzten Flags.
  • ADD r addiert den Wert eines Registers, einer Speicherstelle oder einer Konstanten zum Wert des Akkumulators A und speichert das Ergebnis im Akkumulator. Es werden alle Flags dabei gesetzt.
  • ADC r addiert analog zu ADD den Wert eines Registers, einer Speicherstelle oder einer Konstanten zum Wert des Akkumulators A, berücksichtigt aber zusätzlich das Carry-Bit (Übertrag) im Flag-Register. Ist das Carry-Bit gesetzt, so wird dem Ergebnis 1 hinzugezählt. Das Ergebnis steht auch hier wieder im Akkumulator.
  • SUB r subtrahiert und verhält sich ansonsten genauso wie ADD.

Wenn bei den arithmetischen Operationen Speicherstellen benutzt werden, dann steht die Adesse im Speicherpaar H/L. Es ist zwar möglich, die Operationen auch auf die Register H und L anzuwenden, macht aber oft keinen Sinn.

ACI, und ADI, SBB, SBI und SUI fehlen noch, evtl. kurze erklärung zum carry-bit -- 23:13, 11. Dez 2005 (CET)


DAA

16-Bit-Operationen

[Bearbeiten | Quelltext bearbeiten]

Stackoperationen

[Bearbeiten | Quelltext bearbeiten]

PUSH und POP, XTHL

IN und OUT

CALL und konsorten, auch flagabhängig Rxxx, ebenfalls flagabhängig