www.wikidata.de-de.nina.az
Das Statusregister auch Zustandsregister englisch condition code register CCR oder Programmstatuswort englisch program status word PSW ist ein spezielles Register im Rechenwerk eines Mikroprozessors Da man diese Bits auch als Flags bezeichnet wird das Statusregister auch Flagregister genannt Es enthalt eine Reihe von Flags die von der arithmetisch logischen Einheit ALU in Abhangigkeit von der zuletzt durchgefuhrten Rechenoperation z B Uberlauf negatives Ergebnis gesetzt werden Einige Flags konnen auch durch direkte Anweisungen geandert werden Manche Prozessoren z B der 6502 setzen die meisten Statusflags auch schon bei reinen Ladeoperationen Inhaltsverzeichnis 1 Verwendung 2 Allgemeine Flags eines Statusregisters 2 1 Carry Flag 2 2 Zero Flag 2 3 Sign Flag Negative Flag 2 4 Overflow Flag 2 5 Parity Flag 2 6 Interrupt Enable Flag s 2 7 Adjust Flag 2 8 BCD Flag 3 CPU Architekturen ohne arithmetische Flags 4 Siehe auchVerwendung BearbeitenBedingte Sprung Anweisungen hangen ausschliesslich von diesen Flags ab und einige Rechenoperationen der ALU werden vom Zustand der Flags beeinflusst Der Inhalt des Statusregisters lasst sich auf dem Stack ablegen um ihn zu sichern Dieses geschieht automatisch wenn ein Interrupt aufgerufen wird damit das Programm nach Beendigung des Interrupts ungestort weiter arbeiten kann Art und Umfang des Statusregisters ist abhangig von der CPU Architektur Eine Reihe von Flags treten jedoch in den meisten heutigen Mikroprozessoren auf Zu diesen Flags zahlen das Carry Flag oder auch Borrow Flag das Zero Flag das Sign Flag bzw Negative Flag das Overflow Flag das Adjust Flag auch Auxiliary Carry Flag oder Half Carry Flag das Parity Flag das Interrupt Flag oder die Interrupt Flags das BCD FlagAllgemeine Flags eines Statusregisters BearbeitenCarry Flag Bearbeiten Ist dieses Flag gesetzt dann trat bei der letzten Rechenoperation ein Ubertrag auf wenn man von vorzeichenlosen Operanden ausgeht War der letzte ausgefuhrte Befehl eine Schiebeoperation so zeigt das Carry Flag an welchen Wert das rausgeschobene Bit hatte Zero Flag Bearbeiten Ist das Zero Flag gesetzt dann war das letzte Rechenergebnis gleich Null Bei einem Vergleichsbefehl werden zwei Operanden ohne sie zu verandern intern subtrahiert Dann zeigt das Zero Flag an ob diese beiden Operanden gleich sind Sign Flag Negative Flag Bearbeiten Heutige Mikroprozessoren verwenden zur Darstellung vorzeichenbehafteter Zahlen das Zweierkomplement Negative Zahlen erkennt man am gesetzten hochstwertigen Bit Das Sign Flag wird entsprechend diesem Bit gesetzt Overflow Flag Bearbeiten Ist das Overflow Flag gesetzt dann trat bei der letzten Rechenoperation ein Uberlauf auf wenn man von vorzeichenbehafteten Operanden ausgeht Beim Vergleich interne Subtraktion von vorzeichenbehafteten Werten benotigt man bedingte Sprungbefehle die neben dem Overflow Flag auch vom Sign Flag abhangen Parity Flag Bearbeiten Ist die Anzahl der gesetzten Bits beim letzten Rechenergebnis gerade Binardarstellung so wird das Parity Flag gesetzt Ist die Anzahl ungerade so wird es geloscht Bei x86 Prozessoren wird das Parity Flag nur uber das niederwertigste Byte gebildet Siehe auch Paritatsbit Interrupt Enable Flag s Bearbeiten Dieses Flag ist kein Status Flag sondern ein Steuerungs Flag Wird es geloscht so werden maskierbare bzw sperrbare Interrupts vom Prozessor ausgesetzt Man loscht dieses Flag zu Beginn von Interrupt Routinen manche Prozessoren erledigen dies automatisch damit diese ungestort bis zum Ende durchlaufen konnen Der Prozessor fuhrt nach dem Setzen des Interrupt Enable Flags erst noch eine Anweisung aus bevor er wieder Interrupts zulasst So kann man in einer Interrupt Routine nach dem Setzen dieses Flags noch den Return Befehl ausfuhren lassen Es gibt Interrupts die vom Status des Interrupt Enable Flags unberuhrt bleiben Diese nennt man nicht maskierbare Interrupts NMI Manche CPUs haben mehrere dieser Bits um Interrupts verschiedener Prioritaten sperren oder erlauben zu konnen Adjust Flag Bearbeiten Hat ein Mikroprozessor keine speziellen Rechenbefehle fur dualkodierte Dezimalziffern BCD so ist haufig dieses Flag vorhanden Es wird bei normalen binaren Rechenoperationen gesetzt wenn ein Ubertrag 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 binaren Zahlen oder wie mit dualkodierten Dezimalziffern zu rechnen hat BCD Flag Bearbeiten 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 binarer Arithmetik Damit sollen vor allem Finanzrechnungen direkt im Dezimalsystem durchgefuhrt und Ungenauigkeiten bei Umrechnung von binaren Fest oder Gleitkommazahlen vermieden werden CPU Architekturen ohne arithmetische Flags BearbeitenEinige RISC Architekturen haben keine ublichen Statusregister mit entsprechenden Flags Dazu gehoren MIPS ebenso der dem MIPS nachempfundene Altera Nios DEC Alpha und AMD 29000 Bei manchen CPU Befehlen werden die entsprechenden Status Flags etwa der Ubertrag carry in einem Universalregister etwa r8 als Bits gespeichert in anderen Fallen wie beim Erkennen eines arithmethischen Uberlaufs behilft man sich mit langeren Ersatzkonstrukten aus mehreren CPU Befehlen Siehe auch BearbeitenAssemblersprache Abgerufen von https de wikipedia org w index php title Statusregister amp oldid 228189212