04 Verzweigungen und Schleifen

Einstieg in das Thema

Was brauchst du als Basiswissen?

Du kannst Register laden und verändern. Du weißt, dass `CP` einen Wert mit A vergleicht und bei Gleichheit das Zero-Flag setzt.

Worum geht es?

In einer höheren Programmiersprache beschreiben `if` und `while` den Programmablauf. Ein Prozessor verwendet dafür Vergleiche und Sprünge zu bestimmten Adressen.

Was ist das Ziel?

Du kannst unbedingte und bedingte Sprünge verfolgen, Verzweigungen und Zählschleifen erkennen sowie kleine Abläufe selbst in Maschinensprache formulieren.

Erarbeitung

Theorie

Checkliste (für die KI oder den Lehrer)

  • normalerweise führt der PC zum nächsten Befehl
  • Sprungbefehl setzt den PC auf eine andere Adresse
  • JP verwendet eine absolute Zieladresse
  • JR speichert einen relativen Abstand, im Applet wird die Zieladresse eingegeben
  • Z bedeutet Zero-Flag gesetzt, NZ bedeutet nicht gesetzt
  • JP Z und JR Z springen bei Gleichheit nach CP
  • JP NZ und JR NZ springen bei Ungleichheit nach CP
  • Verzweigung entsteht aus Vergleich, bedingtem Sprung und Programmwegen
  • Rückwärtssprung ermöglicht eine Schleife
  • Zähler muss verändert werden, sonst droht eine Endlosschleife

Video

Aufgaben

LD A,1 JP 7 LD A,99 ADD A,4 HALT
Aufgabe 1
Übertrage das Programm in das Applet und beachte die automatisch erzeugten Adressen. Bestimme, welche Zeile übersprungen wird und welchen Wert A am Ende enthält.
LD A,7 CP 7 JP Z,9 LD A,99 INC A HALT
Aufgabe 2
Prüfe die vom Applet angezeigten Adressen und passe das Sprungziel bei Bedarf an die Adresse von `INC A` an. Erkläre den Ablauf in Worten und ordne Vergleich und bedingten Sprung einer if-Anweisung zu.
Aufgabe 3
Verändere im vorherigen Programm nur den Vergleichswert so, dass der Sprung nicht ausgeführt wird. Sage das Endergebnis vor dem Test voraus.
Aufgabe 4
Ersetze `JP Z` durch `JP NZ`. Beschreibe genau, wann nun gesprungen wird. Formuliere beide Bedingungen in der Schreibweise einer bekannten Programmiersprache.
LD A,3 DEC A JR NZ,2 HALT
Aufgabe 5
Führe die Schleife mit „Step“ aus. Notiere A und PC nach jedem `DEC A`. Erkläre, weshalb die Schleife genau drei Mal durchlaufen wird.
Aufgabe 6
Verändere den Startwert der Schleife auf 5. Bestimme vor dem Start die Anzahl der ausgeführten `DEC A`-Befehle und begründe deine Vorhersage.
Aufgabe 7
Entferne `DEC A` aus der Schleife und untersuche den Ablauf für einige Schritte. Stoppe anschließend die Ausführung. Erkläre die Ursache der Endlosschleife und formuliere eine allgemeine Regel für Zählschleifen.
Aufgabe 8
Vergleiche `JP`, `JP Z`, `JP NZ`, `JR`, `JR Z` und `JR NZ`. Ordne die Befehle nach absolut oder relativ sowie unbedingt oder bedingt. Nenne einen Vorteil eines relativen und einen Vorteil eines absoluten Sprungs.
Aufgabe 9
Entwickle ein Programm, das A mit 4 lädt und anschließend in einer Schleife bis 0 herunterzählt. Verwende einen relativen bedingten Sprung und beende das Programm mit HALT.

Zusammenfassung

Was muss man wissen und können?

Sprünge verändern den PC. JP verwendet absolute Adressen, JR relative Abstände. Z und NZ machen einen Sprung vom Zero-Flag abhängig. Vergleich, bedingter Sprung und verschiedene Befehlsfolgen bilden eine Verzweigung. Ein Rückwärtssprung und ein veränderter Zustand bilden eine Schleife.

Was können anschließende Themen sein?

In der Prüfungsvorbereitung werden Register, Speicher, Rechnungen, Vergleiche und Programmabläufe verbunden. Eine spätere Vertiefung kann indirekte Adressierung, Unterprogramme und größere Bildschirmprogramme behandeln.