Untitled53

Untitled53



98 10. Arytmetyka mikrokontrolerów

rozpoczynającego się od etykiety Duży jeśli A > 2Eh, a jeśli A £ 2Eh to do programu rozpoczynającego się etykietą Mały:

98 10. Arytmetyka mikrokontrolerów

Tutaj:

Mały:


CJNE A,#2Eh,Tutaj JC    Mały

JNZ    Duży


;jeśli A > 2Eh to C=0 ;skok jeśli C=1 ;skok jeśli A * 0


10.5 Mnożenie

Operacja mnożenia MUL AB wykonuje mnożenie dwóch zmiennych 8-bitowych, z których jedna znajduje się w akumulatorze A, a druga w rejestrze B. Wynik wykonanej operacji przesyłany jest do rejestru B (8 bardziej znaczących bitów wyniku) i akumulatora A (8 mniej znaczących bitów wyniku):

MUL AB    ;BA <— A ♦ B

Znacznik przeniesienia C i nadmiaru OV przyjmują następujące wartości:

C = 0 zawsze

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.


Obie zmienne traktowane są jako liczby całkowite bez znaku. Instrukcja mnożenia należy do najdłużej (wraz z instrukcja dzielenia) wykonywanych instrukcji. Trwa 4 cykle maszynowe.

Mnożenie dwóch stałych o wartościach 18 i 29 realizowane jest następująco:

Mul AB:

MOV A,#18d MOV B,#29d MUL AB


A <— 18, dziesiętnie,

B <- 29, dziesiętnie

BA <- A * B, 18 * 29 = 522 = 20Ah stan rejestrów:    A = OAh,

B = 2,

i znaczników:    C = 0 (zawsze zerowany),

OV = 1, ponieważ B * 0 P = 0

Jeżeli operacje mnożenia dotyczą potęgi 2 (np. 2k), to można je zastąpi rozkazami k-krotnego przesunięcia logicznego w lewo, np. przy mnożeniprzez 4 liczby przechowywanej w rejestrze R4:

CLR

C

;C 4- 0

RLC

A

;przesunięcie akumulatora A w lewo

Rl ('

A

przesunięcie akumulatora A w lewo

MOV

R4,A

;R4 <- A

W podanym przykładzie nie jest wykrywane i sygnalizowane przekroczenie zakresu liczby. Jeśli nie jest się pewnym zakresu mnożonej liczby, to bezpieczniejsze jest użycie instrukcji MUL AB.

Podobna w działaniu do rozkazu RLC A jest instrukcjia RL A, która także przesuwa w lewo zawartość akumulatora A ale w obrębie 8-bitów, a nie 9-bitów. Graficzne obie instrukcje przedstawić można w następujący sposób:

RL A


RLC A


10.6 Dzielenie

Instrukcja dzielenia DIV AB wykonuje dzielenie 8-bitowej zmiennej znajdującej się w akumulatorze A przez zmienną 8-bitową znajdującą się w rejestrze B. Część całkowita ilorazu przesyłana jest do akumulatora A, a reszta z dzielenia do rejestru B:

DIV AB    ;A 4— Int( A/B), iloraz

;B <— Mod( A/B ), reszta

Znacznik przeniesienia C i nadmiaru OV przyjmują następujące wartości:

C = 0 zawsze

OV = 1


OV = 0


w przypadku próby dzielenia przez zero, stan rejestrów A i B

jest nieokreślony,


jeśli dzielenie przebiegło prawidłowo


Obie zmienne traktowane są jako liczby całkowite bez znaku, a instrukcja wykonywana jest w ciągu 4 cykli maszynowych.

Przy zamianie 1-bajtowej liczby zapisanej w kodzie szesnastkowym z przedziału 0 .. 99 na liczbę zapisaną w kodzie BCD wykonywane są instrukcje:

Hex_BCD_99:

MOV

A,#5Fh

;A 4- 5Fh, zamieniana liczba w kodzie ; szesnastkowym,

MOV

B,#10

;B 4-10

D1V

AB

;A 4- Int(5Fh/10) - 9 jest liczbą dziesiątek, ;B 4- Mod(5Fh/10) = 5 jest liczbą jedności


Wyszukiwarka

Podobne podstrony:
Untitled53 98 10. Ary tmetyka mikrokontrolerów rozpoczynającego się od etykiety Duży jeśli A > 2E
Untitled52 96 10. Arytmetyka mikrokontrolerów różnić się więcej niż o -128 .. +127 w stosunku do adr
Untitled48 88 10. Arytmetyka mikrokontrolerów Z przytoczonych form zapisów liczb można wysnuć następ
Untitled49 90 10 Arytmetyka mikrokontrolerem Jeśli wykonane zostanie dodawanie dwóch zmiennych 1-baj
Untitled51 94 10. Arytmetyka mikrokontrolcrói 94 10. Arytmetyka
Untitled54 100 10. Arytmetyka mikrokontrolerów! Jeżeli operacje dzielenia dotyczą potęgi 2 (np.
Untitled50 92 10. Arytmetyka mikrokontrolen Znacznik C jest przeniesieniem między kolejnymi bajtami.
Untitled55 102 10. Arytmetyka mikrokontrolerów Korekcja dziesiętna A7 Ą : 0110 OOOOb Suma: A = 80h =
GRAFOMOTORYKA 6 LATKÓW (10) # Wyszukaj wyrazy rozpoczynające się literą „I”, narysuj je w pierwszej
Slajd17 (52) r     Wnioskowanie do tyłu rozpoczyna się od postawienia hipotezy (celu)
skanuj0452 (2) Rozdział 17. ♦ System news Kod rozpoczyna się od wywołania funkcji session_start, doł
Slajd17 (52) r     Wnioskowanie do tyłu rozpoczyna się od postawienia hipotezy (celu)

więcej podobnych podstron