Das Flag-Register wird bei diesen Operationen neu bestimmt:
Carry-Flag ist stets 0
Zero-Flag entsprechend dem A-Registerinhalt
Sign-Flag entsprechend dem Bit 7 des A-Registers
Paritäts-Flag entsprechend der Anzahl der 1-Bits des
Ergebnisses (P=1, wenn die Anzahl der 1-Bits geradzahlig
ist)
4.3.6. Spezielle arithmetische Hi1fsoperationen
DAA ; Dezimalkorrektur bei BCD-Verarbeitung
CPL ; Komplementieren des A-Registers (Einerkomplement)
A:=/A entspricht einer bitweisen Negation
NEG ; Negieren des A-Registers (Zweierkomplement>
A:=-A entspricht A:=/A+1
CCF ; Komplementieren des Carry-Flags, CY:=/CY
SCF ; Setzen des Carry-Flags, CY:=1
Für eine effektive Verarbeitung von Dezimalzahlen können diese
direkt
durch
Dabei können, wie dem nachfolgenden Beispiel zu entnehmen ist,
unkorrekte
Ergebnisse
wurde der DAA-Befehl zur Erkennung von Pseudoergebnissen und
zur anschließenden Korrektur nach arithmetischen Operationen
bereitgestellt. Der DAA-Befehl kann nach folgenden Befehlen
verwendet werden:
ADD, ADC, INC, SUB, SBC, DEC, NEG
Für die Funktion des DAA-Befehls übernimmt das Carry-Flag CY
für das höherwertige Halbbyte des A-Registers {H(A)} und das
Half-Carry-Flag H für das niederwertige Halbbyte des A-Re-
gisters {N(A)} die Überwachungsfunktion, d. h. ein Übertrag
aus dem niederwertigen Halbbyte steht im H-Flag, der aus dem
höherwertigen im CY-Flag.
Ein Beispiel soll die Wirkungsweise des DAA-Befehls verdeut-
lichen: In jedem Halbbyte steht eine Dezimalzahl im zugelas-
senen Wertebereich von 0.. .9.
Die Korrektur nach Additionen erfolgt in der Form:
N(A) > 9 oder H = 1 ===> A:=A+06H
H(A) > 9 oder CY= 1 ===> A:=A+60H
Bei Subtraktionen erfolgt die Korrektur in folgender Form:
(N-Flag = 1)
N(A) > 9 oder H = 1 ===> A:=A-06H
H(A) > 9 oder CY= 1 ===> A:=A-60H
Addition
und
auftreten
Subtraktion
verarbeitet
(Pseudoergebnisse).
47
werden.
Deshalb