7 Insnukcte skokpw i wywołań podprogramów 81
7 Insnukcte skokpw i wywołań podprogramów 81
Adresmcanie:
Mnemonik: Struktura bajtów: Cykle Znacz-
maszynowe: niki:
natychmiastowe:
LJMP
adr_16
natychmiastowe:
SJMP
rei
rejestrowe:
JMP
9A+DPTR
2
2
2
Działanie:
Instrukcje skoków bezwarunkowych powodują wpisanie do licznika rozkazów (PC)
adresu następnego wykonywanego rozkazu. W zależności od typu rozkazu adresem
jest:
• ll*biłowy adres w rozkazie AJMP adr_l1; w lf>-bitowym liczniku rozkazów (PC) modyfikowanych jest tylko 11 najmniej znaczących bitów A-jo -Ao P‘9^ bardziej znaczących bitów nie jest zmienianych Aj^-Ah, skok wykonywany jest wewnątrz 2 kBajtowego bloku pamięci kodu programu, bity A-jq g adresu skoku zmieniają 3 najbardziej znaczące bity pierwszego bajtu rozkazu,
• 16-bitowy adres w rozkazie LJMP adr_16; modyfikowana jest cala zawartość licznika rozkazów (PC),
• suma zawartości licznika rozkazów (PC) i przesunięcia rei traktowanego jako 8 bitowa liczba całkowita ze znakiem, zakres -128..+127,
• suma zawartości wskaźnikowego rejestru danych (DPTR) i akumulatora (A) traktowanego jako fi-bitowa liczba całkowita bez znaku, zakres 0..255.
Zawartość akumulatora (A) i przesunięcia rei rozszerzana jest znakowo do 2-bajtów
i dodawana do 16-bitowej zawartości licznika rozkazów (PO.
Przykład 1:
Adres skoku w rozkazie AJMPadr_ll obliczany jest po dodaniu 2 do licznika rozkazów (PO:
Ajmp_adr_ll:
•AJMP 2
w zależności o adresu etykiety Ajmp_adr_11 licznik rozkazów PC może mieć różne wartości:
► jeśli PC = 7FDH to adresem następnej wykonywanej instrukcji jest wartość 211,
-> jeśli PC = 7FEH to adresem następnej wykonywanej instrukcji jest wartość 802H,
Mikrokontroler 80(C)51 - programowanie
Uporządkowanie alfabetyczne instrukcji wg mnemoników jest najczęstszym sposobem prezentacji listy rozkazów mikroprocesorów, ponieważ ułatwia znalezienie szukanej instrukcji. Łatwiej jednak rozpocząć zaznajamianie się z listą rozkazów ułożoną tematycznie według typów wykonywanych operacji.
W prezentowanej, tematycznej liście instrukcji wyjaśniono działanie samej instrukcji i podano przykład jej użycia. Oprócz mnemonika instrukqi istotna jest składnia, liczba bajtów kodu operacyjnego i argumentów oraz czas realizacji rozkazu wyraż.ony liczbą cykli maszynowych mikroprocesora. Wszystkie nowe informacje o mikroprocesorach publikowane są w literaturze anglojęzycznej co spowodowało, że podano także oryginalne komentarze mnemoników instrukcji. Przy omawianiu każdej instrukcji przedstawiono końcowy stan znaczników mikrokontrolera, a ich interpretację wyjaśniają poniższe przykłady:
• znacznik przeniesienia C sygnalizuje przekroczenie zakresu (O..OFFH) 8-bitowych liczb całkowitych bez znaku w operacji dodawania i odejmowania oraz przekroczenie zakresu 0..99D przy operacji korekcji dziesiętnej. Oznacza przeniesienie między kolejnymi dodawanymi bajtami lub poż.yczkę przy wiclobajtowym odejmowaniu. W przykładzie dodawania dwóch 2-bajtowych argumentów znajdujących się w wewnętrznej pamięci RAM mikrokontrolera (rysunek 3-1) przestawiono stan reieshĄw i znaczników w kolejnych krokach:
41H
adresy 40H wewnętrznej pamięci RAM
31H
30H
_3AH
93H
J2H
BFH
bardziej znaczący b3jt mniej znaczący bajt
Argumentuj oraz Sumy
bardziej znaczący bajt mniej znaczący bajt
Argumentuj
Rys. 3-1 Rozmieszczenie argumentów i sumy w wewnętrznej pamięci mikroprocesora
DodJ6:
MOV A,30H ADD A,40H
MOV 40H.A MOV A.31H ADDC A,41H
>1
MOV 4111, A
A «= (3010, A=6FH» 1)110 1111B
A <= A+(40H), (40H) *93 Ha 1001 0011B
A= U2H = OOOO 001 OB znaczniki: C = 1, AC * 1.1’ = 1 (40H) <= A
A c= (31H), A= 12H * 0001 001 OB
A cc A+C+(41H). (41H) ■ 3AH = 0011 1 Ul OB
A=4DH= 0100 1101B
"znaczniki: C * 0, AC = 0, P = U (41H)<= A
Mikrokontroler 80<C)51 - programowanie