Zeropage

Die Zeropage (also wörtlich „Seite Null“) ist ein Teil des Adressraumes einer CPU, für den es eine kompaktere Darstellung von Adressen oder bestimmter Adressierungsmodi überhaupt erst gibt. Sie stellt keinen alternativen Adressraum wie z. B. beim Zilog Z8 oder beim Sharp SC61860 dar.

6502

Für den Mikroprozessor MOS Technology 6502 (dessen Variante 6510 im bekannten Commodore 64 verbaut war) besteht die Zeropage aus den ersten 256 Byte des Hauptspeichers, in dem sich beim C64 RAM wie IO-Ports befinden.

Diese Zeropage ist für Maschinenprogramme dieses Prozessors von großer Bedeutung, weil manche Adressierungs-Modi nur in bzw. mit diesem Bereich angewandt werden können. Zwei aufeinanderfolgende Bytes in der Zeropage können jede beliebige Adresse bis 64 KByte darstellen (von Hex 0000 bis Hex FFFF). Dies wird bei der sogenannten indirekten Adressierung verwendet, indem sie als Basisadresse für den Zugriff auf eine andere Speicherstelle interpretiert wird.

Beispiele:

Der Assemblerbefehl LDA ($FE),Y bedeutet:

  Lies den Wert der beiden Speicheradressen Hex FE und Hex FF aus und bilde daraus
  eine absolute Speicheradresse, dann addiere den Inhalt des Y-Registers dazu,
  und fülle den Akkumulator mit dem Inhalt der so gebildeten absoluten Adresse.
  („indirekt-indizierte“ Adressierung mit dem Y-Register)

Der Assemblerbefehl LDA ($F0,X) bedeutet:

  Addiere den Inhalt des X-Registers zum Hex-Wert F0 und bilde daraus eine Adresse
  (in der Zeropage), dann lies den Inhalt dieser und der darauf folgenden Adresse,
  bilde daraus eine absolute Speicheradresse, und fülle den Akkumulator mit dem
  Inhalt der so gebildeten absoluten Adresse.
  („indiziert-indirekte“ Adressierung mit dem X-Register)

Wenn sich also in der Zeropage die Werte von Hex FE oder Hex FF (bzw. die Werte in der Sprungzieltabelle ab Hex F0) ändern, so ändert sich die absolute (oder effektive) Adresse, welche ausgelesen wird. Diese sogenannte indirekte Adressierung kann bei diesem Prozessortyp nur über die Zeropage durchgeführt werden. Die Zeropage wirkt dabei wie eine Registerbank mit 128 16-Bit-Indexregistern.

Andere Prozessoren

Auch bei anderen Mikroprozessoren haben jene Speicherbereiche, die physikalisch gesehen am Anfang des Speichers stehen, oft eine spezielle Bedeutung, allerdings auch gänzlich andere, wie z. B. der festgelegte Ort für Reset- und Interrupt-Vektoren (beim Motorola 68000) oder der beim Reset angesprungene Programmteil (beim Zilog Z80) usw. Bei diesen Prozessoren wird dieser Speicherbereich auch nicht unbedingt als Zeropage bezeichnet.