3. Instrukcje arytmetyczne 43
3. Instrukcje arytmetyczne 43
Suma R4R5 R6R7: MOV A.R4 ADD A.R6
MOV R6,A MOV A.R5
ADDC A,R7
MOV R7,A
;A <= R4 ;AcA + R6,
;przenie$ienie C zmienione przez sumę R4 + R6 ;R6 c= A, mniej znaczący bajt sumy ;Ac=R5
;rozkazy MOV <dest>,<scr> nie zmieniają C ;A c= A + C + R7,
.przeniesienie C z poprzedniego dodawania ;R7 c= A, bardziej znaczący bajt sumy
,<bajt> są mniej rozbudowane w stosunku do opcraćjTdodawania. W operacjach tych brak jest przede wszystkim odejmowania bez uwzględniania znacznika przeniesienia (O, który sygnalizuje pożyczkę. Odejmowanie zmiennych 1-bajtowych należy poprzedzić operacją kasowania znacznika przeniesienia (O, np. stosując instrukcję CLR C.
Ma uwagę zasługuje instrukcja zwiększania o jeden INCDPTR, inkrementacji, wskaźnikowego rejestru danych (DPTR), która jest jedyną operacją dodawania dla zmiennej 16-bitowej.
IJT i -a • > >• ' .«v ę
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 (8 mniej znaczących bitów wyniku). Podobne działanie ma instrukcja dzielenia zmiennej 8-bitowej, znajdującej się w akumulatorze przez zmienną 8-bitową znajdującą się w rejestrze B. DIV AB. Część całkowita ilorazu przesyłana jest do akumulatora, a reszta z dzielenia do rejestru B. Obie operacje wykonywane są w ciągu 4 cykli maszynowych i są najdłużej wykonywanymi rozkazami. Jeżeli operacje mnożenia i dzielenia dotyczą potęgi 2, to można je zastąpi.1 rozkazami przesunięć logicznych. Należy przy tym przeanalizować, która metoda da krótszy kod wynikowy lub która będzie szybsza.
Ostatnią rozważaną instrukcją jest instrukcja korekcji dziesiętnej DA A. Stasowana jest w operacjach dodawania dla liczb zapisanych w kodzie BCD. Nie może być stosowana do bezpośredniej zamiany liczby zapisanej w kodzie binarnym na liczbę zapisaną w kodzie BCD.
W dalszej części rozdziału przedstawiono pełny zestaw instrukqi arytmetycznych z komentarzami i przykładami zastosowań.
Mikrokontroler ttO(C)5l • programowanie
ORL argument_,argument_2
Logical Or for Byte
Działanie
A c A or
(adr)<=(adr) or
Adresowanie Mnemonik: Struktura bajtów: Cykle Znacz-
_ . maszynowe: niki:
rejestrowe: |
ORL |
A,Rn |
0 |
1 |
0 |
0 1 |
r |
r |
jj |
1 |
P |
bezpośrednie: |
ORL |
A,adr |
0 |
1 |
0 |
0 0 |
1 |
0 |
ll |
1 |
P |
adr |
1 | ||||||||||
pośrednie: |
ORL |
A,@Ri |
0 |
1 |
0 |
0 0 |
1 |
1 |
il |
1 |
1* |
natychmiastowe: |
ORL |
A,#dana |
0 |
1 |
0 |
l) 0 |
l |
0 |
1 |
P | |
L_ |
dana |
1 | |||||||||
bezpośrednie: |
ORL |
adr,A |
1° |
1 |
0 |
0 | 0 |
0 |
1 |
°l |
1 |
_ |
adr | |||||||||||
natychmiastowe: |
ORL |
adr,#dana |
1° |
1 |
0 |
0 | 0 |
0 |
I |
_u |
2 |
- |
adr
dana
Opis działania:
Suma logiczna zawartości:
• akumulatora (A) z zawartością:
-»rejestru Rn, Rn = R0..R7,
—► komórki wewnętrznej pamięci RAM adresowanej bezpośrednio adresem adr. -* komórki wewnętrznej pamięci RAM adresowane] pośrednio adresem zawartym w rejestrze Ri, Ri = R0 lub Rl.
8-bitowej danej.
Milrrntonrrolrr 9(W"\< i