5. Instiukcic arytmetyczne 53
Przykład:
Mnożenie dwóch Całych o wartościach 18D i 29D:
Mul Ali:
MOV A,#1RD ;A e= #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 ,i znaczników; C = 0, OV ■ 1, P = 0
DA a Decimal Adjust Accumulator forAddition
l?rfohmr. 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 <= A7..A4 + 6
Xhruncanic Mnemonik:
Struktura bajtów:
Cykle
maszynowe
rejestrowe:
DA A
1 1 0 1 | 0 1 0 0~|
1
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ść fi 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. ’ v .
Jcśłr 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 |
A |
c= A-t |
Decrement |
Rn |
<= Rn -1 | ||
Działanie |
(adr) |
c= (adr) -1 | |
(Ri) |
e= (Ri) - 1 | ||
Adresowanie Mnemonik |
Struktura bajtów. |
Cykle Znacz-maszynowe niki: |
Przykład 1:
Zmniejszenie o jeden zawartości 8-bitowego rejestTu lub komórki pamięd wykonywane jest modulo 8 bilów:
Dcc.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śa adresów (stosować instrukcję INC DPTR). Dekrementację wskaźnikowego rejestru danych (DPTR) należy potraktować jako odejmowanie jednośd od zmiennej 2 bajtowej ponieważ instrukcja DEC <bajt> nie zmienia wskaźnika przeniesienia (O:
Mikrokontroler 80(C)5l - programowanie
rejestrowe: |
DEC |
A |
nr |
0 |
0 |
jJjL |
1 |
0 |
°l |
1 |
P |
rejestrowe: |
DEC |
Rn |
0 |
0 |
0 |
J±L |
r |
r |
_lI |
1 |
- |
bezpośrednie: |
DEC |
adr |
0 |
0 |
0 |
1 |o |
1 |
0 |
1 |
1 |
- |
adr | |||||||||||
pośrednie: |
DEC |
@Ri |
L°_ |
0 |
0 |
1 0 |
1 |
1 |
jJ |
1 |
- |
Opis działania: |
Zmniejszenie o jeden zmiennej zawarte) w:
• akumulatorze (A),
• rejestrze Rn, Rn=R0..R7,
• komórce wewnętrznej pamięd RAM adresowanej bezpośrednio adresem adr,
• komórce wewnęttznej pamięci RAM adresowanej pośrednio rejestrem Ri,
Ri 3 RO lub Rl.