Opis instrukcji mikroprocesora Z80


Tryby adresowania

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.

 

Tryb natychmiastowy

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.

 

Tryb natychmiastowy rozszerzony

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).

 

Zmodyfikowany tryb adresowania strony zerowej

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

 

Adresowanie względne

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.

 

Adresowanie rozszerzone

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.

 

Adresowanie indeksowane

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.

 

Adresowanie rejestrowe

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 implikowane

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.

 

Adresowanie pośrednie rejestrowe

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).

 

Adresowanie bitów

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.

 

Kombinacje trybów adresowania

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.

 



List do administratora Serwisu Edukacyjnego Nauczycieli I LO

Twój email: (jeśli chcesz otrzymać odpowiedź)
Temat:
Uwaga: ← tutaj wpisz wyraz  ilo , inaczej list zostanie zignorowany

Poniżej wpisz swoje uwagi lub pytania dotyczące tego rozdziału (max. 2048 znaków).

Liczba znaków do wykorzystania: 2048

 

W związku z dużą liczbą listów do naszego serwisu edukacyjnego nie będziemy udzielać odpowiedzi na prośby rozwiązywania zadań, pisania programów zaliczeniowych, przesyłania materiałów czy też tłumaczenia zagadnień szeroko opisywanych w podręcznikach.



   I Liceum Ogólnokształcące   
im. Kazimierza Brodzińskiego
w Tarnowie

©2018 mgr Jerzy Wałaszek

Dokument ten rozpowszechniany jest zgodnie z zasadami licencji
GNU Free Documentation License.