Die CPU, Register und Flags

Aus CBMPET.DE

Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Die 6502 CPU

Aufbau des Prozessors

Akkumulator
7 6 5 4 3 2 1 0
X-Register
7 6 5 4 3 2 1 0
Y-Register
7 6 5 4 3 2 1 0
Statusregister
N V - B D I Z C
Stapelzeiger
7 6 5 4 3 2 1 0
Programmzähler
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0


Akkumulator

Der Akkumulator ist das wichtigste Register des Prozessors. In ihm laufen alle arithmetischen und logischen Operationen sowie fast alle Vergleiche ab. Die meisten Adressierungsarten der Befehle, zu denen wir noch kommen werden, lassen sich nur in Verbimdung mit dem Akkumulator durchführen.


Register

Das X-Register, auch oft als Indexregister bezeichnet, wird hauptsächlich dazu verwendet, als Index für den Akkumulator, z.B. bei der Abarbeitung von Tabellen, gute Dienste zu leisten. Weiterhin können auch Vergleichsoperationen durchgeführt werden. Als einziges Register des Prozessors kann man es dazu benutzen, den Stapelzeiger zu verändern.

Das Y-Register dient ähnlichen Zwecken wie das X-Register. Auch hiermit lassen sich Vergleiche anstellen, den Stapelzeiger kann man jedoch nicht verändern.

Stapelzeiger

Das Stackpoint-Register, auch Stapelzeiger genannt, enthält einen 8-Bit-Zeiger auf den sogenannten Stack. Hierbei handelt es sich um einen besonderen Adressbereich von $100-01ff, der vom Prozessor als Speicher für wichtige Daten wie Rücksprungadressen von Unterprogrammen verwendet wird.

Flags

Das Statusregister enthält 7 sogenannte Flags, die vom Prozessor gelöscht oder gesetzt werden können. Sie geben Auskunft über das Ergebnis des letzten ausgeführten Befehls und sind einfach abfragbar. Viele Sprungbefehle basieren z.B. auf dem Zustand eines bestimmten Flags.

C - Carry : Das Carry-Flag dient dazu, anzuzeigen, ob bei einer Rechenoperation ein Über- oder Unterlauf aufgetreten ist.

Z - Zero : Das Zero-Flag wird vom Prozessor immer dann gesetzt, wenn das Ergebnis einer Operation Null ist.

I - Interrupt : Dieses Flag bestimmt, ob ein sogenannter maskierbarer Interrupt erlaubt ist.

D - Dezimal : Neben dem normalen Binärmodus kann der Prozessor auch im Dezimalmodus rechnen.

B - Break : Das Break-Flag zeigt an, ob der Prozessor auf den Break-Befehl gestoßen ist.

V - Overflow : Durch dieses Flag werden Über- bzw. Unterläufe beim Rechnen mit vorzeichenbehafteten Zahlen angezeigt.

N - Negativ : Das Negativ-Flag zeigt an, ob das Ergebnis einer Operation größer als 127 ist, ob also das 7. Bit gesetzt ist.

Programmzähler

Die 6502-CPU verfügt über 16 Adressleitungen und kann daher 2^16=65536 Bytes nutzen. Der Programmzähler zeigt an, an welcher Speicherstelle die CPU gerade mit der Befehlsabarbeitung ist. Der Programmcounter ist vergleichbar mit der BASIC-Zeile, die gerade ausgeführt ist. Dieser muss 16bit = 2Byte groß sein. Die Bits 0-7 sind das niederwertige Byte und die Bits 8-15 sind das höherwertige Byte.

Beispiel:
$d020 bedeutet:
$20 ist das niederwertige Byte
$d0 ist das höherwertige Byte

Quellennachweis

Dieser Text wurde weitestgehend aus "Maschinensprache für den C64" übernommen.

Persönliche Werkzeuge