7 Instrukcje skokpw i \vywolan podprogramów 81
Adresowanie Mnemonik: Struktura bajtów: Cykle Znacz-
maszynowe: nikt
natychmiastowe: LJMP adr_16
2
Ais-.Ag
2
natychmiastowe: SJMP rei
rei
rejestrowe:
JMP 9A+DPTR 1 0 1 1 1 | 0 0 1 T]
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:
• 11-bitowy adres w rozkazie AJMP adr_11; w 16-bitowym liczniku rozkazów (PC) modyfikowanych jest tylko 11 najmniej znaczących bitów Ajo-Ag, pięć bardziej znaczących bitów nie jest zmienianych Aj5-.Au, skok wykonywany jest wewnątrz 2 kBajtowego bloku pamięci kodu programu, bity Ajq 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 (PO 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 R-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 instrukcji 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 łub 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:
adresy wewnętrznej pamięd RAM
41H
40H
31H
30H
bardziej znaczący b3jt mniej znaczący bajt
bardziej znaczący bajt mniej znaczący bajt
Argumentuj oraz Sumy
Argumentuj
Rys. 3-1 Rozmieszczenie argumentów i sumy w wewnętrznej pamięci mikroprocesora
Dod_16:
MOV A.30H ADD A,40H
MOV 40H.A MOV A.31H ADDC A,41H
MOV 4111, A
;Ac=(30H), A= 6FH ■ 0110 1111B
; A <= A+(40H), (40H) =» 93H - 1001 0011B
; A= U2H = 0000 001OB
.znaczniki: C » 1, AC * 1. P * 1 ;(40H) <= A
; A c= (31H), A= 12H = 0001 001 OB
; A c= A+C+(41H), (41H)«3AH« 0011101UB
; A=4DH« 01001101B
.•znaczniki: C = 0, AC = 0, P = U ;(41H)<= A
Mikrokontroler 304051 - programowanie