<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Statusregister</id>
	<title>Statusregister - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Statusregister"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Statusregister&amp;action=history"/>
	<updated>2026-05-23T22:56:04Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Statusregister&amp;diff=290321&amp;oldid=prev</id>
		<title>imported&gt;HReuter: PSW nicht erst bei Mikroprozessoren, siehe Disk.</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Statusregister&amp;diff=290321&amp;oldid=prev"/>
		<updated>2025-10-01T20:39:02Z</updated>

		<summary type="html">&lt;p&gt;PSW nicht erst bei &lt;a href=&quot;/index.php/Mikroprozessor&quot; title=&quot;Mikroprozessor&quot;&gt;Mikroprozessoren&lt;/a&gt;, siehe &lt;a href=&quot;/index.php?title=Diskussion:Statusregister&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Diskussion:Statusregister (Seite nicht vorhanden)&quot;&gt;Disk.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Das &amp;#039;&amp;#039;&amp;#039;Statusregister&amp;#039;&amp;#039;&amp;#039; (auch &amp;#039;&amp;#039;&amp;#039;Zustandsregister&amp;#039;&amp;#039;&amp;#039;, {{enS|condition code register (CCR)}}, oder &amp;#039;&amp;#039;&amp;#039;Programmstatuswort&amp;#039;&amp;#039;&amp;#039;, {{enS|program status word (PSW)}}) ist ein spezielles [[Register (Computer)|Register]] im [[Rechenwerk]] eines [[Prozessor]]s. Da man diese [[Bit]]s auch als [[Flag (Informatik)|Flags]] bezeichnet, wird das Statusregister auch Flagregister genannt. Es enthält eine Reihe von Flags, die von der [[Arithmetisch-logische Einheit|arithmetisch-logischen Einheit]] (ALU) in Abhängigkeit von der zuletzt durchgeführten Rechenoperation (z.&amp;amp;nbsp;B. [[Arithmetischer Überlauf|Überlauf]], [[Positive und negative Zahlen|negatives Ergebnis]]) gesetzt werden. Einige Flags können auch durch direkte [[Anweisung (Programmierung)|Anweisungen]] geändert werden. Manche Prozessoren – z.&amp;amp;nbsp;B. der [[MOS Technology 6502|6502]] – setzen die meisten Statusflags auch schon bei reinen Ladeoperationen.&lt;br /&gt;
&lt;br /&gt;
== Verwendung ==&lt;br /&gt;
Bedingte [[Sprunganweisung|(Sprung-)Anweisungen]] hängen ausschließlich von diesen Flags ab und einige Rechenoperationen der [[Arithmetisch-logische Einheit|ALU]] werden vom Zustand der Flags beeinflusst.&lt;br /&gt;
&lt;br /&gt;
Der Inhalt des Statusregisters lässt sich auf dem [[Stapelspeicher|Stack]] ablegen, um ihn zu sichern. Dieses geschieht automatisch, wenn ein [[Interrupt]] aufgerufen wird, damit das [[Computerprogramm|Programm]] nach Beendigung des Interrupts ungestört weiter arbeiten kann.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* das [[Übertragsbit|Carry-Flag]] (oder auch Borrow-Flag)&lt;br /&gt;
* das [[Nullflag|Zero-Flag]]&lt;br /&gt;
* das Sign-Flag bzw. Negative-Flag&lt;br /&gt;
* das [[Überlaufbit|Overflow-Flag]]&lt;br /&gt;
* das Adjust-Flag (auch [[Hilfsübertragsflag|Auxiliary-Carry-Flag]] oder Half-Carry-Flag)&lt;br /&gt;
* das Parity-Flag&lt;br /&gt;
* das Interrupt-Flag oder die Interrupt-Flags&lt;br /&gt;
* das BCD-Flag&lt;br /&gt;
&lt;br /&gt;
== Allgemeine Flags eines Statusregisters ==&lt;br /&gt;
&lt;br /&gt;
=== Carry-Flag ===&lt;br /&gt;
&lt;br /&gt;
Ist dieses Flag gesetzt, dann trat bei der letzten Rechenoperation ein Übertrag auf, wenn man von vorzeichenlosen [[Operator (Mathematik)#Operand|Operanden]] ausgeht. War der letzte ausgeführte Befehl eine Schiebeoperation, so zeigt das [[Übertragsbit|Carry-Flag]] an, welchen Wert das rausgeschobene Bit hatte.&lt;br /&gt;
&lt;br /&gt;
=== Zero-Flag ===&lt;br /&gt;
&lt;br /&gt;
Ist das [[Nullflag|Zero-Flag]] gesetzt, dann war das letzte Rechenergebnis gleich Null.&lt;br /&gt;
&lt;br /&gt;
Bei einem Vergleichsbefehl werden zwei [[Operator (Mathematik)#Operand|Operanden]], ohne sie zu verändern, intern subtrahiert. Dann zeigt das Zero-Flag an, ob diese beiden Operanden gleich sind.&lt;br /&gt;
&lt;br /&gt;
=== Sign-Flag (Negative-Flag) ===&lt;br /&gt;
&lt;br /&gt;
Heutige Mikroprozessoren verwenden zur Darstellung vorzeichenbehafteter Zahlen das [[Zweierkomplement]]. Negative Zahlen erkennt man am gesetzten höchstwertigen Bit. Das Sign-Flag wird entsprechend diesem Bit gesetzt.&lt;br /&gt;
&lt;br /&gt;
=== Overflow-Flag ===&lt;br /&gt;
&lt;br /&gt;
Ist das [[Überlaufbit|Overflow-Flag]] gesetzt, dann trat bei der letzten Rechenoperation ein Überlauf auf, wenn man von vorzeichenbehafteten [[Operator (Mathematik)#Operand|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.&lt;br /&gt;
&lt;br /&gt;
=== Parity-Flag ===&lt;br /&gt;
&lt;br /&gt;
Ist die Anzahl der gesetzten Bits beim letzten Rechenergebnis gerade ([[Dualsystem|Binärdarstellung]]), so wird das Parity-Flag gesetzt. Ist die Anzahl ungerade, so wird es gelöscht. Bei [[x86-Prozessor]]en wird das Parity-Flag nur über das niederwertigste [[Byte]] gebildet.&lt;br /&gt;
{{Siehe auch|Paritätsbit}}&lt;br /&gt;
&lt;br /&gt;
=== Interrupt-Enable-Flag(s) ===&lt;br /&gt;
&lt;br /&gt;
Dieses Flag ist kein Status-Flag, sondern ein Steuerungs-Flag. Wird es gelöscht, so werden maskierbare bzw. sperrbare [[Interrupt]]s vom [[Prozessor]] ausgesetzt. Man löscht dieses Flag zu Beginn von Interrupt-[[Routine (Programmierung)|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 (Programmierung)|Anweisung]] aus, bevor er wieder Interrupts zulässt. So kann man in einer Interrupt-Routine nach dem Setzen dieses Flags noch den Return-Befehl ausführen lassen.&lt;br /&gt;
&lt;br /&gt;
Es gibt Interrupts, die vom Status des Interrupt-Enable-Flags unberührt bleiben. Diese nennt man nicht-maskierbare Interrupts (NMI).&lt;br /&gt;
&lt;br /&gt;
Manche CPUs haben mehrere dieser Bits, um Interrupts verschiedener Prioritäten sperren oder erlauben zu können.&lt;br /&gt;
&lt;br /&gt;
=== Adjust-Flag ===&lt;br /&gt;
Hat ein [[Mikroprozessor]] keine speziellen Rechenbefehle für [[BCD-Code|dualkodierte Dezimalziffern]] (BCD), so ist häufig dieses Flag vorhanden. Es wird bei „normalen“ binären Rechenoperationen gesetzt, wenn ein Übertrag zwischen den [[Nibble|Halbbytes]] auftritt; z.&amp;amp;nbsp;B. bei der [[Addition]] von 9 und 7 = 16: &amp;#039;&amp;#039;1001&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; + &amp;#039;&amp;#039;0111&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; = &amp;#039;&amp;#039;1 0000&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;. Dieses Flag zeigt dann an, ob das Ergebnis korrigiert werden muss. &amp;#039;&amp;#039;1001&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; + &amp;#039;&amp;#039;0111&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; = &amp;#039;&amp;#039;0001&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;*(10&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;) + &amp;#039;&amp;#039;0110&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;*(10&amp;lt;sup&amp;gt;0&amp;lt;/sup&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== BCD-Flag ===&lt;br /&gt;
Dieses Flag ist kein Status-Flag, sondern ein Steuerungs-Flag. Wird es gesetzt, arbeitet die Prozessor-Arithmetik – die ALU – im [[BCD-Code|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 [[Festkommazahl|Fest-]] oder [[Gleitkommazahl]]en vermieden werden.&lt;br /&gt;
&lt;br /&gt;
== CPU-Architekturen ohne arithmetische Flags ==&lt;br /&gt;
Einige [[RISC]]-Architekturen haben keine üblichen Statusregister mit entsprechenden Flags. Dazu gehören [[MIPS-Architektur|MIPS]] (ebenso der dem MIPS nachempfundene [[Altera Nios]]), [[DEC Alpha]] und [[AMD Am29000|AMD 29000]]. Bei manchen CPU-Befehlen werden die entsprechenden Status-Flags, etwa der Übertrag („carry“), in einem Universalregister (etwa r8) als Bits gespeichert, in anderen Fällen, wie beim Erkennen eines arithmetischen Überlaufs, behilft man sich mit längeren Ersatzkonstrukten aus mehreren CPU-Befehlen.&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Assemblersprache]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Mikroprozessortechnik]]&lt;/div&gt;</summary>
		<author><name>imported&gt;HReuter</name></author>
	</entry>
</feed>