Opis instrukcji ADDC
Instrukcja dodaje do zawartości akumulatora wartość określoną przez drugi argument oraz wartość bitu znacznika przepełnienia CY umieszczając wynik operacji w akumulatorze. Podczas wykonywania operacji ustawiane są znaczniki CY oraz AC w rejestrze PSW, kiedy odpowiednio wystąpi przeniesienie z bitu 7 lub bitu 3. W przeciwnych przypadkach znaczniki te są zerowane. Przy dodawaniu liczb całowitych bez znaku, ustawienie znacznika CY sygnalizuje jednocześnie wystąpienie przepełnienia wyniku.
Natomiast znacznik OV jest ustawiany jeśli występuje przeniesienie z bitu 6, ale nie ma przeniesiania z bitu 7 lub wystąpiło przeniesienie z bitu 7, ale nie było przeniesienia z bitu 6. W przeciwynych przypadkach bit OV jest zerowany. Przy dodawaniu liczb całkowitych ze znakiem, znacznik OV wskazuje powstanie wyniku ujemnego jako sumy dwóch wartości dodatnich lub dodatniego wyniku dwóch wartości ujemnych.
Dostępne są cztery tryby adresowania drugiego argumentu operacji: rejestrowe, bezpośrednie, rejestrowe pośrednie oraz natychmiastowe.
Przykład
Jeśli przed wykonaniem instrukcji w akumulatorze znajduje się wartość C3h (11000011b), natomiast w rejestrze R0 wartość AAh (10101010b), a znacznik CY jest ustawiony, to po wykonaniu instrukcji
ADDC A,R0
odpowiadającej następującej operacji
ACC: 11000011B R0: 10101010B CY: +00000001B -------------- ACC: 01101101B
w akumulatorze znajdzie się wartość 6Eh (01101110b). Jednocześnie podczas wykonywania instrukcji zostanie wyzerowany znacznik AC, natomiast znaczniki CY i OV zostaną ustawione.
Kodowanie instrukcji
Zapis mnemoniczny:
ADDC A,Rn
Kod:
b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 |
---|---|---|---|---|---|---|---|
0 | 0 | 1 | 1 | 1 | n2 | n1 | n0 |
gdzie n2-n0 jest zapisem binarnym numeru rejstru roboczego użytego jako drugi argument instrukcji.
Zapis mnemoniczny:
ADDC A,addr8
Kod:
b15 | b14 | b13 | b12 | b11 | b10 | b9 | b8 | b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | a7 | a6 | a5 | a4 | a3 | a2 | a1 | a0 | |
gdzie b7-b0 jest zapisem binarnym adresu addr8.
Zapis mnemoniczny:
ADDC A,@Ri
Kod:
b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 |
---|---|---|---|---|---|---|---|
0 | 0 | 1 | 1 | 0 | 1 | 1 | i |
gdzie i jest numerem rejestru roboczego (0 lub 1) użytego do adresowania pośredniego w drugim argumencie instrukcji.
Zapis mnemoniczny:
ADDC A,#data8
Kod:
b15 | b14 | b13 | b12 | b11 | b10 | b9 | b8 | b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | d7 | d6 | d5 | d4 | d3 | d2 | d1 | d0 | |
gdzie d7-d0 jest zapisem binarnym wartości data8 będącej drugim argumentem instrukcji.