250
Rozkazy powrotu. Rozkazy te (RET, Rcondition) powodują, przepisanie ~zawartości pary komórek ze szczytu stosu do licznika rozkazów. Zwykle jest to zawartość licznika rozkazów wpisana do stosu rozkazem skoku do podprogramu, co powoduje powrót do miejsca w programie, w którym wystąpił ten rozkaz skoku.
Rozkaz restartu (RST) jest jednobajtowym rozkazem skoku do podprogramu. Trzybitowy adres skoku zawarty w kodzie operacyjnym pozwala na wykonanie skoku do jednego z ośmiu adresów 0,8,16,24,32,40,48,58, zależnie od liczby restartowej. Rozkaz restartu zwykle używany jest przy obsłudze przerwań, co będzie omówione później.
Rozkazy operac.1l na stosie. Często w trakcie wykonywania programu zachodzi potrzeba przerwania dotychczasowego ciągu obliczeń i przejścia do innego fragmentu programu (podprogramu), po wykonaniu którego powinien nastąpić powrót do miejsca, w którym wystąpiło przerwanie. Aby ten powrót umożliwić, procesor musi przed wykonaniem skoku do podprogramu zapamiętać bieżący stan licznika rozkazów, by pod koniec podprogramu z powrotem go tam wpisać. Często zachodzi również potrzeba zabezpieczenia bieżącej zawartości rejestrów i wskaźników przed zniszczeniem w czasie wykonywania podprogramu. Dla ułatwienia tych operacji wprowadzono w omawianym jxP tzw. stos programowy. Jest to obszar w pamięci zewnętrznej RAM zarezerwowany do wpisywania i odczytywania w kolejności UFO zawartości rejestrów,wskaźników i licznika rozkazów.
Zapisywanie danych w stosie (PUSH) odbywa się w ten sposób, że zawartość wskazanej pary rejestrów zapisywana jest w pamięci pod dwoma kolejnymi malejącymi adresami wskazanymi przez zawartość wskaźnika stosu ((SP)-1 i (SP)-2). Każde wpisanie pary danych do stosu powoduje automatyczne zmniejszenie zawartości wskaźnika stosu o 2. W ten sposób dane umieszczane są w kolejnych komórkach pamięci o malejących adresach, zaś we wskaźniku stosu znajduje się adres ostatnio wpisanej danej.Początkową zawartość wskaźnika stosu, czyli obszar pamięci przeznaczony na stos, można zadać rozkazem UCI SP lub SPHL. Przykładowe zawartości rejestrów, wskaźnika stosu i stosu przed i po wykonaniu rozkazu PUSH przedstawiono na rys. 6.7*
mit WWOUAtMM I M WYKONANIU
■“ KOIKAWłw mu •'f K01KAIÓW PUSU ""
SP 1 to 1 (I| 1 | |||
00 |
SE |
tt | |
00 |
SE |
ot | |
»,C | 05 ' BA | |
ot |
to |
u |
ot |
tl |
te | |
to |
(Z |
DA | |
M.L 1 (t ' 0) | |
00 |
tł |
OS |
ii |
n |
00 |
I 00 ' to 1 SP
I U • Si 1 H,l
Rys. 6.7. Zawartość rejestrów, wskaźnika stosu i stosu przed i po wykonaniu rozkazów PUSH B i PUSH H. Wszystkie liczby podane są w kodzie szesnastkowym
Odczytywanie zawartości stosu^^OP) odbywa się w ten sposób,"że1 jednorazowo odczytana zostaje para danych z dwu kolejnych komórek pamięci o adresach wskazanych przez zawartość wskaźnika stosu ((SP) i (SP) + 1) oraz
umieszczona w wybranej parze rejestrów wewnątrz procesora. Po wykonaniu tej operacji zawartość wskaźnika stosu automatycznie zwiększa się o 2.
Przykładowe zawartości rejestrów, wskaźnika stosu i stosu przed i po wykonaniu rozkazu POP przedstawiono na rys. 6.8.
HIE» WYKONANIEM |
PO WYKONANIU . | |||
ROZKAZOM ROP |
---- |
rl ’ |
łOIKAlÓW MO | |
so 1 te ' m i |
00 |
50 |
00 |
m i so |
00 |
SE |
00 | ||
00 |
5f |
00 | ||
t.C | 00 ' 00 | |
oj |
U |
u |
1 05 ' 0* | O.t |
u |
(f |
u | ||
»A |
(! |
w | ||
h.i nre sn |
05 |
O |
oi |
1 4C ' 03 1 U.l |
00 |
(V |
00 |
Rys. 6.8. Zawartość rejestrów, wskaźnika stosu i stosu przed i po wykonaniu rozkazów POP H i POP B
Z powyższych przykładów widać, że dla zapisywania danych w stosie wystarczy szereg kolejnych rozkazów PUSH, zaś dla ich przepisania z powrotem do odpowiednich rejestrów, szereg ułożonych w odwrotnej kolejności rozkazów POP. Adresowanie wykonuje się poza udziałem programu, przez automatyczne zmniejszanie i zwiększanie wskaźnika stosu.
Zawartość licznika rozkazów jest wpisywana do stosu przy pomocy rozkazów CALL i RST, zaś ponownie wpisywana do licznika rozkazów rozkazem RET.
Rozkazy weiścia/wyjścia powodują przesyłanie szyną D danych pomiędzy rejestrem A a wskazanym urządzeniem zewnętrznym. Po otrzymaniu rozkazu IN lub OUT procesor wysyła status CZYTAJ Z 173JŚCIA lub PISZ NA '.TYJŚCIE oraz na szynie adresowej, numer urządzenia we/wy, z którym chce się skomunikować. Status ten, wraz z pozostałymi sygnałami sterującymi, powoduje połączenie szyny danych z żądanym urządzeniem wejściowym lub wyjściowym. Technika realizacji takiego połączenia będzie omówiona później.
Rozkazy sterujące decydują o akceptacji żądań przerwania ustawiając (El) lub zerując (DI) wewnętrzny przerzutnik LITE, zatrzymują działanie pP (HLT) lub opóźniają je o określoną liczbę cykli zegarowych (NOP).
6.5.6. Przerwania
Głównym przeznaczeniem systemów mikroprocesorowych jest sterowanie różnego rodzaju procesami, np. przemysłowymi. Istotną cechą sterowania takimi procesami jest konieczność przerywania dokonywanych aktualnie obliczeń i przechodzenia, na asynchronicznie pojawiające się żądania z zewnątrz,do