Programmzähler

Aus C64-Wiki
Wechseln zu: Navigation, Suche
Der Program Counter (PC; erste Spalte) im Maschinensprachemonitor "TEDMON" auf dem Plus/4.

Der Programmzähler bzw. der "Program Counter" (kurz: PC; siehe auch TEDMON ab BASIC 3.5 und TIM) ist ein Register im 6502- und im 6510-Prozessor.

Er ist das einzige Register der CPU, das nicht 8 sondern 16 Bit breit ist. Das ist zwingend notwendig, da der PC die RAM-Adresse des aktuell laufenden Befehls enthält. Das Register muss also mindestens 65536 Byte adressieren können, was mit 8 Bit nicht möglich wäre.

Der Wert des PC wird auf den Adressbus ausgegeben, wenn die CPU 6510 einen Befehl aus dem Programmspeicher holt. Danach erhöht die CPU den PC automatisch, um die Operanden der nächsten Adresse zu verarbeiten. Ein Programmierer kann auch auf den PC derart Einfluss nehmen, indem Anweisungen angeben werden, die den Ablauf des Programms verändern, wie etwa zu gewissen Adressen springen, also zu diesen Adressen verzweigen oder eine Unterbrechung auslösen (BRK). Dafür gibt es u.a. verschiedene Sprungbefehle, wie z.B. den Assemblerbefehl JMP.
Ebenso ist eine Unterbrechung seitens der Hardware (Interrupt) möglich, die vorübergehend zu einer Interrupt Service Routine (ISR) verzweigt.

Wenn man eine Speichererweiterung oder auch ein großes ROM am C64 verwendet, kann der Programmzähler nicht mehr auf gewohnte Art adressieren. Die übliche Methode, um die 64-Kbyte-Grenze zu umgehen, ist der Wechsel zwischen verschiedenen Speicherbänken, sogenanntes Bankswitching, das der C64 auch im Normalbetrieb in vielen Bereichen einsetzt.


Weblinks[Bearbeiten]

WP-W11.png Wikipedia: Befehlszähler
WP-W11.png Wikipedia: Register (Computer)
WP-W11.png Wikipedia: Harvard-Architektur
WP-W11.png Wikipedia: Von-Neumann-Architektur