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.


