Assembler-Kurs Teil 1 -----------------------
EINLEITUNG:
Dieser Assembler-Kurs soll allen BASIC-Programmierern den Einstieg in Assembler
ermöglichen.
Ich werde mich in der Folge darum bemühen, die komplizierten Fachbegriffe zu
umgehen und leicht verständliche Erklärungen zu geben.
Zunächst sollen innerhalb dieses Kurses
alle Assembler-Befehle behandelt werden.
In späteren Teilen wird dann auf die
Verwendung von Kernal-Routinen und die
Interrupt-Technik eingegangen.
Zu jedem Teil des Kurses befindet sich
ein Programm auf der zweiten Seite der
Diskette (" ASSEMBLER-KURS 1"), das
einige Assembler-Routinen enthält und
Ihnen deshalb gleich die Auswirkungen
der jeweiligen Assembler-Befehle demonstrieren kann.
DAS WERKZEUG:
Zum Programmieren in Assembler benötigen
Sie unbedingt ein Programm, das die Befehle in reine Maschinensprache umwandelt. Diese Programme werden Assembler
oder Monitore genannt. Ein solches Programm finden Sie unter anderem auf der
Rückseite dieser Ausgabe ( WIZ-MON) ; die
Beschreibung dazu entnehmen Sie der
entsprechenden Rubrik.
LDA, STA und BRK: ----------------
Und jetzt können wir schon mit den
ersten Befehlen loslegen.
Wir fangen an mit LDA ( load accumulator) Der Akkumulator ( oder kurz Akku genannt) ist eine Art Verteilerstelle. Mit diesem
Befehl lädt man also einen Wert ( Zahl) in den Akku.
STA ( store accumulator) schreibt diesen
Akkuinhalt dann in die angegebene
Speicherstelle.
Der Befehl BRK entspricht etwa dem
BASIC-Befehl STOP und sollte zunächst
immer am Ende Ihrer ersten Programmierveruche mit Assembler stehen.
LDA und STA sind durchaus mit PEEK und
POKE aus dem BASIC vergleichbar.
Beispiel: POKE 8192,8
Dieser Befehl schreibt also den Wert 8 in die Speicherstelle 8192 . Eine Routine
in Assembler, die die gleiche Aufgabe
erfüllt, lautet:
LDA #$08 STA $2000 BRK
Lassen Sie sich nicht dadurch verwirren, daß hier Hexadezimalzahlen ( Erklärung
im Programm!) verwendet werden.
Das Zeichen "#" in der ersten Zeile
zeigt an, daß eine konstante Zahl und
nicht der Inhalt einer Speicherzelle in
den Akku geladen wird. Die hexadezimale
Zahl $2000 entspricht haargenau der
dezimalen Zahl 8192 .
Zunächst wird also die Zahl 8( bzw.$08) in den Akku geladen. In der zweiten
Zeile wird dieser Wert in der Adresse
8192($2000) abgelegt.
Ein anderes Beispiel:
Nach der Eingabe von POKE 12288, PEEK
(8192) hätte die Adresse 12288 ebenfalls
den Inhalt 8 .
Die entsprechenden Assembler-Befehle lauten: LDA $2000 STA $3000 BRK
Mit LDA wird diesmal keine Zahl, sondern
der Inhalt der Speicherstelle $2000( ähnlich PEEK(8192) in den Akku geladen.
STA legt den Akkuinhalt daraufhin bei
$3000( dezimal 12288) ab.
DER UMGANG MIT DEM MONITOR:
Eingegeben werden die Assembler-Befehle
mit einem Monitor durch:
A Speicherstelle Assembler-Befehl
z. B. : A C000 LDA #$08
Wenn Sie Ihre eingegebenen Befehlsfolgen
noch einmal betrachten wollen, so können
Sie dies mit " D Speicherstelle"( z. B. :
D C000) tun.
Es wird Ihnen dann bei unserem Beispiel folgende Zeile gezeigt:
. C000 A908 LDA #$08
Die Zahl C000 ist die Speicherstelle, in
der der Befehl steht. A9 ist die Codezhl
für den LDA-Befehl. Die darauffolgende
Zahl zeigt den Wert an, der in den Akku
geladen wird. Uns brauchen zunächst nur
die Assembler-Befehle im Klartext zu
interessieren.
Laden Sie nun das Beispielprogramm
" ASSEMBLER-KURS 1" von der zweiten
Seite. Es wird Ihnen weitere Hilfen zu
den ersten Assembler-Befehlen und zum
hexadezimalen Zahlensystem geben.
In der nächsten Ausgabe behanden wir die
Indexregister und die dazugehörigen
Assmblerbefehle.
Bis dahin wünschen ich Ihnen viel Spaß
beim ausprobieren der gelernten Befehle!
(rt)