Wykl-instr8051-II.pdf

(5517 KB) Pobierz
Week4
Lista Instrukcji procesora 
8051
Część druga – skoki i wywołania 
podprogramów, operacje na stosie, 
operacje bitowe
2442461.003.png
Przeniesienie sterowania
Nasze dotychczasowe instrukcje wykonują się sekwencyjnie – jedna po 
drugiej
Programy, które rozwiązyją rzeczywiste problemy muszą mieć oczywiście 
możliwość zmiany sekwencji wykonywanych instrukcji w zależności od 
pewnych warunków 
“If” akumulator jest równy 0 “then”
Odpal rakiet
“Else”
Poczekaj jeszcze chwilk
Osiąga się to przez instrukcje  skoków  i  skoków  warunkowych  (czyli przez  
przeniesienie sterowania  oraz  warunkowe przeniesienie sterowania )
2442461.004.png
Przeniesienie sterowania
Mamy do wykonania następujące zadanie:
A = R1+R0
Wylicz R1 + R0 i zachowaj w A
Umieść 0 w R2
R2 = 0
“ If” A = 0 “ then”
Umieść 13 w R2
A == 0
FALSE
TRUE
Wylicz R2 + R3 i umieść wynik w
R2 = 13
R5
By wykonać to zadanie potrzebujemy instrukcji 
skoku warunkowego
R5 = R2 + R3
JZ rel
2442461.005.png
Przeniesienie sterowania: JZ rel
Instrukcja
Instrukcja ma długość 2 
bajtów
JZ rel
By zrozumieć jak działa ta 
instrukcja (i inne instrukcje 
skoków) przyjrzyjmy się 
jeszcze adresowaniu 
instrukcji w pamięci 
programu.
Jeżeli A jest równe zero zmienia 
licznik programu (czyli adres 
następnej instrukcji) o wartość 
równą rel
rel jest 8 bitową liczbą ze 
znakiem
możliwe jest przeniesienie 
sterowania zarówno w 
przód, jak i w tył
2442461.006.png
Adresowanie instrukcji
Rozważmy sekwencję 
poniższych instrukcji
W pamięci programu kod 
będzie miał następującą 
postać:
MOV A,R0
ADD A,#55
MOV R5,A
MOV R1,#26H
Niektóre z instrukcji 
maja rozmiar jednego 
bajtu, niektóre dwóch. 
0000H
E8
}
MOV A,R0
24
ADD A,#55
0002H
37
}
0003H
FD
MOV R5,A
}
0004H
79
0005H
26
MOV R1,#26H
}
0001H
2442461.001.png 2442461.002.png
Zgłoś jeśli naruszono regulamin