90 10 Arytmetyka mikrokontrolerem
Jeśli wykonane zostanie dodawanie dwóch zmiennych 1-bajtowych (7Bh i 93h) oraz obie zmienne potraktować jako liczby całkowite bez znaku, to wynil dodawania jest następujący:
0111 101lb = 7Bh + 1001 001 lb = 93h 1^0000 1110b = 0Eh
Ustawienie znacznika przeniesienia C (C=l) świadczy o przekroczeniu zakres liczb całkowitych bez znaku 0..0FFh:
7Bh + 93h = lOHh > OFFh
znacznik przeniesienia połówkowego AC ma podobne znaczenie jak znacznik przeniesienia C ale dotyczy przeniesienia między cztere mniej znaczącymi i czterema bardziej znaczącymi bitami akumulato A. Jeśli wystąpi przeniesienie między bitami A3 i A4 w skrócie A4 wówczas ustawiany jest znacznik AC:
0010 Olllb = 27 BCD + 0001 lOOlb = 19 BCD
0100 OOOOb 1 46 BCD AC = 1
Znacznik ten wykorzystywany jest tylko w operacjach arytmetyczny wykonywanych dla liczb zapisanych w kodzie BCD, którym towarzy: instrukcja korekcji dziesiętnej DA A. Jeśli w akumulatorze znajduje się liczba (liczba dziesiętna zapisana w kodzie BCD) to dodanie liczby 19 (też licz dziesiętnej zapisanej w kodzie BCD) powinno dać wynik równy 4 Skorygowanie otrzymanego wyniku dodawania i uzyskanie poprawnej wyniku możliwe jest po wykonaniu instrukcji korekcji dziesiętnej DA A (patrz podrozdział 10.7).
001Ob = 82h
OV = C xor A716 = 1
Znacznik nadmiaru OV jest aktywny (przyjmuje wartość jedynki logicznej) jeśli wystąpiło przeniesienie między bitem i A7, tzn. A715, które zmieniło bit A7. Stan znacznika nadmiaru (OV) można określić za pomocą wyrażenia:
OV = C xor A715
Druga i trzecia sytuacja występuje przy obliczaniu iloczynu zawartości akumulatora A i rejestru 13 oraz ilorazu obu rejestrów.
• stan znacznika parzystości P jest taki, aby liczba jedynek w
akumulatorze A i znaczniku parzystości była parzysta. Znacznik ten ustawiany jest po każdej instrukcji zmieniającej stan akumulatora:
0111 llllb = 7Fh
+ 0000 OOOlb = Olh_
Ponieważ znacznik parzystości P jest modyfikowany po każdej instrukcji zmieniającej stan akumulatora A, dlatego również instrukcje przesłań mają na niego wpływ:
Dodawanie dwóch wykonanie instrukcji: |
8-bitowych | |
ADD |
A,Rn |
;A <- A |
ADD |
A,adr |
;A A |
ADD |
A,@Ri |
;A <— A |
ADD |
A,#dana |
;A A |
Przykładem
argumentów realizowane jest przez
+ Rn, Rn R0 .. R7 + (adr)
+ (Ri), Ri=0,1 + dana
sumy zawartości dwóch rejestrów R3 i R7 jest program:
Suma_R3 R7:
MOV A,R3 ;A <— R3
ADD A,R7 ;A <- A + R7, wynik dodawania
^nstrukcje te są przydatne tylko przy dodawaniu zmiennych 8-bitowych.
ts i przewiduje się dodawanie liczb wielobajtowych to przy dodawaniu a] ow najmniej znaczących wykorzystuje się rozkazy ADD ale już przy . awaniu następnych bajtów trzeba uwzględnić znacznik przeniesienia C, UzVć instrukcji ADDC.
znacznik nadmiaru OV informuje o:
przekroczeniu zakresu 8-bitowych liczb całkowitych ze znakiei -128D..+127D w operacjach dodawania i odejmowania,
-> iloczynie w-iększym od 255 przy obliczaniu iloczynu,
—> próbie dzielenia przez zero przy obliczaniu ilorazu.
0110 111 lb = 6Fh + 0001 001 lb = 13h