6137905425

6137905425



W zespole rejestrów roboczych występuje rejestr nazwany rejestrem wskaźnika stosu (lub krócej wskaźnikiem stosu), który — podobnie jak rejestr adresowy —jest rejestrem 16-bitowym. Ponieważ oba te rejestry pełnią inne funkcje niż pozostałe, przeto do wykonywania operacji na ich zawartości służą odrębne rozkazy (patrz p. 16.3). Jednak w tym miejscu zajmiemy się jedynie przeznaczeniem tego rejestru.

Wskaźnik stosu SPjest to rejestr 16-bitowy, w którym jest przechowywany adres komórki pamięci. Wyjaśnijmy zatem, co jest szczególnego w jakiejś komórce pamięci, że powinna ona być pamiętana w specjalnie do tego przeznaczonym rejestrze.

Posłużmy się ponownie przykładem programu sterującego działaniem magnetowidu. Stwierdziliśmy już, że do obsługi różnych poleceń użytkownika magnetowidu należy zapisać szereg programów, rozmieszczonych w różnych obszarach pamięci. Proponowana liczba programów była równa liczbie poleceń. Byłoby to w praktyce postępowanie dalekie od optymalnego. Szczególnie, jeśli weźmiemy pod uwagę, że programy te musiałyby zawierać jednakowe sekwencje poleceń. Na przykład program obsługi polecenia „przewiń taśmę” i program obsługi polecenia „odtwarzaj nagranie” będą mieć identyczną sekwencję rozkazów mikroprocesora, potrzebną do sprawdzenia obecności kasety w magnetowidzie. Sensowniej jest więc taką sekwencję zapisać raz w pamięci i odwoływać się do niej w tych miejscach (programu głównego), w których będzie to konieczne. Taką sekwencję rozkazów, która jest zapisana tylko raz w pamięci, lecz wykonywana wielokrotnie w różnych miejscach programu, nazywamy podprogramem. Odwołanie się do podprogramu jest realizowane także przez rozkaz skoku (zmiany zawartości licznika rozkazów), lecz rozkaz skoku do podprogramu tym się różni od zwykłego rozkazu skoku, że zostaje zapamiętana ostatnia (przed skokiem do podprogramu) zawartość licznika rozkazów. Umożliwia to powrót z podprogramu do programu głównego poprzez proste wpisanie do licznika rozkazów (po zakończeniu realizacji podprogramu) zapamiętanej zawartości licznika rozkazów. W rejestrze wskaźnika stosu nie jest jednak pamiętany ten ostatni (przed skokiem do podprogramu) stan licznika rozkazów. Wynika to stąd, że aby kontynuować realizację programu głównego dokładnie od tego miejsca, z którego było odwołanie do podprogramu, trzeba zapamiętać nie tylko stan licznika rozkazów, ale także rejestrów pomocniczych i rejestru akumulatora (o rejestrze akumulatora powiemy trochę dalej). Do tego celu potrzebny jest więc pewien fragment pamięci. W praktyce może to wyglądać na przykład tak:

1.    Pobieramy rozkaz z komórki pamięci o adresie 100, który jest rozkazem skoku do podprogramu (w tym momencie licznik rozkazów jest ustawiony już na wartości 101).

2.    Jeszcze więc przed zmianą skokową licznika rozkazów (tzn. skokiem do podprogramu) jest zapamiętywany stan licznika rozkazów (ten 101) oraz stany rejestrów. Przyjmijmy, że informacje te są zapisywane w kolejnych komórkach pamięci o adresach 1, 2, 3 i ostatnia w komórce o adresie 10.

3.    I właśnie ten adres (10) zostanie zapamiętany w rejestrze wskaźnika stosu.

307



Wyszukiwarka

Podobne podstrony:
Image137 Rys. 4.83 Zespół rejestrów buforowych o pojemności 8 słów 8-bitowych 2 rozdzielacza Rys. 4.
Image140 Rys. 4.87. Pamięć składająca się z zespołu rejestrów równoległych150
Slajd11 (119) Rejestr wskaźnikowy mikroprocesora S086 Wskaźniki można podzielić na dwie grupy: 1.
260 261 260 gram przesyła z powrotem ze stosu zawartości rejestru A, wskaźników i rejestrów H i I>
16 SWB - Programowanie mikrokontrolerów - wykład 10a®*Stos i rejestr Wskaźnik stosu •
IV zja6 Zespół rejestrów U1M operacyjny SygnaJy stengące pi^łfwmdan^hi ubierające fioiłojęUldad
IV zja6 Zespół rejestrów U1M operacyjny SygnaJy stengące pi^łfwmdan^hi ubierające fioiłojęUldad
Tab. 4. Rejestry wskaźnikowe i indeksowe rodzaj
Procesor - elementy zespól rejestrów do przechowywania danych i wyników (rejestry mogą być ogólnego

więcej podobnych podstron