Assembler-Kurs Teil 4
Heute behandeln wir zwei neue Assemblerbefehle und die Erstellung eines Programmablaufplans. Auf Diskette wird
außerdem noch die Zeropage-Adressierung
erklärt.
JMP (JuMP to adress)
Zuletzt wurde die bedingten Verzweigung
erläutert. Der JMP-Befehl hängt nich von
solchen Bedingungen ab. Wenn das Programm diesen Befehl erreicht, wird
sofort zur angegebenen Adresse
verzweigt.
Beispiel:
JMP $2000 springt zur Adresse $2000
Sicher haben Sie schon die Ähnlichkeit
mit der GOTO-Anweisung in BASIC erkannt.
Die SPrungadresse des JMP-Befehls kann
auch in indirekter Form vorliegen, z. B. :
JMP ($2000) .
Eine Hexadezimalzahl besteht immer aus
einem höherwertigen Byte ( Bei der Zahl
$2000) ist dies $20) und einem niederwertigen Byte ( hier:$00) . Das höherwertige Byte entspricht also den ersten
beiden Stellen, das niederwertige den
letzten beiden Stellen der Hexzahl.
Bei dem letzten Beispiel wird nun nicht
zur Adresse $2000 verzweigt. Stattdessen
werden die Speicherstellen $2000 und
$2001 als " Sprungvektoren" behandelt.
Enthält z. B. die Adresse $2000 das Byte
$05( niederwertiges Byte) und $2001 den
Wert $10( höherwertiges Byte), so
springt das Programm nach $1005 . Diese
Adressierungsart des JMP-Befehls wird
jedoch nur selten verwendet.
JSR (Jump to SubRoutine)
Ein Unterprogramm ist eine selbstständige Gruppe von Befehlen, die vom
Hauptprogramm getrennt sind.
Nach Aufruf des Hauptprogramms wird es
abgearbeitet, bis ein JSR-Befehl
erreicht wird ( z. B. : JSR $2000) . Nun
wird in das Unterprogramm verzweigt. Es
werden jetzt alle Befehle ausgeführt, bis das Programm auf ein RTS trifft.
Daraufhin wird in das Hauptprogramm
zurückgesprungen.
Selbstverständlich kann auch aus dem
Unterprogramm ein weiteres Unterprogramm
aufgerufen werden ( Verschachtelung von
Unterprogrammen) .
Die Kombination JSR. . . RTS enspricht
unseren bekannten BASIC-Befehlen
GOSUB. . . RETURN.
Der Vorteil eines Unterprogramms liegt
darin, daß es von beliebig vielen
Stellen aus dem Hauptprogramm aufgerufen
werden kann. So müssen mehrmals
benötigte Routinen nicht immer wieder
neu geschrieben werden. Dadurch fällt
weniger Programmierarbeit an und es wird
Speicherplatz gespart.
( rt)