5 instrukcje arytmetyczne 53
Przykład:
Mnożenie dwóch stałych o wartościach lfiD i 29D:
Mul Ali:
MOV A,#1RD ;Ac #18, dziesiętnie, 18-29 - 522 = 20AH
MOV B,#29D ;B c= #29, dziesiętnie
MUL AB ;BA e= A* B
;stan rejestrów: B =* 2. A » OAH d znaczników: C = 0, OV ■ 1, P = 0
DA A Decimal Adjust Accumulator for Addition
lyziahmir. Jeśli (A3..A0 > 9) lub (AC » 1) to A3..A0 <= A3..A0 + 6
Jeśli (A7..A4 > 9) lub (C =* 1) to A7..A4 c= A7..A4 + 6
Struktura bajtów: Cykle
maszynowe:
1 1 0 1I0 1 0 Ol 1
Aihrsoiranic Mnemonik:
rejestrowe: DA A
Znaczniki: C. AC, P
Opis działania:
Instrukcja DA A stosowana do korekcji dziesiętnej znajdującej się w akumulatorze sumy liczb zapisanych w kodzie BCD. Instrukcja wykonywana jest w dwóch etapach:
• jeśli wartość mniej znaczącej tetrady akumulatora (bity A3..A0) jest większa od 9 lub znacznik przeniesienia połówkowego AC ■ 1 to do akumulatora dodawana jest wartość 6 korygująca 6 znaków (litery A..F) nie występujących w kodzie dziesiętnym, a stosowane w zapisie szestnastkowym,
• jeśli wartość bardziej znaczącej tetrady akumulatora (bity A7..A4) jest większa od 9 lub znacznik przeniesienia C = 1 to do akumulatora dodawana jest wartość 60H.
Jcślr po wykonaniu instrukcji DA A znacznik przeniesienia C = 1, sygnalizuje przekroczenie zakresu 1-bajtowych liczb zapisanych w kodzie BCD (0..99), do wyniku należy dodoać 100D.
Mikrokontroler 80(Q5I - programowanie
DEC argument Decrement
A <= A-l Rn c= Rn -1
Działanie (adr) e= (adr)-l
(Ri) (Rl) - 1
Adresowanie Mnemonik: Struktura bajtów. Cykle Znacz-
_ maszynowe niki:
rejestrowe: |
DEC |
A |
UL |
0 |
0 |
1 0 |
1 |
0 |
0 | |
1 |
p |
rejestrowe: |
DEC |
Rn |
0 |
0 |
0 |
1 1 |
r |
r |
_lI |
1 |
- |
bezpośrednie: |
DEC |
adr |
0 |
0 |
0 |
1 0 |
1 |
0 |
I |
1 |
- |
adr | |||||||||||
pośrednie: |
DEC |
@Ri |
0 |
0 |
0 |
1 0 |
1 |
1 |
Jj |
1 |
. |
Opis działania: |
Zmniejszenie o jeden zmiennej zawartej w:
• akumulatorze (A),
• rejestrze Rn, Rn=R0..R7,
• komórce wewnętrznej pamięci RAM adresowanej bezpośrednio adresem adr.
• komórce wewnętfznej pamięci RAM adresowanej pośrednio rejestrem Ri,
Ri = RO lub Rl.
Przykład 1:
Zmniejszenie o jeden zawartości 8-bitowcgo rejestru lub komórki pamięci wykonywane jest modulo 8 bilów:
Dec.Rl:
MOV R1,#0 ;R1 <= 0
DEC Rl ;R1 <= Rl -1, Rl = OFFH
Przykład 2:
W zestawie instrukcji DEC <bajt> brak instrukcji DEC DPTR, dlatego adresując tablice danych należy podawać rosnące wartości adresów (stosować instrukcję INC DPTR). Dekrementaq'ę wskaźnikowego rejestru danych (DPTR) należy potraktować jako odejmowanie jedności od zmiennej 2 bajtowej ponieważ instrukcja DEC <bajt> nie zmienia wskaźnika przeniesienia (O:
Mikrokontroler 80(C)5l - programowanie