Z80 CPU - die Funktionelle Befehlsdokumentation |
![]() |
![]() |
Letztmalig dran rumgefummelt: 20.09.13 03:36:09 |
![]() |
Die insgesamt 796 Befehle auf Basis von 158 Grundbefehlen lassen sich in insgesamt 13 Gruppen fassen und wirken dann spezifisch auf Register, Adressen, adressierte Speicherzellen sowie deren Distanzen. Für die Programmierung ist deren innerer Funktionsablauf grundlegend in seiner Bedeutung. | ||
![]() |
Funktionale Befehlsdokumentation
eingescannt |
||
![]() |
Quellen: Praktische
Mikrocomputertechnik |
||
Befehle werden dem Mikroprozessor in Form von Binärwörtern zugeführt. Diese können 1 bis 4 Byte umfassen. Jeder Befehl enthält mindestens 2 Aussagen:
|
|||
![]() |
Bei Ein-Byte-Befehlen sind Operationsteil und Operandenteil zu einem Byte zusammengefasst. Befehle können in verschiedenen Sprachen beschrieben werden! |
||
![]() |
Viele Befehle beeinflussen die FLAG-Register der CPU - hier die Einzelwirkung |
![]() |
Dabei können die Operanden direkt gegeben sein, in den meisten Fällen ist jedoch die Adresse der Operanden gegeben. Somit besteht ein Befehl aus:
|
||||||||||||
![]() |
Es werden folgende Symbole sowie Vereinbarungen zur Kennzeichnung allgemeiner Operanden benutzt:
|
Funktionale Befehlsübersicht schnell mal eingescannt |
![]() |
![]() |
![]() |
![]() |
Das hier nun sind die Detailbeschreibungen - gut - Laufzeiten (also Taktzyklen) fehlen - die kann man aber in den entsprechenden Referenzen finden. Für ungefähre - also unsere Operationen gilt: je höher die Taktfrequenz, um so schneller die Befehlsabarbeitung - Laufzeiten sind für unsere theoretischen Betrachtungen nicht wirklich wichtig ;-) | |
![]() |
|
0. Befehlsübersicht |
![]() |
![]() |
![]() |
![]() |
Zum eigentlichen Programmieren von Mirorechnern auf Grundlage des Z80-Systems und egal auf welcher Ebene, ist die Kenntnis der Funktionsweise der einzelnen Befehle von geradezu herausragender Bedeutung. Ohne die Kenntnis ist insbesondere strukturiertes Programmieren nicht möglich, da keine Befehle auf Hochsprachenbasis vorhanden sind. Vielmehr ist nur die korrekte Auswertung der einzelnen Flag-Bits zur Programmsteuerung möglich (aber auch hinreichend). | |||||
![]() |
Object-Code | Beschreibung | Kurzbeschreibung | Link auf vollständige OP-Code-Liste | Allgemeine Befehlsbeschreibung und FLAG-Wirkung | Detaillierte Funktionsbeschreibung |
![]() |
ADC | Add through CARRY-Flag | Addiert 8-Bit Werte sowie den Inhalt des CARRY-Flag zu A | siehe hier | siehe hier | siehe hier |
![]() |
ADD | Add | Addiert 8-Bit Werte zu A, ZERO, SIGN, PARITY sowie EVEN-Bit werden in Abhängigkeit gesetzt | siehe hier | siehe hier | siehe hier |
![]() |
AND | Logical And | Bitweise AND-Logik von 8-Bit Werten sowie A (Zielbit gleich 1, wenn beide der beteiligten Bits gleich 1) | siehe hier | siehe hier | siehe hier |
![]() |
BIT | Test Bit | Zielbit wird auf 1 verglichen, wenn Ergebnis wahr, dann ZERO-FLAG gleich 0, sonst 1 | siehe hier | siehe hier | siehe hier |
![]() |
CAC | Call On CARRY | Aufruf eines Unterprogrammes, wenn CARRY gleich 1 | siehe hier | siehe hier | siehe hier |
![]() |
CAM | Call M | Aufruf eines Unterprogrammes, welches durch HL adressiert wird | siehe hier | siehe hier | siehe hier |
![]() |
CANC | Call On Not CARRY | Aufruf eines Unterprogrammes, wenn CARRY gleich 0 | siehe hier | siehe hier | siehe hier |
![]() |
CALL | Call | Aufruf eines Unterprogrammes | siehe hier | siehe hier | siehe hier |
![]() |
CANZ | Call On Not ZERO | Aufruf eines Unterprogrammes, wenn ZERO gleich 0 | siehe hier | siehe hier | siehe hier |
![]() |
CAP | Call On PARITY | Aufruf eines Unterprogrammes, wenn PARITY gleich 0 | siehe hier | siehe hier | siehe hier |
![]() |
CAPE | Call On PARITY Even | Aufruf eines Unterprogrammes, wenn Ergebnis-Byte paarig | siehe hier | siehe hier | siehe hier |
![]() |
CAPO | Call On PARITY Odd | Aufruf eines Unterprogrammes, wenn Ergebnis-Byte unpaarig | siehe hier | siehe hier | siehe hier |
![]() |
CAZ | Call On ZERO | Aufruf eines Unterprogrammes, wenn ZERO gleich 1 | siehe hier | siehe hier | siehe hier |
![]() |
CCF | Complement CARRY Flag | Negieren des CARRY-Flags | siehe hier | ||
![]() |
CMP | Compare | Bitweise Vergleich von 8-Bit Werten mit A | siehe hier | siehe hier | |
![]() |
CPD | Compare And Decrement | Vergleichen und um 1 vermindern | |||
![]() |
CPDR | Compare Decrement And Repeat | Vergleichen und um 1 vermindern und wiederholen, bis BC=0 | |||
![]() |
CPI | Compare And Increment | Vergleichen und um 1 erhöhen | |||
![]() |
CPIR | Compare Increment And Repeat | Vergleichen und um 1 erhöhen bis BC=0 | |||
![]() |
CPL | Complement | Achtung: Es wird die Negation gebildet | siehe hier | ||
![]() |
DAA | Decimale Adjust Accumulator | BCD-Korrektur des Akkumulators nach arithmetischen Operationen | siehe hier | ||
![]() |
DEC | Decrement | Verringern um genau eins | siehe hier | siehe hier | |
![]() |
DI | Disable Interrupt | Interrupt sperren | siehe hier | ||
![]() |
DJNZ | Decrement And Jump Relative On Not ZERO | verminder B um 1 und springe relativ | siehe hier | siehe hier | |
![]() |
EI | Enable Interrupt | Interrupt freigeben | siehe hier | ||
![]() |
EX | Exchange | Registerpaar mit Alternativregisterpaar tauschen | siehe hier | siehe hier | |
![]() |
EXX | Extended Exchange | Registersatz mit Alternativregistersatz tauschen | siehe hier | siehe hier | |
![]() |
HALT | HALT | HALT | siehe hier | ||
![]() |
IM0 | Interrupt-Mode 0 | nur Interrptbetriebsart 0 möglich (NMI wird weiterhin angenommen) | siehe hier | siehe hier | |
![]() |
IM1 | Interrupt-Mode 1 | Interrptbetriebsart 0 und 1 möglich (NMI wird weiterhin angenommen) | siehe hier | siehe hier | |
![]() |
IM2 | Interrupt-Mode 2 | Interrptbetriebsart 1 und 2 möglich (NMI wird weiterhin angenommen) | siehe hier | siehe hier | |
![]() |
IN | Input Extern Device | Bytebreites Einlesen von externem Gerät (PIO, SIO, CTC, DMA) | |||
![]() |
INC | Increment | Erhöhen des Zieles um eins | siehe hier | ||
![]() |
IND | Intput Extern Device And Decrement | der über C andressierte Gerätekanal wird eingelesen und in die durch HL adressierte Speicherzelle abgelegt, B wird um eins erniedrigt, HL um eins erniedrigt | |||
![]() |
INDR | Intput Extern Device Decrement And Repeat | der über C andressierte Gerätekanal wird eingelesen und in die durch HL adressierte Speicherzelle abgelegt, B wird um eins erniedrigt, HL um eins erniedrigt und solange fort gefahren, bis B=0 | |||
![]() |
INF | Intput Extern Device in F | Inhalt des externen Geräts mit 8 Bit Breite ins FLAG-Register lesen | |||
![]() |
INI | Intput Extern Device And Increment | der über C andressierte Gerätekanal wird eingelesen und in die durch HL adressierte Speicherzelle abgelegt, B wird um eins erniedrigt, HL um eins erhöht | |||
![]() |
INIR | Intput Extern Device Increment And Repeat | der über C andressierte Gerätekanal wird eingelesen und in die durch HL adressierte Speicherzelle abgelegt, B wird um eins erniedrigt, HL um eins erhöht und solange fortgefahren, bis B=0 | |||
![]() |
JMP | Jump | unbedingter absoluter Sprung zum Ziel | siehe hier | ||
![]() |
JPC | Jump On CARRY | bedingter absoluter Sprung zum Ziel, wenn CARRY gesetzt | siehe hier | ||
![]() |
JPM | Jump M | unbedingter absoluter Sprung Programmstelle , welche durch HL adressiert wird (L - niederwertiger Teil der Zieladresse, H - höherwertiger Teil der Zieladresse) | siehe hier | ||
![]() |
JPNC | Jump On Not CARRY | bedingter absoluter Sprung zum Ziel, wenn CARRY nicht gesetzt | siehe hier | ||
![]() |
JPNZ | Jump On Not ZERO | bedingter absoluter Sprung zum Ziel, wenn ZERO nicht gesetzt | siehe hier | ||
![]() |
JPP | Jump On Parity | bedingter absoluter Sprung zum Ziel, wenn PARITY gesetzt | siehe hier | ||
![]() |
JPPE | Jump On Parity Even | bedingter absoluter Sprung zum Ziel, wenn EVEN gesetzt (Anzahl 1 gerade) | siehe hier | ||
![]() |
JPPO | Jump On Parity Odd | bedingter absoluter Sprung zum Ziel, wenn EVEN nicht gesetzt (Anzahl 1 ungerade) | siehe hier | ||
![]() |
JPZ | Jump On ZERO | bedingter absoluter Sprung zum Ziel, wenn ZERO gesetzt | siehe hier | ||
![]() |
JRC | Jump Relative On CARRY | relativer Sprung zum Ziel, wenn CARRY gesetzt | siehe hier | ||
![]() |
JR | Jump Relative | unbedingter relativer Sprung zum Ziel, | siehe hier | ||
![]() |
JRNC | Jump Relative On Not CARRY | relativer Sprung zum Ziel, wenn CARRY nicht gesetzt | siehe hier | ||
![]() |
JRNZ | Jump Relative On Not ZERO | relativer Sprung zum Ziel, wenn ZERO nicht gesetzt | siehe hier | ||
![]() |
JRZ | Jump Relative On ZERO | relativer Sprung zum Ziel, wenn ZERO gesetzt | siehe hier | ||
![]() |
LD | Load | Lade 8- oder 16-Bit-Register | siehe hier | ||
![]() |
LDD | Load And Decrement | Lade die die durch HL adressierte Speicherzelle mit dem Inhalt der durch DE adressierten Speicherzelle, erniedrige HL sowie DE um eins | siehe hier | ||
![]() |
LDDR | Load Decrement And Repeat | Lade die die durch HL adressierte Speicherzelle mit dem Inhalt der durch DE adressierten Speicherzelle, erniedrige HL sowie DE um eins, vermindere BC um eins, wiederhole bis BC=0 | siehe hier | ||
![]() |
LDI | Load And Increment | Lade die die durch HL adressierte Speicherzelle mit dem Inhalt der durch DE adressierten Speicherzelle, erhöhe HL sowie DE um eins | siehe hier | ||
![]() |
LDIR | Load Increment And Repeat | Lade die die durch HL adressierte Speicherzelle mit dem Inhalt der durch DE adressierten Speicherzelle, erhöhe HL sowie DE um eins, vermindere BC um eins, wiederhole bis BC=0 | siehe hier | ||
![]() |
NEG | Negation | Achtung: Es wird das Zweikomplement gebildet | siehe hier | ||
![]() |
NOP | No Operation | keine Operation der CPU (Füllbefehl) Refresh wird aufrecht erhalten, Zeit zur Befehlsabarbeitung wird benötigt | |||
![]() |
OR | Logical OR | Bitweise OR-Logik von 8-Bit Werten sowie A (Zielbit gleich 1, wenn mindestens eines der beteiligten Bits gleich 1) | siehe hier | ||
![]() |
OTDR | Output Extern Device Decrement And Repeat | Lade die die durch C adressierte Geräteadresse mit dem Inhalt des Registers A | siehe hier | ||
![]() |
OTIR | Output Extern Device Increment And Repeat | auf den über C andressierte Gerätekanal wird der durch HL adressierte Speicherinhalt ausgegeben, B wird um eins erniedrigt, HL um eins erhöht und solange fort gefahren, bis B=0 | siehe hier | ||
![]() |
OUT | Output Extern Device | Ausgabe eine Datenmusters aus 8-Bit-Datenquelle auf externes Gerät (PIO, SIO, CTC, DMA) mit C als Register mit Geräteadresse | |||
![]() |
OUTD | Output Extern Device Decrement | Ausgabe eine Datenmusters aus 8-Bit-Datenquelle auf externes Gerät (PIO, SIO, CTC, DMA) mit C als Register mit Geräteadresse - anschließendes Verringern von C | siehe hier | ||
![]() |
OUTI | Output Extern Device Increment | Ausgabe eine Datenmusters aus 8-Bit-Datenquelle auf externes Gerät (PIO, SIO, CTC, DMA) mit C als Register mit Geräteadresse - anschließendes Erhöhen von C | siehe hier | ||
![]() |
POP | Pop | gruppenweises Zurückladen der Registerinhalte von den durch den Stackpointer adressierten RAM-Zellen | |||
![]() |
PUSH | Push | gruppenweises Schreiben der Registerinhalte in die durch den Stackpointer adressierten RAM-Zellen | |||
![]() |
RES | Reset Bit | Setzen des Zielbits auf 0 | |||
![]() |
RET | Return | unbedingte Rückkehr aus Unterprogramm (Rückkehradresse vom Stack geholt, SP um zwei vermindert) | siehe hier | siehe hier | |
![]() |
RC | Return On CARRY | Rückkehr aus Unterprogramm, wenn CARRY-Bit gesetzt, Aktualisierung des PC via SP - SP um zwei vermindert | siehe hier | siehe hier | |
![]() |
RM | Return On Sign (Mathematical) | Rückkehr aus Unterprogramm, wenn SIGN-Bit gesetzt (die letzte Opertion war eine logische oder arithmetische), Aktualisierung des PC via SP - SP um zwei vermindert | siehe hier | siehe hier | |
![]() |
RNC | Return On Not CARRY | Rückkehr aus Unterprogramm, wenn CARRY-Bit nicht gesetzt, Aktualisierung des PC via SP - SP um zwei vermindert | siehe hier | siehe hier | |
![]() |
RNZ | Return On Not ZERO | Rückkehr aus Unterprogramm, wenn ZERO-Bit nicht gesetzt, Aktualisierung des PC via SP - SP um zwei vermindert | siehe hier | siehe hier | |
![]() |
RP | Return On Parity | Rückkehr aus Unterprogramm, wenn PARITY-Bit gesetzt, Aktualisierung des PC via SP - SP um zwei vermindert | siehe hier | siehe hier | |
![]() |
RPE | Return On Not Parity Even | Rückkehr aus Unterprogramm, wenn Parität der letzten arithmetischen oder logischen Operation gerade, Aktualisierung des PC via SP - SP um zwei vermindert | siehe hier | siehe hier | |
![]() |
RPO | Return On Not Parity Odd | Rückkehr aus Unterprogramm, wenn Parität der letzten arithmetischen oder logischen Operation ungerade, Aktualisierung des PC via SP - SP um zwei vermindert | siehe hier | siehe hier | |
![]() |
RZ | Return On ZERO | Rückkehr aus Unterprogramm, wenn ZERO-Bit gesetzt, Aktualisierung des PC via SP | siehe hier | siehe hier | |
![]() |
RETI | Return From Interrupt | Rückkehr aus Interruptservice-Routine, Aktualisierung des PC via SP | siehe hier | siehe hier | |
![]() |
RETN | Return From Non Mascable Interrupt | Rückkehr aus NMI-Interruptservice-Routine, Aktualisierung des PC via SP | siehe hier | siehe hier | |
![]() |
RL | Rotation Left | Bitweise Linksrotation durch das Ziel-Byte | siehe hier | siehe hier | |
![]() |
RLA | Rotation Left Arithmetical | Bitweise Rotation des Ziel-Bytes um eine Stelle nach links | siehe hier | siehe hier | |
![]() |
RLC | Rotation Left Through CARRY | Bitweise Rotation des Ziel-Bytes um eine Stelle nach links durch das CARRY-Bit | siehe hier | siehe hier | |
![]() |
RLD | Rotation Left Accumulator And M | siehe hier | siehe hier | ||
![]() |
RR | Rotation Right | siehe hier | siehe hier | ||
![]() |
RRA | Rotation Right Arithmetical | siehe hier | siehe hier | ||
![]() |
RRC | Rotation Right Through CARRY | siehe hier | siehe hier | ||
![]() |
RRCA | Rotation Right CARRY Accumulator | siehe hier | siehe hier | ||
![]() |
RRD | Rotation Right Accumulator And M | siehe hier | siehe hier | ||
![]() |
RST | Restart | Aufruf einer Kurzrufadresse | |||
![]() |
SBC | Subtraction Through CARRY | siehe hier | |||
![]() |
SCF | Set CARRY Flag | CARRY-Bit wird auf "1" gesetzt | siehe hier | ||
![]() |
SET | Set Bit | Ziel-Bit wird auf "1" gesetzt | |||
![]() |
SLA | Shift Left Arithmetical | siehe hier | siehe hier | ||
![]() |
SRA | Shift Right Arithmetical | siehe hier | siehe hier | ||
![]() |
SRL | Shift Right Logical | siehe hier | siehe hier | ||
![]() |
SUB | Subtraction | Subtrahiert 8-Bit Werte von A | siehe hier | ||
![]() |
XOR | Exclusive OR | Bitweise XOR-Logik von 8-Bit Werten sowie A (Zielbit gleich 1, wenn bei den beteiligten Bits gleich) | siehe hier |
Alphabetische Befehlsübersicht
1. Ladebefehle (Transportbefehle) |
![]() |
![]() |
![]() |
![]() |
LD steht für LOAD - lade Ziel mit Inhalt von Quelle, wobei immer in der reihenfolge verfahren wird: Lade Ziel mit Quelle - dies gilt auch dann, wenn einer der beteiligten Adressaten 16 Bit breit sein sollte. |
![]() |
Transport von Daten erfolgt immer von Quelle zum Ziel |
![]() |
r ist ein 8-Bit-Register, d ist eine relative Verschiebung, n ist ein Absolutwert und nn ist eine 16-Bit Adresse |
![]() |
Technische Beschreibung der Ladegruppe |
Ziel | B | C | D | E | H | L | M | A | n |
LD B, | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 06 n |
LD C, | 48 | 49 | 4A | 4B | 4C | 4D | 4E | 4F | 0E n |
LD D, | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 16 n |
LD E, | 58 | 59 | 5A | 5B | 5C | 5D | 5E | 5F | 1E n |
LD H, | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 26 n |
LD L, | 68 | 69 | 6A | 6B | 6C | 6D | 6E | 6F | 2E n |
LD M, | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 36 n |
LD A, | 78 | 79 | 7A | 7B | 7C | 7D | 7E | 7F | 3E n |
LD (IX+d), | DD 70 d | DD 71 d | DD 72 d | DD 73 d | DD 74 d | DD 75 d | DD 77 d | DD 36 d n | |
LD (IY+d), | FD 70 d | FD 71 d | FD 72 d | FD 73 d | FD 74 d | FD 75 d | FD 77 d | FD 36 d n | |
LD I, | ED 47 | ||||||||
LD R, | ED 4F |
Übersicht 8-Bit Ladelbefehle
Ziel | BC | DE | HL | SP | IX | IY | (nn) |
LD x, nn | 01 nn | 11 nn | 21 nn | 31 nn | DD 21 nn | FD 21 nn | |
LD x, (nn) | ED 4B nn | ED 5B nn | 2A nn | ED 78 nn | DD 2A nn | FD 2A nn | |
LD (nn), x | ED 43 nn | ED 53 nn | 22 nn | ED A3 nn | DD 22 nn | FD 22 nn | |
LD (SP), x | F9 | DD F9 | FD F9 | ED 7B nn | |||
LD A, x | 32 nn | DD 77 d | FD 77 d | 3A nn | |||
LD B, x | DD 46 d | FD 46 d | |||||
LD C, x | DD 4E d | FD 4E d | |||||
LD D, x | DD 56 d | FD 56 d | |||||
LD E, x | DD 5E d | FD 5E d | |||||
LD H, x | DD 66 d | FD 66 d | |||||
LD L, x | DD 6E d | FD 6E d | |||||
LD BC, x | ED 48 nn | ||||||
LD DE, x | ED 5B nn | ||||||
LD HL, x | 2A nn |
Übersicht 16-Bit Ladelbefehle
Befehl | LDD | LDDR | LDI | LDIR |
ED AB | ED B8 | ED A0 | ED B0 |
Spezielle Ladelbefehle
![]() |
Blocktransferbefehle - können effektiver vom DMA ausgeführt werden, sofern vorhanden |
![]() |
Lade Dercrementiere (bzw. Incrementiere) und Wiederhole |
![]() |
Daten werden solange vom durch (HL) indizierten Speicherplatz auf den durch (DE) indizierten gebracht, bis BC 0 enthält |
![]() |
wenn HL = 0200H, DE = 0600H sowie BC = 0008H sei, dann wird der Inhalt von 0200H bis 0207H auf 0600H bis 0607H kopiert |
2. Austauschbefehle |
![]() |
![]() |
![]() |
EX steht für EXCHANGE - Austauschen
Austauschbefehl | Code |
EX DE, HL | EB |
EX AF | 08 |
EXX | D9 |
EX (SP), HL | E3 |
LD SP, HL | F9 |
EX (SP), IX | DD E3 |
EX (SP), IY | FD E3 |
Austauschbefehle
3. Stapelbefehle |
![]() |
![]() |
![]() |
![]() |
der Inhalt eines Doppelregisters wird in den Kellerspeicher (Stapelspeicher - Stack) gebracht oder von dort geholt |
![]() |
der höherwertige Teil des Registers kommt auf die Zelle SP-1, der niederwertige auf SP-2 - beim Wiederherstellen umgekehrt |
![]() |
nach der Ausführung ist der Stackpointer um zwei erniedrigt |
![]() |
Stapelbefehle existieren nur für die Hauptregister, um den Alternativregistersatz auf dem Stapel zu verwalten, muss mit dem EXCHANGE-Befehl umgeschalten werden |
![]() |
die FLAGs werden nicht beeinflusst, erhalten jedoch mit POP AF den Inhalt für F, welcher auf dem Stapel abgelegt war |
Mnemonic-Code | Befehl |
PUSH AF | F5 |
PUSH BC | C5 |
PUSH DE | D5 |
PUSH HL | E5 |
PUSH IX | DD E5 |
PUSH IY | FD E5 |
POP AF | F1 |
POP BC | C1 |
POP DE | D1 |
POP HL | E1 |
POP IX | DD E1 |
POP IY | FD E1 |
Übersicht Stapelbefehle
4. CALL- und JUMP-Befehle sowie Rückkehr aus Unterprgrammen |
![]() |
![]() |
![]() |
Mnemonic-Code | unbedingt | C | NC | Z | NZ | PE | PO | M | P |
JP | C3 nn | DA nn | D2 nn | CA nn | C2 nn | EA nn | E2 nn | FA nn | F2 nn |
CALL | CD nn | DC nn | D4 nn | CC nn | C4 nn | EC nn | E4 nn | FC nn | F4 nn |
RET | C9 | D8 | D0 | C8 | C0 | EB | E0 | F8 | F0 |
JR | 18 e | 38 e | 30 e | 28 e | 20 e | ||||
DJNZ | 10 e | ||||||||
JMP (HL) | E9 |
Übersicht CALL-Befehle
![]() |
Jump relative |
![]() |
DJNZ Decrement B and Jump relative on not ZERO |
5. RESTART-Befehle |
![]() |
![]() |
![]() |
RST 00H | RST 08H | RST 10H | RST 18H | RST 20H | RST 28H | RST 30H | RST 38H |
C7 | CF | D7 | DF | E7 | EF | F7 | FF |
Übersicht RESTART-Befehle
6. Arithmetik-Befehle |
![]() |
![]() |
![]() |
DAA | CCF | SCF | CPL | NEG |
27 | 3F | 37 | 2F | ED 44 |
Übersicht der speziellen arithmetischen-Befehle
![]() |
DAA Decimal Adjust Accumulator |
![]() |
CCF |
![]() |
SCF |
![]() |
CPL Complement |
![]() |
NEG Negation (führt aber das Zweierkomplement aus) |
Übersicht 16-Bit Arithmetikbefehle-Befehle
B | C | D | E | H | L | M | A | n | BC | DE | HL | SP | IX | IY | (IX+d) | (IY+d) | |
ADD | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | C6 n | DD 86 d | FD 86 d | ||||||
ADC | 88 | 89 | 8A | 8B | 8C | 8D | 8E | 8F | CE n | DD 8E d | FD 8E d | ||||||
ADD HL,nn | 09 | 19 | 29 | 39 | |||||||||||||
ADD IX,nn | DD 09 | DD 19 | DD 29 | DD 39 | |||||||||||||
ADD IY,nn | FD 09 | FD 19 | FD 29 | FD 39 | |||||||||||||
ADC HL,nn | ED 4A | ED 5A | ED 6A | ED 7A | |||||||||||||
SUB | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | D6 n | DD 96 d | FD 96 d | ||||||
SBC | 98 | 99 | 9A | 9B | 9C | 9D | 9E | 9F | DE n | DD 9E d | FD 9E d | ||||||
SBC HL | ED 42 | ED 52 | ED 62 | ED 72 | |||||||||||||
INC | 04 | 0C | 14 | 1C | 24 | 2C | 34 | 3C | 03 | 13 | 23 | 33 | DD 23 | FD 23 | DD 34 d | FD 34 d | |
DEC | 05 | 0D | 15 | 1D | 25 | 2D | 35 | 3D | 0B | 1B | 2B | 3B | DD 2B | DD 2B | DD 35 d | FD 35 d |
Übersicht 8-Bit Arithmetikbefehle-Befehle
![]() |
Register A ist in jedem Falle einer der beteiligten Operanden und Ziel der Operation |
![]() |
FLAG-Wirkung beachten |
7. Logische Befehle |
![]() |
![]() |
![]() |
B | C | D | E | H | L | M | A | n | |
AND | A0 | A1 | A2 | A3 | A4 | A5 | A6 | A7 | E6 n |
XOR | A8 | A9 | AA | AB | AC | AD | AE | AF | EE n |
OR | B0 | B1 | B2 | B3 | B4 | B5 | B6 | B7 | F6 n |
CMP | B8 | B9 | BA | BB | BC | BD | BE | BF | FE n |
Übersicht RESTART-Befehle
![]() |
Register A ist in jedem Falle einer der beteiligten Operanden und Ziel der Operation |
![]() |
FLAG-Wirkung beachten |
8. Bittest-, SET- und RESET-Befehle |
![]() |
![]() |
![]() |
B | C | D | E | H | L | M | A | |
BIT 0 | CB 40 | CB 41 | CB 42 | CB 43 | CB 44 | CB 45 | CB 46 | CB 47 |
BIT 1 | CB 48 | CB 49 | CB 4A | CB 4B | CB 4C | CB 4D | CB 4E | CB 4F |
BIT 2 | CB 50 | CB 51 | CB 52 | CB 53 | CB 54 | CB 55 | CB 56 | CB 57 |
BIT 3 | CB 58 | CB 59 | CB 5A | CB 5B | CB 5C | CB 5D | CB 5E | CB 5F |
BIT 4 | CB 60 | CB 61 | CB 62 | CB 63 | CB 64 | CB 65 | CB 66 | CB 67 |
BIT 5 | CB 68 | CB 69 | CB 6A | CB 6B | CB 6C | CB 6D | CB 6E | CB 6F |
BIT 6 | CB 70 | CB 71 | CB 72 | CB 73 | CB 74 | CB 75 | CB 76 | CB 77 |
BIT 7 | CB 78 | CB 79 | CB 7A | CB 7B | CB 7C | CB 7D | CB 7E | CB 7F |
Übersicht Bittest-Befehle
B | C | D | E | H | L | M | A | |
SET 0 | CB C0 | CB C1 | CB C2 | CB C3 | CB C4 | CB C5 | CB C6 | CB C7 |
SET 1 | CB C8 | CB C9 | CB CA | CB CB | CB CC | CB CD | CB CE | CB CF |
SET 2 | CB D0 | CB D1 | CB D2 | CB D3 | CB D4 | CB D5 | CB D6 | CB D7 |
SET 3 | CB D8 | CB D9 | CB DA | CB DB | CB DC | CB DD | CB DE | CB DF |
SET 4 | CB E0 | CB E1 | CB E2 | CB E3 | CB E4 | CB E5 | CB E6 | CB E7 |
SET 5 | CB E8 | CB E9 | CB EA | CB EB | CB EC | CB ED | CB EE | CB EF |
SET 6 | CB F0 | CB F1 | CB F2 | CB F3 | CB F4 | CB F5 | CB F6 | CB F7 |
SET 7 | CB F8 | CB F9 | CB FA | CB FB | CB FC | CB FD | CB FE | CB FF |
Übersicht Bitsetz-Befehle
B | C | D | E | H | L | M | A | |
RES 0 | CB 80 | CB 81 | CB 82 | CB 83 | CB 84 | CB 85 | CB 86 | CB 87 |
RES 1 | CB 88 | CB 89 | CB 8A | CB 8B | CB 8C | CB 8D | CB 8E | CB 8F |
RES 2 | CB 90 | CB 91 | CB 92 | CB 93 | CB 94 | CB 95 | CB 96 | CB D7 |
RES 3 | CB 98 | CB 99 | CB 9A | CB 9B | CB 9C | CB 9D | CB 9E | CB 9F |
RES 4 | CB A0 | CB A1 | CB A2 | CB A3 | CB A4 | CB A5 | CB A6 | CB A7 |
RES 5 | CB A8 | CB A9 | CB AA | CB AB | CB AC | CB AD | CB AE | CB AF |
RES 6 | CB B0 | CB B1 | CB B2 | CB B3 | CB B4 | CB B5 | CB B6 | CB B7 |
RES 7 | CB B8 | CB B9 | CB BA | CB BB | CB BC | CB BD | CB BE | CB BF |
Übersicht Bit-Rücksetz-Befehle
9. Schiebe- und Rotations-Befehle |
![]() |
![]() |
![]() |
B | C | D | E | H | L | M | A | (IX+d) | (IY+d) | |
RLC | CB 00 | CB 01 | CB 02 | CB 03 | CB 04 | CB 05 | CB 06 | CB 07 | DD CB d 06 | FD CB d 06 |
RRC | CB 08 | CB 09 | CB 0A | CB 0B | CB 0C | CB 0D | CB 0E | CB 0F | DD CB d 0E | FD CB d 0E |
RL | CB 10 | CB 11 | CB 12 | CB 13 | CB 14 | CB 15 | CB 16 | CB 17 | DD CB d 16 | FD CB d 16 |
RR | CB 18 | CB 19 | CB 1A | CB 1B | CB 1C | CB 1D | CB 1E | CB 1F | DD CB d 1E | FD CB d 1E |
SLA | CB 20 | CB 21 | CB 22 | CB 23 | CB 24 | CB 25 | CB 26 | CB 27 | ||
SRA | CB 28 | CB 29 | CB 2A | CB 2B | CB 2C | CB 2D | CB 2E | CB 2F | DD CB d 2E | FD CB d 2E |
SLL | CB 38 | CB 39 | CB 3A | CB 3B | CB 3C | CB 3D | CB 3E | CB 3F | DD CB d 26 | FD CB d 26 |
RRA | 1F | |||||||||
RLCA | 07 | |||||||||
RLD | ED 6F | |||||||||
RRCA | 0F | |||||||||
RRD | ED 67 |
Übersicht Schiebe- und Rotations--Befehle
10. Interruptsteuerungsbefehle |
![]() |
![]() |
![]() |
DI | EI | IM0 | IM1 | IM2 | RETI | RETN |
F3 | FB | ED 46 | ED 56 | ED 5E | ED 40 | ED 45 |
Übersicht der Interruptsteuerungs-Befehle
DI Disable Interrupt
II Enabled Interrupt
IM0 - IM2 Interrptmode
RETI Return from Interrup
RETN Return from NMI
11. CPU-Steuerungsbefehle |
![]() |
![]() |
![]() |
NOP | HALT |
00 | 76 |
Übersicht RESTART-Befehle
NOP No Operation
HALT Stoppt das gesamte System auf dem augenblicklichen Zustand nach Ausführung des vollständigen Befehls (also nicht sofort!)
12. Ein- und Ausgabebefehle |
![]() |
![]() |
![]() |
B | C | D | E | H | L | F | A | n | |
IN | ED 40 | ED 48 | Ed 50 | ED 58 | ED 60 | ED 68 | ED70 | ED 78 | DB n |
OUT | ED 41 | ED 49 | ED 51 | ED 59 | ED 61 | ED 69 | ED 79 | D3 n |
Übersicht IN/OUT-Befehle
13. Blockbefehle |
![]() |
![]() |
![]() |
Befehls-Code | |
LDI | ED A0 |
LDIR | ED B0 |
LDD | ED A8 |
LDDR | ED B8 |
CPI | ED A1 |
CPIR | ED B1 |
CPD | ED A9 |
CPDR | ED B9 |
INI | ED A2 |
INIR | ED B2 |
IND | ED AA |
INDR | ED BA |
OUTI | ED A3 |
OTIR | ED B3 |
OUTD | ED AB |
OTDR | ED BB |
Übersicht der Blockbefehle-Befehle
![]() |
Blockladebefehle wirken auf alle 8-Bit Register jeweils gruppenweise (ausgenommen Akkumulator) |
||||||||||||||||||
![]() |
Flag-Wirkung finden Sie hier | ||||||||||||||||||
![]() |
|
||||||||||||||||||
![]() zur Hauptseite |
© Samuel-von-Pufendorf-Gymnasium Flöha | © Frank Rost im Mai 2004 |
... dieser Text wurde nach den Regeln irgendeiner Rechtschreibreform verfasst - ich hab' irgendwann einmal beschlossen, an diesem Zirkus nicht mehr teilzunehmen ;-) „Dieses Land braucht eine Steuerreform, dieses Land braucht eine Rentenreform - wir schreiben Schiffahrt mit drei „f“!“ Diddi Hallervorden, dt. Komiker und Kabarettist |