Zeropage

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Die Zeropage (also wörtlich „Seite Null“) bezeichnet einen eng begrenzten Adressraum innerhalb des RAM- oder ROM-Speichers (für einen Mikroprozessor), der physisch gesehen aus den ersten Bytes oder dem ersten Block oder eben der ersten „Seite“ des Speichers besteht.

6502[Bearbeiten]

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 RAM-Speichers.

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[Bearbeiten]

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.