Statusregister
Vereinfacht gesagt muss es möglich sein, ob beim Programmieren mit a+b auch wirklich a+b berechnet wurde (damit das eben nicht passiert)! Diese Information muss die Hardware liefern, und dafür ist das Statusregister der CPU verantwortlich.
Ein Statusregister enthält verschieden Bits, die nach jeder Rechnung aktualisiert werden. Mit gewissen Bits kann dann nach einer Rechnung beispielsweise überprüft werden, ob es bei einer Rechnung zu Überläufen kam. Da die Rechnung mit unserem Addierer sowohl als eine Rechnung mit nicht-negativen als auch vorzeichenbehafteten interpretiert werden kann, kann es auch zu zwei verschiedenen Arten von Überläufen kommen:
-
Ein CF (Carry Flag) zeigt an, dass es Überlauf gab, wenn man die Bitmuster als Unsigned-Integer interpretiert.
-
Ein OF ( Flag) zeigt an, dass es Überlauf gab, wenn man die Bitmuster als Signed-Integer interpretiert.
Wie man diese Bits setzt ist Inhalt dieser Session.
Video
Beispiel für 4-stellige Bitmuster
-
Man kann A = 1110 als Unsigned-Integer 14 oder als Signed-Integer -2 interpretieren.
-
Man kann B = 0001 als Unsigned-Integer 1 oder als Signed-Integer 1 interpretieren. Hier sind beide Interpretationen “gleich”.
-
Addiert man die Bitmuster A und B, dann liefert der Addierer das Ergebnis S = 1111. Die Rechnung kann man unterschiedlich interpretieren:
-
Als \(14 + 1 = 15\) bei der Interpretation als Unsigned-Integer und
-
als \(-2 + 1 = -1\) bei der Interpretation als Signed-Integer und
-
Hier stimmt die Rechnung bei beiden Interpretationen (deshalb wären hier CF und OF beide Null).