MCS-51
Rozkazy asemblerowe

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.