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 adre3 skoku zawarty w kodzie operacyjnym pozwala na Wykonanie skoku do jednego z ośmiu adresów 0,8,16,24-,32,40,48,56, zależnie od liczby restartowej. Rozkaz restartu zwykle używany jest przy obsłudze przerwań, co będzie omówione później.
Rozkazy operacji 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 p.P 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 1X1 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.
HM# WWOMAMOM_, KO WYKONANIU
" K0ZKA1ÓW PIKU |
—ł— |
HOlKAlń* PUSH " | ||
SP t 00 ' CA I |
I 00 ' CO | SP | |||
00 |
SE |
00 | ||
00 |
5F |
00 | ||
S.C | 05' DA | |
00 |
(0 |
>3 |
[ OS ' Dl I 0.C |
00 |
01 |
SC | ||
00 |
(Z |
DA | ||
H.L 1 SC ' 05 1 |
00 |
Cl |
OJ |
1 SC ' 13 I H.L |
00 |
u |
00 |
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 stosuct^JOP) odbywa się w ten sposób,"że 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.
NIC* WYKONANIEM |
W3 WYKONANIU | |||
ROZKAZÓW POP |
n |
V| 1 |
ftOlKAZÓW TOP | |
W I 00 ' M I |
00 |
SD |
00 |
1 00 ' (A 1 ST |
00 |
SE |
10 | ||
00 |
5f |
00 | ||
S.C I 00 ' 00 I |
u |
U |
u |
1 05 ' DA 1 D.C |
«.c |
11 |
te | ||
DA |
il |
DA | ||
h.i rss sn |
o; |
(3 |
OS |
1 AC ' 13 1 H.L |
00 |
U |
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 wejścia/wy.iś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 I7SJŚCIA lub PISZ NA '.'.TJś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 INTE, zatrzymują działanie jaP (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