Sprungbefehle:
Sprungbefehle bewirken eine Verzweigung im Programm. Sie können von einer Bedingung abhängen. Man unterscheidet zwischen relativen (JR-Befehl) und absoluten (JP-Befehl) Sprungbefehlen. Dem JP-Befehl folgt direkt eine Adresse, an die das Programm ggf. springen soll. Beim relativen Sprung werden soviele Bytes "übersprungen" wie der Term nach dem Befehl ausdrückt.
Beispiel eines absoluten Sprunges:
JP Z,&1FFF | Springt nach &1FFF, wenn Z=1 |
Beisplel eines relativen Sprunges:
JR &23 | Springt 35 Bytes nach vorne |
JR &E7 | Springt 25 Bytes zurück |
Ein relativer Sprung kann von -127 bis +128 Bytes erfolgen. Für die negative Sprungrichtung nimmt man die Anzahl zu überspringender Bytes und subtrahiert diesen Wert von 256 um den Term zu erhalten, der nach dem JR Befehl hingehört.
Relative und absolute Spränge kann man von einer Bedingung abhängig machen. So wird z.B. beim 8efehl JP M,&1FFF nur gesprungen, wenn das Negativ-Flag gesetzt ist.
Folgende Bedingungen sind nützbar:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Auch relative Spränge kann
man von einer Bedingung abhängig machen:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Absolute Spränge ohne Bedingung können auch an die Adresse erfolgen, die im HL-, IX- oder IY-Register steht. Z.B. JP (HL)
Ein weiterer Sprungbefehl ist der DJNZ-Befehl. Mit ihm kann man konfortabel eine Schlaufe programmieren. Der Befehl setzt sich aus folgenden Befehlen zusammen:
DEC B
JR NZ,tt
Er decrementiert das B-Register
und springt solange zu seinem relativen Sprungziel, bis B=0 wird. Um auch
hier einen Sprung in die negative Richtung zu bewirken, muss die Anzahl
der zu überspringenden Bytes zuerst am Wert 256 subtrahiert werden,
da Sprünge von max. 128 Bytes in jede Richtung zugelassen sind.