Anleitung und Übung

5. Sprünge und Bedingungen

Bisher sind unsere Programme immer von einem Befehl zum nächsten gegangen. Für kompliziertere Aufgaben reicht das jedoch nicht. Wie du wahrscheinlich aus anderen Programmiersprachen weißt, muss es auch Verzweigungen (if ... then ... else ...) oder Schleifen (etwa while ... do ...) geben können.

Aufgabe

a) Kreuz und quer durch's Programm

Teste das folgende Programm und finde heraus, was die Befehle JMP und TST bewirken. Setze vor Ausführung des Programms die Speicherstelle Nr. 10 auf den Wert 5 und die Speicherstelle Nr. 11 auf den Wert 42.

 

Beschreiben Sie die Funktion der beiden Befehle JMP und TST in kurzer Form:

b) Malnehmen - eigentlich gar nicht eingebaut

Nun wird es komplizierter: Konstruiere ein Maschinenprogramm, das die Zahlen in den Speicherstellen 10 und 11 miteinander multipliziert und das Ergebnis in der Speicherstelle 12 abspeichert.

Tipp: Das Programm soll folgendes tun:

  • Die Speicherstelle 12 zunächst auf 0 setzen.
  • Den Wert der Speicherstelle 12 in den Akku holen, den Wert der Speicherstelle 10 addieren das Ergebnis und wieder in Speicherzelle 12 abspeichern.
  • Nach einer solchen Addition den Wert der Speicherstelle 11 um 1 erniedrigen.
  • Das Verfahren ab dem 2. Punkt so lange wiederholen Sie, bis die Speicherstelle 11 den Wert 0 hat.

Teste dein Programm, ob es auch funktioniert. Hierfür sollten die Speicherstellen 10 und 11 auf kleine, von Null verschiedene Werte gesetzt werden, also z.B. 5 und 3.

c) Dividieren - einfache Version Schreiben Sie ein Programm, das eine Zahl durch eine andere Zahl teilt. Betrachten Sie dabei zunächst nur den Fall, dass die größere Zahl in Speicherzelle 10 tatsächlich durch die kleinere in Speicherzelle 11 ganzzahlig teilbar ist.

d) Größer, kleiner oder gleich Wir betrachten zwei Zahlen in den Speicherstellen 10 und 11. JOHNNY soll entscheiden, ob die Zahl in Speicherstelle 10 größer ist als die in Speicherstelle 11, gleich groß ist, oder aber kleiner. Je nachdem soll in Speicherstelle 12 nach der Untersuchung der Wert 1, 2 oder 3 stehen.
Tipp:

e) Dividieren - komplizierte Version Schreiben Sie ein Programm, das eine Zahl durch eine andere Zahl teilt. Und zwar in der Art, wie wir vermutlich alle das in der Grundschule gelernt haben:
17:5 = 3 Rest 2.


Die Zahl in Speicherstelle 10 soll dividiert werden durch die Zahl in Speicherstelle 11. Der ganzzahlige Quotient soll danach in Speicherstelle 12, der Rest in Speicherstelle 13 gespeichert sein. Tipp: Vielleicht hilft Ihnen das Ergebnis aus Aufgabe d)