$ Instrukcje arytmetyczne
Dec DPTR:
MOV A.DI’L ;A c= (DPL), mniej znaczący bajt rejestru DPTR
CI-R C ;CeO
SUIM A,#l ;A <=A * C -1, dekrcmentacja mniej
; znaczącego bajtu rejestru DPTR
MOV DPUA ;(DPL) c= A
JNC Dalej ;jeśli C=0 to skok do etykiety (adresu) Dalej,
;C=l oznacza pożyczkę i konieczna jest dekrementa-• ;cja bardziej znaczącego bajtu rejestru DPTR
DEC DI’H ;(DPH) <= (DPH) -1, dekrementacja bardziej
; znaczącego bajtu rejestru DPTR
Dalej:........................... ;dalsza część programu
DIV AB
Orintimir:
Divide Accumulator by B
A «= Int (A / B)
B <= Mod (A / B)
Aiłreamiwtie: Mnemonik: Struktura bajtów: Cykle
rejestrowe: DIV AB | 1' 0 0 OjO.l 0 0~| 4
Znaczniki: C. OV, P
Opia działania:
Dzielenie H-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:
OV = 1 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
Przykład I:
Dzielenie zawartości akumulatora (A = 251D) przez zawartość rejestru B (U = 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 <= Mod (251 / 18) - 17 ;wartośd znaczników. C = 0, OV =0, P = 1 |
Przykład 2: |
• |
Zamiana Liczby w kodzie szostnaslkowym z przedziału 0..99 na Bczbę w kodzie BCD:
Hex_BCD_99:
MOV A,#Liczba ;A <= Liczba w kodzie szesnastkowym, np 5FH = 95
MOV B,#10 ;Bc=10
DIV |
AB ;A <= InK5FH/10) = 9 jest liczbą dziesiątek, ;B <= Mod(5FH/10) = 5 jest liczbą jednośd |
MUL AB |
Multiply 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 |
Znaczniki: C, OV, P
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śd:
C = 0
OV = 1 jeśli iloczyn jest liczbą większą od 255, tzn. zawartość rejestru B jest
niezerowa. OV = 0 jeśli warunek nie jest spełniony. |
Mikrokontroler 80<C)5l - programowani©