Stapelzeiger

Aus C64-Wiki
Wechseln zu: Navigation, Suche

Der Stapelzeiger ist ein 8-Bit-Register und wird auch SP (Stack Pointer) genannt. Er zeigt normalerweise auf die nächste freie Speicherstelle des Prozessorstapels.

Die Stack Page beim MOS 6502/MOS 6510 liegt bei $0100 bis $01FF (siehe Speicherbelegungsplan). Um vom Stackpointer auf die nächste freie Adresse des Stapels zu kommen, wird implizit immer $0100 zum Inhalt des Stackpointers addiert.

Die Transferbefehle TXS und TSX erlauben den Zugriff auf das Low-Byte des Stackpointers über das X-Register. Auf das oberste Element des Stapels kann somit so zugegriffen werden:

TSX
INC $0101,X

Diese Beispiel erhöht das zuoberst liegende Byte des Stapels um 1. De erste frei Stelle wird dann mit $0100,X adressiert (darf aber ohne Sperrung des Interrupts nicht verwendet werden).

Weitere Befehle, die den Stackpointer durch Stack-Manipulationen beeinflussen:

Darüber hinaus werden im Fall von Hardware-Interrupts wie IRQ und NMI der Stackpointer geändert.

Nach einem Hardware-Reset ist der Inhalt des Registers nicht definiert, weshalb das Register unbedingt initial gesetzt werden muss.