Ausgabe
Das folgende Beispielprogramm gibt den Text “Hallo Welt!”, bzw. die ASCII Werte der einzelnen Zeichen aus. Hierzu wird mittels einer Schleife jeder Datensatz des Textes einzeln in die Ausgabe transferiert.
@Start # Initialisierung des Programmzeigers Step: -3 # Schrittweite des Programmzeigers REM Variablen und Konstanten txt: "Hallo\ Welt!" # Textspeicher len: @len # Länge des Textes + 1 inc: -1 # Konstante zum Inkrementieren dec: 1 # Konstante zu Dekrementieren tmp: 0 # temp. Speicher zum negieren von Werten REM Programmstart Start: SUB @len @dec # Länge der Zeichenkette ermitteln REM Schleife Out: SUB @tmp @tmp # Puffer definieren und nullen SUB @tmp i:@txt # Zeichen in Puffer (negiert) SUB -1 @tmp # Zeichen ausgeben SUB @i @inc # nächstes Zeichen SUB @len @dec # Zähler dekrementieren JA @len @Out # Schleifenende REM Programmende SUB 0 0 # Programm beenden
In diesem einfachen Beispiel lässt sich die Länge des Textes noch einfach ermitteln, da der Text in Zelle 1 beginnt. @len zeigt dann auf die erste Speicherzelle danach, muss also lediglich um 1 reduziert werden. Dies ist allgemein jedoch nicht der Fall, sodass man die Tatsächliche Länge durch Subtraktion der Anfangsadresse von der Endadresse ermitteln muss. Hierzu ein Codeausschnitt:
... txt: "Hallo\ Welt!" # Textspeicher length: @length # Endadresse des Textes + 1 begin: @txt # Startadresse des Textes SUB @length @begin # Ende - Anfang = Länge des Textes
Wir nehmen an, dass der Text hier in Zelle 10 beginnt, sodass @txt = 10 ist. @length zeigt auf die erste Zelle hinter dem elf Zeichen langen Text und somit auf Zelle 21 und beinhaltet die eigene Adresse, also 21. @begin zeigt auf Zelle 22 und beinhaltet die Startdresse des Textes (@txt, also 10). Mit der Subtraktion wird nun @length = 21 – 10 = 11 berechnet.
Dieses Verfahren bietet sich allerdings auch nur für Texte konstanter Länge an. Wie mit Strings, bzw. Datensätzen umgegangen wird, die sich zur Laufzeit in ihrem Umfang verändern, wird in einem späteren Beispiel näher betrachtet. Allerdings kann schon soviel vorweggenommen werden, dass die klassischen Konzepte des Nullterminierten Strings, bzw. eines Längenfeldes auch hier Verwendung finden.