Befehl |
Kurzbeschreibung |
Erläuterung |
Flags |
JP nnnn |
PC <-- nnnn |
Die Konstante nnnn wird in den Program Counter geladen, wodurch das Programm ab der Adresse nnnn weiter bearbeitet wird. |
unverändert |
JP cc,nnnn |
Wenn Bedingung cc erfüllt:
PC <-- nnnn |
Die Konstante nnnn wird in den Program Counter geladen, wenn die Bedingung cc erfüllt ist. Dadurch wird das Programm ab der Adresse nnnn weiter bearbeitet. Wenn die Bedingung cc nicht erfüllt ist, wird PC lediglich inkrementiert und das Programm arbeitet mit der nächsten Instruktion weiter. Als Bedingungen werden die Zustände der Flags Z, C, P/V und S verwendet. Für den JP-Befehl können für cc folgende Bedingungen eingesetzt werden:
Z Z=1 null
NC C=0 kein Übertrag
C C=1 Übertrag
PO P/V=0 Parität ungerade
PE P/V=1 Parität gerade
P S=0 Vorzeichen positiv
M S=1 Vorzeichen negativ
|
unverändert |
JP (HL) |
PC <-- HL |
Der Inhalt des Registers HL wird in den Programmzähler geladen, wodurch das Programm ab der Adresse HL weiter bearbeitet wird. Deser Befehl ist neben JP (IX), JP (IY) und RET der einzige Befehl für den Sprung an eine während der Laufzeit errechnete Stelle im Programm (computed GOTO). |
unverändert |
JP (IX)
JP (IY) |
PC <-- IX
PC <-- IY |
Der Inhalt des Registers IX bzw. IY wird in den Program Counter geladen, wodurch das Programm ab der Adresse IX bzw. IY weiterbearbeitet wird. Diese Befehle sind neben JP (HL) und RET die einzigen Befehle für den Sprung an eine während der Laufzeit errechnete Stelle im Programm (computed GOTO). |
unverändert |
JR nn |
PC <-- PC + nn |
Die Konstante nn wird zum Program Counter addiert, was einem relativen Sprung entspricht. Sie wird als 2er-Komplement notiert und kann Werte von -128 bis +127 annehmen. Die Konstante wird um Wert des PCs nach Einlesen dieses Befehls addiert, d. h. dass die tatsächlich mögliche Sprungweite (gerechnet von der Adresse es Sprungbefehls aus) von -126 bis +129 geht. |
unverändert |
JR cc,nn |
Wenn Bedingung erfüllt: PC <-- PC + nn |
Wenn die Bedingung cc erfüllt ist, wird die Konstante nn zum Program Counter addiert, was einem bedingten relativen Sprungentspricht (siehe auch JR nn). Als Bedingungen können für cc folgende Codes eingesetzt werden:
C C=1 Übertrag
NC C=0 kein Übertrag
Z Z=1 null
NZ Z=0 nicht null |
unverändert |
DJNZ nn |
Decrement and Jump if Not Zero |
Das Register B wird um eins dekrementiert und, falls B ungleich null ist, wird die Konstante nn zum Program Counter addiert, ansonsten wird der nächste Befehl abgearbeitet. Die Konstante wird als 2er Komplement notiert und kann Werte von 128 bis +127 annehmen. |
unverändert |
CALL nnnn |
(SP) <-- PC SP <-- SP - 2 PC <-- nnnn |
Zuerst wird der aktuelle Wert des Program Counters auf den Stack gelegt und dann wird dieser mit der Konstante nnnn geladen. Dies entspricht einem Unterprogrammaufruf an der Stelle nnnn. |
unverändert |
CALL cc,nnnn |
Wenn Bedingung erfüllt: (SP) <-- PC SP <-- SP-2 PC <-- nnnn |
Bei Erfüllung der Bedingung cc wird zuerst der aktuelle Wert des Program Counters auf den Stack gelegt und dann dieser mit der Konstante nnnn geladen. Dies entspricht einem bedingten Unterprogrammaufruf an der Stelle nnnn. Als Bedingungen können für cc folgende Codes eingesetzt werden:
NZ Z=0 nicht null
Z Z=1 null
NC C=0 kein Übertrag
C C=1 Übertrag
PO P/V=0 Parität ungerade
PE P/V=1 Parität gerade
P S=0 Vorzeichen positiv
M S=1 Vorzeichen negativ
|
unverändert |
RET |
PC <-- (SP) SP <-- SP+2 |
Der Program Counter wird mit dem obersten Wert des Stacks geladen, wodurch der Mikroprozessor mit der Programmausführung an der Adresse, die am Stack abgelegt war, weiter macht. |
unverändert |
RET cc |
Wenn Bedingung erfüllt: PC <-- (SP) SP <-- SP+2 |
Falls die Bedingung cc erfüllt ist, wird der Program Counter mit dem obersten Wert des Stacks geladen, wodurch der Mikroprozessor mit der Programmausführung an der Adresse, die am Stack abgelegt war, weitermacht. Als Bedingungen können für cc folgende Codes eingesetzt werden:
NZ Z=0 nicht null
Z Z=1 null
NC C=0 kein Übertrag
C C=1 Übertrag
PO P/V=0 Parität ungerade
PE P/V=1 Parität gerade
P S=0 Vorzeichen positiv
M S=1 Vorzeichen negativ
|
unverändert |
RETI |
Return nach maskierbarem Interrupt |
Dieser Befehl wird am Ende einer Interrupt-Service-Routine eingesetzt um den Rücksprung ins unterbrochene Hauptprogramm zu machen und um gleichzeitig dem IO-Baustein zu signalisieren, dass der Interruptzyklus abgeschlossen ist. Die IFF1- und IFF2-Flip-Flops werden zurückgesetzt |
unverändert |
RETN |
Return nach nicht maskierbarem Interrupt |
Dieser Befehl wird am Ende einer Interrupt-Service-Routine für den nicht maskierbaren Interrupt (NMI) eingesetzt, um den Rücksprung ins unterbrochene Hauptprogramm zu machen. Der Zustand des IFF2-Flip-Flops wird in das IFF1-Flip-Flop kopiert |
unverändert |
RST x |
Restart |
Dieser Befehl ermöglicht einen Unterprogrammaufruf, der nur ein Byte Op Code benötigt. Dabei werden in Abhängigkeit von x acht verschiedene Adressen angesprungen:
x=0 $0000
x=1 $0008
x=2 $0010
x=3 $0018
x=4 $0020
x=5 $0028
x=6 $0030
x=7 $0038 |
unverändert |