Condition Code Register


Condition Code Register

Das Statusregister (auch Zustandsregister, engl. Condition Code Register, CCR) ist ein spezielles Register im Steuerwerk eines Mikroprozessors. Da man diese Bits auch als Flags bezeichnet, wird das Statusregister auch Flagregister genannt. Es enthält eine Reihe von Flags die von der arithmetisch-logischen Einheit (ALU) in Abhängigkeit von der zuletzt durchgeführten Rechenoperation (z. B. Überlauf, negatives Ergebnis) gesetzt werden. Einige Flags können auch durch direkte Anweisungen geändert werden. Manche Prozessoren − z. B. der 6502 − setzen die meisten Statusflags auch schon bei reinen Ladeoperationen.

Inhaltsverzeichnis

Verwendung

Bedingte (Sprung-)Anweisungen hängen ausschließlich von diesen Flags ab und einige Rechenoperationen der ALU werden vom Zustand der Flags beeinflusst.

Der Inhalt des Statusregisters lässt sich auf dem Stack ablegen, um ihn zu sichern. Dieses geschieht automatisch, wenn ein Interrupt aufgerufen wird, damit das Programm nach Beendigung des Interrupts ungestört weiter arbeiten kann.

Art und Umfang des Statusregisters ist abhängig von der CPU-Architektur. Eine Reihe von Flags treten jedoch in den meisten heutigen Mikroprozessoren auf. Zu diesen Flags zählen:

  • das Carry-Flag (oder auch Borrow-Flag)
  • das Zero-Flag
  • das Sign-Flag (auch Negative-Flag)
  • das Overflow-Flag
  • das Adjust-Flag (auch Auxiliary-Carry-Flag oder Half-Carry-Flag)
  • das Parity-Flag
  • das Interrupt-Flag
  • das BCD-Flag

Allgemeine Flags eines Statusregisters

Carry-Flag

Ist dieses Flag gesetzt, dann trat bei der letzten Rechenoperation ein Übertrag auf, wenn man von vorzeichenlosen Operanden ausgeht. War der letzte ausgeführte Befehl eine Schiebeoperation, so zeigt das Carry-Flag an, ob ein Bit 'rausgeschoben' wurde.

Zero-Flag

Ist dieses Flag gesetzt, dann war das letzte Rechenergebnis gleich null.

Bei einem Vergleichsbefehl werden zwei Operanden, ohne sie zu verändern, intern subtrahiert. Dann zeigt das Zero-Flag an, dass diese beiden Operanden gleich sind.

Sign-Flag

Der Einfachheit halber nutzen Mikroprozessoren das Zweierkomplement. So erkennt man negative Zahlen daran, dass das höchstwertige Bit gesetzt ist. Das Sign-Flag wird entsprechend diesem Bit gesetzt.

Overflow-Flag

Ist dieses Flag gesetzt, dann trat bei der letzten Rechenoperation ein Überlauf auf, wenn man von vorzeichenbehafteten Operanden ausgeht. Beim Vergleich (interne Subtraktion) von vorzeichenbehafteten Werten benötigt man bedingte Sprungbefehle, die neben dem Overflow-Flag auch vom Sign-Flag abhängen.

Adjust-Flag

Hat ein Mikroprozessor keine speziellen Rechenbefehle für dualkodierte Dezimalziffern (BCD), so ist häufig dieses Flag vorhanden. Es wird bei „normalen“ binären Rechenoperationen gesetzt, wenn ein Übertrag zwischen den Halbbytes auftritt; z. B. bei der Addition von 9 und 7 = 16: 10012 + 01112 = 1 00002. Dieses Flag zeigt dann an, ob das Ergebnis korrigiert werden muss. 10012 + 01112 = 00012*(101) + 01102*(100).

Andere Mikroprozessoren besitzen ein BCD-(Status-)Flag, mit dem man vorab einstellen kann, ob der Prozessor wie mit „normalen“ binären Zahlen oder wie mit dualkodierten Dezimalziffern zu rechnen hat.

Parity-Flag

Ist die Anzahl der Einsen (Quersumme) eines Ergebnisses in Binärdarstellung gerade, so wird das Parity-Flag gesetzt. Ist die Anzahl ungerade, so wird es gelöscht. (Siehe: Paritätsbit)

Interrupt-Enable-Flag

Dieses Flag ist kein Status-Flag, sondern ein Steuerungs-Flag. Wird es gelöscht, so werden Interrupts vom Prozessor ausgesetzt. Man löscht dieses Flag zu Beginn von Interrupt-Routinen (manche Prozessoren erledigen dies automatisch), damit diese ungestört bis zum Ende durchlaufen können. Der Prozessor führt nach dem Setzen des Interrupt-Enable-Flags erst noch eine Anweisung aus, bevor er wieder Interrupts zulässt. So kann man in einer Interrupt-Routine nach dem Setzten dieses Flags noch den RETURN-Befehl ausführen lassen.

Es gibt Interrupts, die vom Interrupt-Enable-Flag unberührt bleiben. Diese nennt man nicht-maskierbare Interrupts (NMI).

BCD-Flag

Dieses Flag ist kein Status-Flag, sondern ein Steuerungs-Flag. Wird es gesetzt, arbeitet die Prozessor-Arithmetik – die ALU – im BCD-Modus statt in rein binärer Arithmetik. Damit sollen vor allem Finanzrechnungen direkt im Dezimalsystem durchgeführt und Ungenauigkeiten bei Umrechnung von binären Fest- oder Gleitkommazahlen vermieden werden.

Siehe auch


Wikimedia Foundation.

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Register (Computer) — Als Register bezeichnet man in der Digital oder Computertechnik Speicherbereiche, die innerhalb eines Prozessors direkt mit der eigentlichen Recheneinheit verbunden sind und die unmittelbaren Operanden und Ergebnisse aller Berechnungen aufnehmen …   Deutsch Wikipedia

  • Status register — A status register or flag register (also: condition code register, program status word, PSW, etc.) is a collection of flag bits for a processor. An example is the FLAGS register of the x86 architecture. The status register is a hardware register… …   Wikipedia

  • International Register of Shipping — The International Register of Shipping or IS was established in 1993, and is an independent classification society which provides classification, certification, verification and advisory services. The International Register of Shipping also… …   Wikipedia

  • Machine code — or machine language is a system of impartible instructions executed directly by a computer s central processing unit. Each instruction performs a very specific task, typically either an operation on a unit of data (in a register or in memory, e.g …   Wikipedia

  • International Building Code — The International Building Code (IBC) is a model building code developed by the International Code Council (ICC). It has been adopted throughout most of the United States. HistorySince the early 1900s, the system of building regulations in the… …   Wikipedia

  • G-code — G Code, or preparatory code or function, are functions in the Numerical control programming language. The G codes are the codes that position the tool and do the actual work, as opposed to M codes, that manages the machine; T for tool related… …   Wikipedia

  • Popek and Goldberg virtualization requirements — The Popek and Goldberg virtualization requirements are a set of sufficient conditions for a computer architecture to efficiently support system virtualization. They were introduced by Gerald J. Popek and Robert P. Goldberg in their 1974 article… …   Wikipedia

  • POWER1 — The POWER1 is a multi chip CPU developed and fabricated by IBM that implemented the POWER instruction set architecture (ISA). It was originally known as the “RISC System/6000 CPU” or when an abbreviated form, the “RS/6000 CPU” before introduction …   Wikipedia

  • CCR — is a three letter acronym that could mean:Music* Creedence Clearwater Revival, a roots rock band * Cross Canadian Ragweed, a Red Dirt Country bandMedicine* Cardiocerebral Resuscitation A variation of Cardiopulmonary resuscitation * Continuity of… …   Wikipedia

  • CDC 3000 — The CDC 3000 series computers from Control Data Corporation were mid 1960s follow ons to the CDC 1604 and CDC 924 systems. Over time, a range of machines were produced divided into the upper 3000 series and the lower 3000 series . CDC phased out… …   Wikipedia