|
Serwis Edukacyjny nauczycieli w I-LO w Tarnowie
Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej
Tłumaczenie: mgr Jerzy Wałaszek |
©2026 mgr Jerzy Wałaszek
|
Większość instrukcji mikroprocesora Z80 operuje na danych przechowywanych w wewnętrznych rejestrach, w pamięci zewnętrznej lub w portach wejścia / wyjścia. Adresowanie określa, w jaki sposób tworzony jest adres tych danych w każdej instrukcji. Ten rozdział jest krótkim podsumowaniem typów adresowania używanych przez mikroprocesor Z80, natomiast w następnych rozdziałach są opisane szczegółowo rodzaje adresowania dostępne dla każdej z grup instrukcji.
W tym trybie adresowania bajt występujący w pamięci po kodzie operacji zawiera sam argument.
| Kod operacji | }- jeden lub dwa bajty | |
| Argument | }- jeden bajt | |
| D7 | D0 | |
Przykładem tego typu instrukcji jest wpisywanie stałej do akumulatora, która występuje natychmiast po kodzie operacyjnym instrukcji.
Ten tryb jest rozszerzeniem adresowania natychmiastowego, które polega na tym, iż za kodem instrukcji występują dwa bajty argumentu.
| Kod operacji | }- jeden lub dwa bajty |
| Argument | }- młodszy bajt |
| Argument | }- starszy bajt |
Przykładem tego typu instrukcji jest ładowanie pary rejestrów HL
(rejestr 16 bitowy) za pomocą 16 bitów danych
(dwa bajty).
Mikroprocesor posiada specjalną, jednobajtową instrukcję CALL,
która może wykonać skok pod jeden z ośmiu adresów na stronie zerowej pamięci.
Instrukcja ta, którą nazywa się restartem, ustawia PC na adres
odnoszący się do strony zerowej. Wartość kodu tej instrukcji pozwala określić
przy pomocy jednego bajtu 16 bitowy adres, pod którym są umieszczane często
wywoływane podprogramy, co oszczędza pamięć.
| Kod operacji | }- jeden bajt | |
| B7 | B0 | Adres efektywny to (B5 B4 B3 000)2 |
Ten tryb wykorzystuje jeden bajt danych umieszczony za kodem instrukcji, który określa przesunięcie od obecnej pozycji w programie do miejsca, gdzie może zostać wykonany skok. Przesunięcie to jest liczbą ze znakiem w kodzie U2 i zostaje dodane do adresu następnej instrukcji.
| Kod operacji | }- jeden bajt |
| Przesunięcie | }- liczba U2 dodawana do adresu instrukcji + 2 |
Zaletą względnego adresowania jest możliwość wykonywania skoków do okolicznych punktów w programie przy pomocy jedynie dwubajtowych instrukcji. Dla większości programów skoki względne są najbardziej rozpowszechnionymi rodzajami skoków z powodu bliskości powiązanych ze sobą segmentów programu. Z tego powodu instrukcje te w sposób istotny mogą zmniejszyć wymagania pamięciowe programu. Przesunięcie ze znakiem wpada w zakres od +129 do -126 w stosunku do adresu komórki zawierającej adres kodu operacji skoku względnego. Drugą ważną zaletą jest tworzenie kodu przemieszczalnego w pamięci.
Ten tryb udostępnia dwa bajty (16 bitów) adresu, który może być dołączony do instrukcji. Dane te mogą oznaczać adres, pod który program ma wykonać skok, lub adres komórki pamięci zawierającej argument dla instrukcji.
| Kod operacji | }- jeden lub dwa bajty |
| Młodszy bajt adresu młodszego bajtu argumentu | |
| Starszy bajt adresu młodszego bajtu argumentu |
Adresowanie rozszerzone jest niezbędne dla programu do wykonywania skoków z dowolnego miejsca w pamięci do dowolnego innego miejsca lub do odczytywania i zapisywania danych w dowolnej komórce pamięci.
W czasie używania rozszerzonego adresowania należy określić adres źródłowy
lub docelowy argumentu. Używana jest notacja (nn) do wskazywania
zawartości pamięci pod adresem nn, gdzie nn jest 16 bitowym adresem
określonym w instrukcji. Te dwa bajty adresu nn są używane jako
wskaźnik komórki pamięci. Użycie nawiasów zawsze znaczy, że wartość w nich
zawarta jest używana jako wskaźnik miejsca w pamięci. Na przykład (3200) odnosi
się do komórki pamięci umieszczonej pod adresem 3200.
W tym rodzaju adresowania bajt danych umieszczony za za kodem instrukcji zawiera przesunięcie, które zostaje dodane do jednego z dwóch rejestrów indeksowych (kod operacyjny instrukcji wskazuje ten rejestr), aby utworzyć wskaźnik do pamięci. Operacja nie powoduje zmiany zawartości tego rejestru indeksowego.
| Kod operacji | }- dwa bajty kodu instrukcji |
| Kod operacji | |
| Przesunięcie | }- argument dodawany do rejestru indeksowego w celu stworzenia wskaźnika do pamięci |
Przykładem indeksowanej instrukcji jest ładowanie zawartości pamięci (rejestr indeksowy + przesunięcie) do akumulatora.
Przesunięcie jest liczbą ze znakiem w kodzie U2. Adresowanie indeksowane ogromnie upraszcza programy wykorzystujące tablice danych, ponieważ rejestr indeksowy może wskazywać na początek tablicy. Dostępne są dwa rejestry indeksowe, ponieważ często operacje wymagają dwóch lub więcej tablic. Adresowanie indeksowane również umożliwia tworzenie kodu przemieszczalnego.
Dwa rejestry indeksowe mikroprocesora Z80 są oznaczane jako IX i IY. Adresowanie indeksowane zapisujemy w notacji jako:
(IX+d) lub (IY+d)
Tutaj d jest przesunięciem (ang. displacement) umieszczanym za kodem operacyjnym instrukcji. Nawiasy oznaczają, iż ta wartość jest używana jako wskaźnik do zewnętrznej pamięci.
Wiele kodów operacyjnych mikroprocesora Z80 zawiera bity informacji, które
określają rejestr używany przez daną operację. Przykładem adresowania
rejestrowego jest przesłanie zawartości rejestru E do rejestru
C.
Adresowanie to odnosi się do operacji, w których kod operacyjny automatycznie implikuje jeden lub kilka rejestrów mikroprocesora z argumentami. Przykładem jest zbiór operacji arytmetycznych, gdzie akumulator jest zawsze implikowanym rejestrem do zapisu wyników.
Ten rodzaj adresowania określa 16 bitową parę rejestrów mikroprocesora
(taką jak HL) używaną jako wskaźnik dowolnej komórki w pamięci. Ten typ instrukcji jest bardzo potężny i stosuje się go w dużej liczbie
aplikacji.
| Kod operacji | }- jeden lub dwa bajty |
Przykładem tego typu instrukcji jest załadowanie akumulatora danymi z komórki
pamięci wskazanej przez zawartość pary rejestrów HL. W rzeczywistości adresowanie indeksowe jest odmianą adresowania pośredniego
rejestrowego, w którym do rejestrów wskazujących dane dodaje się jeszcze
przesunięcie. Adresowanie pośrednie rejestrowe pozwala na bardzo zaawansowany,
lecz łatwy do stosowania dostęp do komórek pamięci. Rozkazy przesyłu i przeszukiwania blokowego w Z80 są rozszerzeniami tego typu adresowania, gdzie
dodano automatyczne zwiększanie i zmniejszanie zawartości rejestrów oraz
porównywanie z danymi w pamięci. W zapisie tryb ten oznaczamy umieszczając parę
rejestrów adresujących pamięć w nawiasach. Na przykład, symbol (HL)
oznacza, że zawartość rejestru HL ma być użyta jako wskaźnik
komórki pamięci. Często adresowanie pośrednie rejestrowe wykorzystuje się do określania argumentów 16 bitowych. W takim przypadku rejestr wskazuje na młodszy
bajt argumentu, natomiast adres ten jest automatycznie zwiększany o 1 przy
pobieraniu lub zapisie starszego bajtu argumentu (zawartość
rejestru adresującego nie jest zmieniana).
Mikroprocesora Z80 wykonuje obszerny zestaw instrukcji ustawiania, zerowania i testowania bitów. Instrukcje te pozwalają użyć do operacji bitowej dowolną komórkę pamięci lub rejestr mikroprocesora za pomocą jednego z trzech powyżej opisanych trybów adresowania (rejestrowego, pośredniego rejestrowego i indeksowanego) oraz określić w kodzie operacyjnym, którego z ośmiu bitów dotyczy dana operacja.
Wiele instrukcji zawiera więcej niż jeden argument (np. instrukcje arytmetyczne lub instrukcje przesyłania danych). W takich przypadkach mogą być zastosowane dwa rodzaje adresowania. Na przykład, ładowanie danych może używać trybu natychmiastowego do określenia źródła oraz rejestrowego pośredniego lub indeksowego do określenia przeznaczenia tych danych.
![]() |
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2026 mgr Jerzy Wałaszek |
Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone pod warunkiem podania źródła oraz niepobierania za to pieniędzy.
Pytania proszę przesyłać na adres email:
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.