03 Rechnen und Vergleichen

Einstieg in das Thema

Was brauchst du als Basiswissen?

Du kannst Werte in Register und Speicher laden. Du kennst A als Akkumulator und kannst Programme im Einzelschritt untersuchen.

Worum geht es?

Berechnungen bestehen beim Z80 aus kleinen Einzelschritten. Ein Vergleich liefert nicht direkt „wahr“ oder „falsch“, sondern verändert Statusbits, die Flags genannt werden.

Was ist das Ziel?

Du kannst einfache Rechnungen mit A durchführen, Ergebnisse verfolgen und erklären, wie `CP` das Zero-Flag für spätere Entscheidungen setzt.

Erarbeitung

Theorie

Checkliste (für die KI oder den Lehrer)

  • A als Ziel vieler Rechenbefehle
  • ADD A,n addiert einen unmittelbaren Wert zu A
  • ADD A,r addiert den Inhalt eines Registers zu A
  • INC A und DEC A verändern A um eins
  • 8 Bit erlauben nur Werte von 0 bis 255
  • Überlauf: 255 plus 1 ergibt im 8-Bit-Register wieder 0
  • Flags als einzelne Statusinformationen des Prozessors
  • Zero-Flag Z ist 1, wenn ein betrachtetes Ergebnis null ist
  • CP n vergleicht durch eine gedachte Subtraktion A minus n
  • CP verändert A nicht, aber setzt unter anderem das Zero-Flag

Video

Aufgaben

LD A,8 ADD A,5 INC A DEC A HALT
Aufgabe 1
Bestimme A nach jeder Zeile ohne Applet. Überprüfe anschließend im Einzelschritt und erkläre, welche der letzten beiden Operationen sich gegenseitig aufheben.
LD A,9 LD B,A ADD A,B HALT
Aufgabe 2
Bestimme A und B am Ende. Erkläre, welcher Befehl eine Verdopplung bewirkt und weshalb B unverändert bleibt.
Aufgabe 3
Entwickle zwei verschiedene Programme, die mit `LD A,6` beginnen und mit dem Wert 18 in A enden. Eines soll einen unmittelbaren Wert, das andere ein zusätzliches Register für die Addition verwenden.
Aufgabe 4
Untersuche `LD A,255`, `INC A`, `HALT`. Sage das Ergebnis voraus und erkläre es mithilfe der begrenzten Größe eines 8-Bit-Registers.
LD A,12 CP 12 HALT
Aufgabe 5
Beobachte A und das Zero-Flag vor und nach `CP 12`. Erkläre, weshalb A unverändert bleibt, obwohl der Prozessor intern einen Unterschied bestimmt.
Aufgabe 6
Führe dasselbe Programm nacheinander mit `CP 11`, `CP 12` und `CP 13` aus. Erstelle eine Tabelle mit Vergleichswert, Inhalt von A und Zero-Flag. Formuliere daraus eine Regel für Z.
LD A,5 ADD A,3 CP 8
Aufgabe 7
Übersetze die drei Zeilen in Hexcode und bestimme A und Z am Ende. Verwende die Referenz erst zur Kontrolle.

Zusammenfassung

Was muss man wissen und können?

Rechenbefehle verwenden häufig A als Akkumulator. ADD verändert A, die Quelle bleibt erhalten. Ein 8-Bit-Ergebnis wird auf 0 bis 255 begrenzt. CP verändert A nicht, setzt aber Flags. Bei Gleichheit wird das Zero-Flag gesetzt.

Was können anschließende Themen sein?

Flags werden besonders nützlich, wenn der nächste Befehl von ihnen abhängt. In der nächsten Lektion entstehen aus Vergleichen und Sprüngen die bekannten Verzweigungen und Schleifen.