05 Prüfungsvorbereitung: Maschinensprache

Einstieg in das Thema

Worum geht es?

In der Prüfung untersuchst, ergänzt und verbesserst du Programme. Du entwickelst außerdem kleine eigene Programme. Die Befehlsreferenz darfst du dabei verwenden; Befehle auswendig zu lernen ist nicht das Ziel.

Was ist das Ziel?

Du kannst Register- und Speicherzustände verfolgen, Fehler begründet korrigieren und bekannte Programmierideen in kurze Z80-Programme übertragen.

Erarbeitung

Stufe 2 – Beispiel mit Lösung

Untersuche das Programm. Es soll A von 3 bis 0 herunterzählen, läuft aber nicht wie beabsichtigt.

LD A,3 DEC A JR Z,2 HALT

Lösung: Nach dem ersten `DEC A` enthält A den Wert 2. Das Zero-Flag ist nicht gesetzt, daher springt `JR Z,2` nicht zurück. Richtig ist `JR NZ,2`. Dann wird zurückgesprungen, solange A noch nicht 0 ist.

Stufe 2 – Zweites Beispiel mit Lösung

Bestimme A, B und Speicherzelle 1024 am Ende.

LD A,7 LD B,A ADD A,B LD (1024),A LD A,0

Lösung: B erhält eine Kopie der 7. Danach wird B zu A addiert, also enthält A zunächst 14. Dieser Wert wird in Speicherzelle 1024 geschrieben. Die letzte Zeile setzt nur A auf 0. Am Ende gilt: A=0, B=7 und Speicherzelle 1024 enthält 14.

Stufe 2 – Aufgaben ohne Lösung

Aufgabe 1
Ein Wert aus Speicherzelle 1025 soll gelesen werden. Finde und korrigiere den Fehler in `LD A,1025` und erkläre die Bedeutung der Korrektur.
Aufgabe 2
Bestimme A und das Zero-Flag nach `LD A,250`, `ADD A,6`, `CP 0`. Begründe das Ergebnis mithilfe der Registergröße.
Aufgabe 3
Ein Programm soll bei Ungleichheit zu Adresse 12 springen. Ergänze: `LD A,8`, `CP 5`, `...`, und erkläre die verwendete Bedingung.

Stufe 3 – Beispiel mit Lösung

Entwickle ein Programm, das den Wert aus Speicherzelle 1024 liest, 5 addiert, das Ergebnis in Speicherzelle 1025 schreibt und danach anhält.

Lösung: Zuerst wird der Inhalt der Quelladresse geladen. Die Addition verändert A. Anschließend wird A an der Zieladresse gespeichert.

LD A,(1024) ADD A,5 LD (1025),A HALT

Stufe 3 – Zweites Beispiel mit Lösung

Entwickle eine Schleife, die A von 4 bis 0 herunterzählt.

Lösung: `DEC A` verändert den Zähler. Solange das Ergebnis nicht 0 ist, springt `JR NZ` zurück zur Adresse 2. Bei 0 wird HALT erreicht.

LD A,4 DEC A JR NZ,2 HALT

Stufe 3 – Aufgaben ohne Lösung

Aufgabe 4
Schreibe ein Programm, das 10 in B sichert, A auf einen anderen Wert setzt und später den gesicherten Wert wieder nach A kopiert.
Aufgabe 5
Entwickle ein Programm, das bei A gleich 15 zu einem späteren `INC A` springt. Bei Ungleichheit soll das Programm ohne Erhöhung enden. Verwende die vom Applet berechneten Adressen.
Aufgabe 6
Erzeuge mit zwei Schreibzugriffen auf die Bildschirmadressen 1056 und 1057 ein selbst gewähltes Muster. Notiere vorher die beiden Binärbytes und prüfe anschließend die Darstellung.

Zusammenfassung

Checkliste

  • Prozessor, Speicher, Register und Program Counter erklären
  • Opcode, Wertebytes und Adressbytes unterscheiden
  • Werte mit LD kopieren sowie Klammern bei Speicherzugriffen beachten
  • Little Endian bei 16-Bit-Adressen erkennen
  • ADD, INC, DEC und 8-Bit-Überlauf verfolgen
  • CP und Zero-Flag erklären
  • absolute und relative Sprünge unterscheiden
  • Z und NZ korrekt verwenden
  • Verzweigungen und Zählschleifen nachvollziehen
  • Fehler systematisch mit Step eingrenzen

Plane bei eigenen Programmen zuerst Registerbelegung, Speicheradressen und Programmwege. Prüfe anschließend im Einzelschritt, ob PC, Register und Speicher nach jedem Befehl den erwarteten Zustand besitzen.