51
' Instrukcje arytmetyczne
Dec. DPTR:
MOV A.DPL CI-R C sunn a,#i
MOV DrL.A jNC Dalej
DEC DPH
Dalej:.
A <= (DPL), mniej znaczący bajt rejestru DPTR C<=0
A <=A - C -1, dekrcmentacja mniej
znaczącego bajtu rejestru DPTR
(DPL) <= A
jeśli C=0 to skok do etykiety (adresu) Dalej,
C=1 oznacza pożyczkę i konieczna jest dekrementa-cja bardziej znaczącego bajtu rejestru DfTR (DPI!) <= (DPH) -1, dekrementacja bardziej znaczącego bajtu rejestru DPTR dalsza część programu
DIV AB Divide Accumulator by B
Ozńibmrr; A e= Int (A / B)
B <r Mod (A / B)
Adretmnanic Mnemonik:
Struktura bajtów:
Cykle
maszynowe
rejestrowe: DIV AB
Znaczniki: C, QV, P
Opi$ ilzialania:
Dzielenie 8-bitowych liczb całkowitych bez znaku. Dzielna zawarta jest w akumulatorze (A), a dzielnik rejestrze B. Iloraz przesyłany jest do akumulatora (A), a reszta z dzielenia do rejestru B.
Znaczniki C i OV przyjmują następujące wartośd:
C = U
OV = l w przypadku próby dzielenia przez zero (stan rejestrów A i B jest nieokreślony),
OV = 0 jeśli dzielenie przebiegło prawidłowo
Mikrokontroler 80(C)5I - programowanie
5. Instrukcje arytmetyczne
52
Przykład J:
Dzielenie zawartości akumulatora (A = 251D) przez zawartość rejestru B (B = 18D): Div_AB:
MOV A,#251D ;A <= 251D, dziesiętnie, 251 = (13 • 18) + 17
MOV B,#18D ;B c= 18D, dziesiętnie
DIV |
AB ;A <= Int (251 / 18) = 13, B o Mod (251 / 18) - 17 ;wartośd znaczników: C = 0, OV =0, P = 1 |
Przykład 2: |
Zamiana Liczby w kodzie szestnastkowym z przedziału 0..99 na Flczbę w kodzie BCD:
Hex_BCD_99:
MOV A,#Liczba ;A c= Liczba w kodzie szestnastkowym, np 5FH = 95 MOV B,#10 ;B<=10
DIV |
AB ;A <= lnt(5FH/10) = 9 jest liczbą dziesiątek, ;B <= Mod(5FH/10) = 5 jest liczbą jedności |
MUL AB |
Mułtiply Accumulator by B |
Działanie |
BA <= A • B |
Adresowanie |
Mnemonik: Struktura bajtów: Cykle maszynowe |
rejestrowe: |
MUL AB ' 1 0 1 0 | 0 1 0 0 | 4 |
ZnacznAi: C, OV, V
Opis działania:
Mnożenie 8-bitowych liczb całkowitych zawartych w akumulatorze (A) i rejestrze B. Bardziej znacząca część wyniku przesyłana jest do rejestru B, a część mniej znacząca do akumulatora (A).
Znaczniki C i OV przyjmują następujące wartości:
C = 0
OV = 1 jeśli iloczyn jest liczbą większą od 255, tzn. zawartość rejestru B jest
niezerowa, OV = () jeśli warunek nie jest spełniony. Mikrokontroler 8(XC)5l - programowanie |