Das eBook Angewandte Mikroelektronik wurde von Hans Lohninger zur Unterstützung verschiedener Lehrveranstaltungen geschrieben. Weitere Informationen finden sie hier.


Sprungbefehle, Unterprogrammaufrufe

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


Last Update: 2008-05-31