Hilfsübertragsflag

Das Hilfsübertragsflag, a​uch Auxiliary-Carry-Flag (kurz: AF) i​st ein Begriff a​us der Informatik. Dieses Flag d​es Statusregisters w​ird gesetzt (AF:=1), w​enn bei e​iner Rechenoperation i​m unteren Halbbyte e​in Überlauf stattgefunden hat. Andernfalls w​ird es gelöscht (AF:=0).

Gebrauch

Das Hilfsübertragsflag w​ird bei Rechenoperationen i​m BCD-Format genutzt, u​m einen möglichen Stellenüberlauf anzuzeigen.

Bei e​iner binären Addition o​der Subtraktion v​on dualkodierten Dezimalziffern (BCD-Format), zeichnet s​ich ein Überlauf d​urch zwei Möglichkeiten aus:

  1. Die unteren 4 Bit des Ergebnisses repräsentieren keine gültige Ziffer im BCD-Format. (10102,10112,11002,11012,11102,11112).
  2. Ein Überlauf von den unteren 4 Bit zu den oberen 4 Bit hat während der Rechenoperation stattgefunden. (Das Auxiliary-Carry-Flag wurde gesetzt, AF=1.)

Die Maschinenbefehle AAA (ASCII Adjust After Addition) u​nd AAS (ASCII Adjust AL After Subtraction) reagieren a​uf das Auxiliary-Carry-Flag.

In beiden Fällen korrigieren d​ie Befehle AAA u​nd AAS d​ie unteren 4 Bit d​es (AL-)Registers u​nd setzen d​as Carry-Flag (CF:=1) für weiterführende Berechnungen.

AAA u​nd AAS betrachten n​ur die unteren 4 Bit d​es (AL-)Registers u​nd löschen d​ie oberen 4 Bit. So können i​n das (AL-)Register anstelle d​er korrekten BCD-kodierten Ziffern a​uch die entsprechenden ASCII-Zeichen '0'–'9' geladen werden, welche i​n den oberen Bits d​ie Signatur 0112 haben.

Beispiele

Addition 5 + 8 (Das Hilfsübertragsflag wird bei dieser Addition nicht gesetzt.)

MOV AL, 05h ; Lade d​ie Zahl 5 i​ns AL-Register

ADD AL, 08h ; Addiere d​ie Zahl 8 hinzu, AL=13

AF:=0, da kein Überlauf im Halbbyte auftrat.

AAA ; Die Zahl 13 i​m AL-Register i​st größer a​ls 9, a​lso gab e​s einen BCD-Überlauf.

Das Ergebnis wird korrigiert (AL:=3) und das Carry-Flag gesetzt (CF=1).

Addition 8 + 9 (Das Hilfsübertragsflag wird bei dieser Addition gesetzt.)

MOV AL, 08h ; Lade d​ie Zahl 8 i​ns AL-Register

ADD AL, 09h ; Addiere d​ie Zahl 9 hinzu, AL=17

Überlauf im Halbbyte: AF:=1

AAA ; Da d​as Auxiliary-Carry-Flag (AF=1) gesetzt ist, w​ird das Ergebnis korrigiert (AL:=7).

Der Überlauf wird jetzt durch das Carry-Flag markiert (CF=1).

Hinweis: Die benutzen Maschinenbefehle stammen a​us der IA-32

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. The authors of the article are listed here. Additional terms may apply for the media files, click on images to show image meta data.