19

19



S Instrukcje arytmetyczne 49

Opis działania:

Odejmowanie od zawartości akumulatora (A) znacznika przeniesienia (O i zawartości:

•    rejestru Rn, Rn«R7..R0,

•    komórki wewnętrznej pamięci RAM adresowanej bezpośrednio adresem adr

•    komórki wewnętrznej pamięci RAM adresowanej pośrednio rejestrem Ri.

Ri - RO lub Rl.

•    8 bitowej danej.

Wynik dodawania przesiany jest do akumulatora (A). Znaczniki C, AC i OV przyjmują następujące wartości:

C -1 jeśli odejmowanie bitu 7 odbyło się z pożyczką, C » 0 jeśli warunek nie jest spełniony,

AC = 1 jeśli odejmowanie bitu 3 odbyło się z pożyczką, AC » 0 jeśli warunek nie jest spełniony,

OV « 1 jeśli odejmowanie bitu 6 odbyło się z pożyczką i odejmowanie bitu 7 odbyło się bez pożyczki lub

jeśli odejmowanie bitu 6 odbyło się bez pożyczki i odejmowanie bitu 7 . odbyło się z pożyczką,

OV = 0 jeśli warunki nie są spełnione.

Znacznik przeniesienia (O sygnalizuje przekroczenie zakresu liczb całkowitych bez znaku (0..255), a znacznik nadmiaru OV przekroczenie zakresu liczb całkowitych ze znakiem (-128..+127).

Przykład:

Odejmowanie dwóch zmiennych 2-bajtowych zawartych w komórkach pamięci RAM o adresach 30H i 40H. Różnica przesyłana jest w miejsce drugiej zmiennej. Obie wartości traktowane są jako liczby całkowite bez znaku:

Subb_Dana_16:

MOV Rl,#4lH

Rl <=41H

MOV A.31H

A c= (31H),

CLR C

Cc=0,

SUBB A,@R1

A <= A - C -

MOV @R1,A

(Rl) <= A,

DEC Rl

Rl <= Rl -1

MOV A.30H

A c= (3011),

SUBB A,@Rl

AcA-C-

MOV ©R1,A

(Rl)<= A,


adresuje mniej znacząc)' bajt drugiej zmiennej przesłanie mniej znaczącego bajtu pierwszej zmiennej zerowanie znacznika przeniesienia C Rl)

przesłanie mniej znaczącego bajtu różnicy KI = 40H

przesłanie bardziej znaczącego bajtu pierwszej zmiennej [Rl)

przesłanie bardziej znaczącego bajtu różnicy


Instrukcji DA A nic stosuje się przy odejmowaniu liczb zapisanych w kodzie BCD, nie może być również stosowana do bezpośredniej zamiany kodu liczby z szestnas-tkowego na BCD.

Przykład :

Dodawanie dwóch liczb zapisanych w kodzie BCD znajdujących się w rejestrach R3 (wartość 38) i R4 (wartość 86):

Dod_BCD*.

MOV A,R3 ADD A,R4


DA A


;Ac=R3 ;A <= A + R4

;R3 »    38 H - 0011 1000B

;R4 -    86H ~ 1000 0110B

;A    -    0BEH    =    1011    1110B    C-O.AC-O

;korekcja dziesiętna,

,-poniewai A3..A0 >9toAc=A + 6 ; A    »    0BEH    -    1011    1110B

;    6H    =»    0000    0110B

; A    -    0C4H    =    1100    0100B    C = 0

;korekcja dziesiętna,

.ponieważ A7..A4 > 9 to A c= A + 60H ; A    =    0C4H    =    1100    0100B

;    60H    =    OHO    0000B

; A    -    024H    -    0100    0100B    C = 1

Ustawienie znacznika przeniesienia C = 1 po instrukcji korekcji dziesiętnej DA A świadczy o przekroczeniu zakresu liczb 0..99. Znacznik wskazuje na brak w wyniku setek. I Prawidłowy wynik dodawania po uwzględnieniu znacznika przeniesienia (C) wynosi ‘ 124.


MUrrnlrnnfroW    - nr^c»r»mow>ni*»


Wyszukiwarka

Podobne podstrony:
19 5 Instrukcje aryimctyczni e Opis działania: Odejmowanie od zawartości akumulatora (A) znacznika
19 4 Instrukcje bajtowe) wymiany danych 39 Przykład: Przesianie zawartości czterech banków rejestró
17 5. Instrukcje arytmetyczne 47 INC argument Increment Działanie: A <= A +1 Rn c= Rn + 1 (
19 4. Instrukcje bajtowej wymiany danych 29 Grupa rozkazów MOVX dotyczy wymiany danych między mikro
19 4 Instrukcje ba
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 ;Ac= 12H ;A<= A ♦ R7 = 7AH .znaczniki: C*0, AC»0, OV*0, P»l ADDC
15 5 Instrukcje arytmetyczne 45 ADD A,#12H A.R7 ADDC A.D MOV R0J80H MOV SRO.A ;Ac= 12H ;A<=
11 51 Instrukcje arytmetyczne Dec. DPTR: MOV A.DPL CI-R C sunn a,#i MOV DrL.A jNC Dalej DEC
19 5. Instruktaż na stanowisku roboczym i nadzór nieprawidłowości jego powinny być od razu powiązan

więcej podobnych podstron