3 Lisu instrukcji mikrokontrolera . uwagi ogólne 23
• znacznik przeniesienia połówkowego AC ma podobne znaczenie jak znacznik przeniesienia (C) ale dotyczy przeniesienia między mniej znaczącą i bardziej znaczącą tetradą akumulatora. Jeśli wystąpi przeniesienie między bitami A3 i A4 w skróde A413, wówczas ustawiany jest znacznik AC. Znacznik ten wykorzystywany jest tylko w operacjach arytmetycznych wykonywanych dla liczb zapisanych w kodzie BCD, którym towarzyszy instrukcja korekqi dziesiętnej DA A.
• znacznik nadmiaru OV informuje o:
-* przekroczeniu zakresu 8-bitowych liczb całkowitych ze znakiem, -128D..+127D, -* iloczynie większym od 255 przy mnożeniu dwóch wartości,
-> próbie dzielenia przez zero przy obliczaniu ilorazu.
Przykładem pierwszego znaczenia jest operacja dodawania dwóch zmiennych:
MOV A,#7FH ;Ac=#7FH
ADD A,#l ;A «= A + 1 - 80H »-128D, OV-l
.•zakres liczb wynosi: -128D..+127D
Znacznik nadmiaru OV jest aktywny (przyjmuje wartość jedynki logicznej) jeśli wystąpiło przeniesienie między bitem Ag i A7, tzn. Ayig, które zmieniło bit A7. Stan znacznika nadmiaru (OV) można określić za pomocą wyrażenia:
OV-C xor A7ł6
Przykładem drugiej sytuacji jest obliczanie iloczynu zawartości akumulatora i rejestru B:
MOV A,#2 ; A <= #2
MOV B,#8 ; B <= #8
MUL AB . ;BA <= A * B»
;$tan procesora: B = 0, A = 10H, C = 0, OV=()
• stan znacznika parzystości P jest taki. aby liczba jedynek w akumulatorze i znaczniku parzystości była parzysta. Znacznik len ustawiany jest po każdej instrukcji zmieniającej stan akumulatora (A):
MOV A.#OFH ;A c= OFH ■ 00001111B. znacznik parzystości P = 0
ADD A,#l ;A c A +1, A = 10H - 0001 0000B, znacznik P *» 1
ADD A.#l ;A e A + 1, A = UH = 0001 0001B. znacznik P = 0
Wiele z przedstawionych w dalszych rozdziałach instrukcji wpływa na stan niektórych znaczników rejestru statusowego (PSW). Dotyczy to przede wszystkim operacji arytmetycznych i logicznych oraz przesłań międzybitowych, w których jednym z argu mentów jest zawsze znacznik przeniesienia (C). W tabeli 3-1 przedstawiono instrukcje zmieniające znaczniki: przeniesienia (O, przeniesienia połówkowego (AC) i nadmiaru (OV).
Mikrokontroler 8tXC)5l - procramowanir
7 Instrukcje skoków i wywołań podprogramów
i wykonanie'skoku względnego do adresu będącego sumą zawartości licznika rozkazów (PO i przesunięcia relV,.. '
Stan znacznika przeniesienia (O w wyniku wykonania operacji porównania jest następujący:
• jeśli argumentjl < argument_2 to C = 1,
• jeśli argument_l Z argument_2 to C ■ 0.
Insttukcje CJNE są jedynymi instrukcjami porównania.
Przykład: ,
Programowa pętla opóźnienia, komórka pamięci RAM o adresie 0E01 i pełni rolę licznika pętli:
Czeltaj_RAM:
MOV R0,#0E0H ;R0 <= 0E0H
; MOV @R0,#Jak_Dlugo ;(R0) <= Jak_Dlugo Czekaj:
I DEC ©R0 ;< R0) c= R0 * 1
CJNE ©R0,*),Czekaj ;jeśli (R0)*0 to skok do etykiety Czekaj
Czas trwania opóźnienia określony jest wartośdą Jak_Dlugo • 3 cykle maszynowe. Dla procesora z rezonatorom kwarcowym f=6MHz czas opóźnienia wynosi Jak Dlugo*6|is.
i *
JMP adr
Działanie:
Jump Unconditional
PC cr PC + 2, PCcr adr_1l PC<=PC + 3, PC«=adrJ6 PCc=PC + 2. PC <= PC + rei PC<r:PC + 2. PC c= A ♦ DPTR
Adresowanie:
Mnemonik:
Struktura bajtóio:
Cykle Znacz -
maszynowe: niki:
natychmiastowe: AJMP adr_ll
Aio A9 Ag 0 A7-A0
0 0 0 1
Mil rolirłmrolrr RO/f^S I rrnf>r*mr>\irtni#