23S
G = A + B - tzw. adres względny. (7. 18)
W zależności od tego, czy B jest liczbą ze znakiem, czy nie, strefa rozciąga się z obu stron bazy lub tylko z jednej strony.
4. Adresowanie z bazą lokaInie ustabilizowaną N
Baza adresu strefowego z zależności (7.17) zmienia się wraz z każdym nowym adresem, co może utrudniać adresowanie. Wprowadzenie bazy stałej ograniczyłoby zakres adresowania, natomiast przyjęcie bazy ustabilizowanej lecz z możliwością zmiany (np. specjalnym mikrorozkazem) może być rozwiązaniem bardzo pożytecznym. Przyjmując, że stan N specjalnego rejestru będzie taką bazą (w ogólnym przypadku może ich być kilka) otrzymujemy
G = w(N, B), 1(B) < 1(A). (7.19)
Typowe realizacje:
G = N + B - tzw. adres indeksowany (N - indeks nowego adresu).
(7.20)
G = <N. B> - tzw. adres stronicowany (N - numer strony w pamięci, B - przesunięcie na stronie). (7.21)
5. Adresowanie wymuszone
Jest to przypadek w którym G nie zależy od B (zatem i od A):
G = R. (7.22)
Wektor R może pochodzić ze specjalnego wewnętrznego rejestru układu adresowania lub spoza układu. Szczególnym przypadkiem adresu
wymuszonego jest adres stały
G = L. (7.23)
który może być ustalony sprzętowo. np. po włączeniu napięcia zasilającego układ.
W omawianych dotychczas metodach generowania członów G, powstawały one wprost z wektora B (lub innego dostarczonego wektora); powyższe
metody można więc nazwać adresowaniem bezpośrednim.
W niektórych przypadkach, szczególnie dotyczy to długich m i kroprogramów, w których główny ciężar adresowania przejmują adresy lokalne, a skoki są nieliczne lecz długie, bezpośrednie wykorzystywanie wektora B może się okazać niewskazane (potrzeba wówczas długich i nie w pełni wykorzystanych wektorów B). Wygodnie jest wówczas potraktować wektor B nie jako adres, lecz jako numer adresu - otrzymujemy wówczas tzw. adresowanie pośrednie, które można odnieść do wszystkich
wymienionych wyżej metod adresowania zawierających wektor B. Zagadnienia tego nie będziemy tu szczegółowo omawiać, gdyż wykracza ono poza zakres niniejszego opracowania (znaleźć je można np. w [15]).
Wymienione wyżej zasady generowania członów G jak również sposoby tworzenia nowego adresu A', można stosować w różnych konfiguracjach i zestawach. Kilka przykładów zastosowania adresów lokalnych i globalnych oraz metody selekcji i modyfikacji przedstawiono na rys. 7.4.
W przypadku wyboru adresu metodą selekcji, najbardziej naturalne wydaje się przyjęcie dwóch adresów globalnych (rys. 7.4 a):
A’ = Bq i<c + Bj xc, (7.24)
jednakże wiąże się to z koniecznością dostarczania długich wektorów B:
B = <B0, Bj>, 1(Bq) = KBj) = 1(A), 1(B) = 2 1(A). (7.25)
Wadę tę można znacznie złagodzić przyjmując rozwiązanie kompromisowe, pozostawiające adres globalny przy jednej tylko wartości X(~ a przypisujące drugiej adres lokalny, np. (rys. 7.4 b):
A’ = B xc + (A ♦ 1) xc, 1(B) = 1(A), (7.26)
(A + l oznacza tu oczywiście sumowanie arytmetyczne).
Dla Xę = 0 układ może przejść do dowolnego adresu (dowolnego miejsca w mikroprogramie) określonego przez wektor B, zaś dla Xj- = 1 -do adresu następnego (do następnej mikroinstrukcji w mikroprogramie), gdzie, jeśli zachodzi taka konieczność, może być umieszczony skok do właściwego docelowego adresu. Rozwiązanie (7.26) jest rozwiązaniem bardzo dogodnym i zapewne z tego względu powszechnie stosowanym.