11

11



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


| V 0 0 0 1 0 1 o ol


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



Wyszukiwarka

Podobne podstrony:
11 $ Instrukcje arytmetyczne Dec DPTR: MOV A.DI’L    ;A c= (DPL), mniej znaczący baj
13 3. Instrukcje arytmetyczne 43 3. Instrukcje arytmetyczne 43 Suma R4R5 R6R7: MOV A.R4 ADD A.
10 5 instrukcje arytmetyczne 53 Przykład: Mnożenie dwóch stałych o wartościach lfiD i 29D: Mul Ali:
13 5. Instrukcje arytmetyczne 43 5. Instrukcje arytmetyczne 43 Suma K4R5 R6R7: MOV A.R4 ADD A.
15 5 Instrukcje arytmetyczne 45 ADD A,#12H A.R7 ADDC A.D MOV R0J80H MOV SRO.A ;Ac= 12H ;A<=
17 5. Instrukcje arytmetyczne 47 INC argument Increment Działanie: A <= A +1 Rn c= Rn + 1 (
19 S Instrukcje arytmetyczne 49 Opis działania: Odejmowanie od zawartości akumulatora (A) znacznika
15 5 Instrukcje arytmetyczne 45 ;Ac= 12H ;A<= A ♦ R7 = 7AH .znaczniki: C*0, AC»0, OV*0, P»l ADDC
13 4 Instrukcje ba
10 5. Instiukcic arytmetyczne 53 Przykład: Mnożenie dwóch Całych o wartościach 18D i 29D: Mul Ali:
15 4 Instrukcje bajtowej wymiany danych 35 Pop_DPTR: POP DPH    ;DPH <= (SP) = 56

więcej podobnych podstron