Das kleine Programm mit der Berechnung von z = x + y begann in der ersten Zeile so:
0 JMP 5 ...
Führt man den Einzelschrittmodus für den ersten Befehl 0 JMP 5 aus, ergibt sich folgender Ablauf:
Zu Beginn des Programmlaufs ist im PC der Wert 0 gespeichert. Dies kann man auch später nach einem Programmlauf mit der Eingabe PC 0 wiederherstellen. Nach der Ausführung des Befehls JMP 5 ist im PC nunmehr der Wert 5 gespeichert, weil an der Speicheradresse 5 der nächste auszuführende Befehl steht (hier: LDA 1). Im PC steht also immer die Speicheradresse, an der es im Programmablauf weitergeht. Im Normalfall wird nach jedem Befehl der PC um 1 erhöht, damit es an der darauffolgenden Adresse weitergeht. Durch gezielte Modifikationen am PC sind allerdings auch die von der höheren Programmiersprache Java bekannten Programm-Ablaufstrukturen wie Schleifen und Verzweigungen möglich. Dies wird im folgenden Beispiel demonstriert, bei dem mit einer do-while-Schleife die Zahlen von 1 bis 10 absteigend ausgegeben werden. Als Kommentar (hinter einem Semikolon) ist eine Art von Mini-Java angegeben.
JMP Anfang k DEF 0 ; int k = 0 zehn DEF 10 ; int zehn = 10 Anfang LDA zehn STA k ; k = 10 Schleife ; do { LDA k OUT k ; print (k) DEC STA k ; k = k-1 JPL Schleife ; } while (k > 0) END
Neu ist der Befehl JPL: Jump if PLus. Wenn der Akkuinhalt positiv ist, geht die Ausführung des Programmes an der Stelle Schleife weiter, d.h. am Beginn der do-while-Schleife. Der Java-Compiler übersetzt also die erste öffnende geschweifte Klammer in eine Sprungmarke und die zweite schließende geschweifte Klammer zusammen mit der while-Bedingung in einen bedingten Sprung.
Hier ist eine Liste der möglichen Sprungbefehle:
Speichere das angegebene Beispiel in einer Datei DoWhile.DCL, übersetze das Programm mit dem Assembler im DC in die Datei DoWhile.DC, lade die Datei DoWhile.DC in den DC und starte das Programm mit R.
Die Zahlen sollen nun ebenfalls absteigend ausgegeben werden, aber nun mit einer normalen while-Schleife, bei der die Bedingung am Anfang der Schleife steht. Überlege dir zuerst, wie das im obigen Beispiel als Kommentar angegebene Mini-Java-Programm umgeschrieben werden müsste und übersetze es dann in ein DCL-Programm mit geeigneten Sprungmarken und -Befehlen. Übersetze dann dein DCL-Programm mit dem Assembler in ein DC-Programm und teste den fehlerfreien Ablauf im DC. Gib dann wie im obigen Beispiel den DCL-Code inklusive der Mini-Java-Kommentare hier im Formular ein.