274
Rys. 7.23. Obsługa powtarzających się fragmentów mikroprogramu: a) podprogram, b) pętla [161
ZESPÓL PPM 1
(7,57a) (7.57b)
A.: PUSH A. + j; go to Ay W = < K, B >,
A^: POP; W = < K >.
Stos zawiera odpowiednie adresy, więc przeznaczenie informacji odczytanej ze stosu jest określone jednoznacznie i dlatego opuszczamy po wyrażeniu POP człon go to A. Odpowiednie segmenty sieci działań przedstawiono na rys. 7.24 a.
W mikroinstrukcji (7.57 b) nie wykorzystuje się całego słowa, można ją więc łatwo rozszerzyć o człon warunkowy, umożliwiający opuszczanie podprogramu w kilku miejscach; niekiedy można podobnie rozbudować makroinstrukcję (7.57a) - rys 7.24 b [16]:
ZESPÓL PGM 2
W = < K. |
B, C > |
(7. |
Ul co P) |
W = < K, |
C >. |
(7. |
58b) |
A.; if Xc then PUSH Aj + 1 and go to Aj; A.: if xc then POP;
a)
U
PUSH Aj.!
—Aj
Aj.•) <g,- POP
n
Ak
Rys. 7.24. Przykładowe zespoły obsługi podprogramów (15)
Z wymienionych czterech mikroinstrukcji można jeszcze utworzyć dwa inne zespoły.
Drugim, obok podprogramu. rodzajem obsługi powtarzających się fragmentów mikroprograrou jest pętla (rys. 7.23 b). Pętle można
Podzielić na dwa typy: w pierwszym - o powtórzeniu lub wyjściu z pętli cecyduje warunek, zmieniany przy którymś z kolei obiegu pętli; w drugim liczba obiegów pętli jest z góry zadana.
Pętle pierwszego typu można budować za pomocą mikroinstrukcji Podstawowych, na przykład (7.30) lub (7.35 b) - rys. 7.25 a, jeśli Jednak układ sterujący zawiera stos (do realizacji podprogramów), celowe jest użycie go, gdyż upraszcza to adresowanie.
Jeśli powrót do początku pętli odbywa się za pomocą operacji POP to adres tego początku znika ze stosu w chwili skoku i powinien być tam od n°wa wpisywany (°USH) na początku każdego nowego obiegu. Przy