04 Wie ist der Aufbau eines Cow-Programms?

Cow besteht aus einer fortlaufenden Folge von moo-Befehlen, die in einem Programmspeicher abgelegt sind und beginnend beim ersten Befehl fortlaufend abgearbeitet werden.

Daten werden in einem Datenspeicher abgelegt und mittels einem Register verarbeitet.

Befehle

NrBefehlBeschreibung
0mooDieser Befehl steht für das Ende einer Schleife – gehört also zu einem MOO-Befehl. Bei der Programmausführung wird rückwärts der nächste MOO-Befehl gesucht und die Programmausführung an dieser Stelle fortgesetzt.
Bei der Rückwärtssuche wird der unmittelbar vorherliegende Befehl übersprungen.
1mOoBewegt den Zeiger auf die Datenspeicherzellen um eine Zelle zurück.
2moOBewegt den Zeiger auf die Datenspeicherzellen um eine Zelle vor.
3mOOFührt den Inhalt der aktuellen Datenspeicherzelle als Befehl aus. Bei einem ungültigen Befehl bricht das Programm ab. Der Wert 3 ist bspw. ungültig, da er in eine Endlosschleife führt.
4MooEnthält die aktuelle Datenspeicherzelle den Wert 0, wird ein ASCII-Zeichen eingelesen und mit seinem Zeichencode in der Datenspeicherzelle abgelegt. Andernfalls wird der Inhalt der Datenspeicherzelle als Zeichen ausgegeben.
5MOoDer Inhalt der aktuellen Datenspeicherzelle wird um 1 verringert.
6MoODer Inhalt der aktuellen Datenspeicherzelle wird um 1 erhöht.
7MOODieser Befehl steht für den Anfang einer Schleife – gehört also zu einem moo-Befehl. Bei der Programmausführung wird der Inhalt der aktuellen Datenspeicherzelle geprüft. Ist dieser 0, wird die Programmausführung nach dem nächsten MOO-Befehl fortgesetzt.
Ist der Inhalt ungleich 0, wird die Programmausführung mit dem übernächsten Befehl fortgesetzt.
8OOOSetzt den Wert der aktuellen Datenspeicherzelle auf 0.
9MMMWenn das Register keinen Wert enthält, wird der Inhalt der aktuellen Datenspeicherzelle im Register abgelegt. Andernfalls wird der Inhalt des Registers in die aktuelle Datenspeicherzelle geschrieben und das Register gelöscht.
10OOMDruckt den Inhalt der aktuellen Datenspeicherzelle als Zahl.
11oomLiest eine Zahl und legt diese in der aktuellen Datenspeicherzelle ab.