Ein Programmbeispiel
Dieses ist ein Beispiel, wie man früher unter Assembler programmiert hat. Lesen Sie es nur, wenn es Sie interessiert. Ich habe versucht es so zu erklären, dass auch Nicht-Fachleute es verstehen.
Das abgebildete Programm zeigt, wie man die Relais der Reihe nach durchschaltet. Die erste Spalte zeigt die Programmzeilen in Zehner-Schritten. Das ermöglicht ein späteres Einfügen weiterer Zeilen.
Die zweite Spalte zeigt die Speicheradresse, in der nachher das assemblierte Programm abgelegt ist. In der dritten Spalte steht der eigentliche Maschinencode, den der Prozessor zu sehen bekommt. Die Speicheradresse und der Maschinencode sind im hexadezimalen Zahlensystem. Im Zehnersystem geht eine Stelle von 0 bis 9. Das sit der höchste Wert. Im Hexadezimalen geht es von 0 bis F, also 0…9, gefolgt A…F. Es kommt also nach 09 0A, dann 0B, 0C, 0D, 0E, 0F, 10, 11, usw. Damit sie nicht verwechselt werden kennzeichnet man sie meistens mit einem $. So ist $15 = 21 und $FF = 255.
In der vierten Spalte steht das Assembler-Programm. LDA #00000001 (LDA = Load Accumulator) bedeutet, dass die Binärkombination 00000001 in den Accu (ein Zwischenspeicher im Prozessor) geladen wird. Der Prozessor liesst nur A9 01. Der zweite Befehl STA Relais sagt, dass der Wert aus dem Accu in die Speicheradresse der Relaiskarte geschrieben werden soll. Die Konstante „RELAIS“ wurde un der Zeile 0040 definiert und nach dem Assemblieren direkt in den Speicher unter $0202 bis $0204 geschrieben. Hier steht 8D 68 14. 0D bedeutet STA (= Store Accumulator) 68 und 14 ist die Adresse $1468 (Low-Byte zuerst). Danach springt springt das Programm zum Unterprogramm „PAUSE“ mit dem Befehl JSR (=jump subroutine). So schreibt es verschiedene Werte an die Relais um anschließend wieder nach „LOOP“ zurückzuspringen (Zeile 310).