Opis instrukcji mikroprocesora Z80


Przegląd

Mikroprocesor Z80 potrafi wykonać 158 różnych typów instrukcji, łącznie z 78 instrukcjami starszego modelu 8080A. Instrukcje te dzielą się na następujące grupy główne:

 

Rodzaje instrukcji

Instrukcje ładowania przemieszczają dane wewnętrznie pomiędzy rejestrami mikroprocesora lub pomiędzy jego rejestrami a zewnętrzną pamięcią. Wszystkie instrukcje tego typu określają miejsce źródłowe, z którego mają zostać pobrane dane, oraz miejsce docelowe. Miejsce źródłowe nie jest zmieniane przez instrukcję ładowania.  Przykładami grup instrukcji ładowania mogą być przesyły danych pomiędzy dowolnymi rejestrami ogólnego przeznaczenia, np. przeniesienie danych do rejestru B z rejestru C. Ta grupa zawiera również ładowanie danej natychmiastowej do dowolnego rejestru mikroprocesora lub do dowolnej komórki pamięci zewnętrznej. Inne typy instrukcji ładowania pozwalają przenosić dane pomiędzy rejestrami a komórkami pamięci. Instrukcje wymiany mogą zamienić ze sobą zawartość dwóch rejestrów.

Z80 został wyposażony w unikalny zestaw instrukcji przesyłu blokowego. Za pomocą pojedynczej instrukcji można przesunąć obszar pamięci o dowolnym rozmiarze w dowolne inne miejsce w pamięci. Ten zestaw przesyłów blokowych staje się niezmiernie cenny w czasie pracy z dużymi ciągami danych. Za pomocą pojedynczej instrukcji można wyszukać 8 bitowy znak w bloku zewnętrznej pamięci o dowolnej, pożądanej wielkości. Gdy zostanie znaleziony poszukiwany znak lub osiągnięty koniec bloku, instrukcja automatycznie kończy swoje działanie. Zarówno instrukcje przesyłów blokowych jak i blokowego przeszukiwania mogą być przerywane podczas swojej pracy, zatem nie zajmują one mikroprocesora na długie okresy czasu.

Instrukcje arytmetyczne i logiczne działają na danych zapisanych w akumulatorze i innych rejestrach ogólnego przeznaczenia lub w komórkach pamięci zewnętrznej. Wyniki operacji są umieszczane w akumulatorze z ustawieniem odpowiednich znaczników zgodnie z otrzymanym wynikiem.

Przykładem operacji arytmetycznej jest dodawanie akumulatora do zawartości komórki pamięci zewnętrznej. Wyniki dodawania są umieszczane w akumulatorze. Ta grupa zawiera również 16 bitowe dodawanie i odejmowanie pomiędzy parami rejestrów mikroprocesora.

Grupa obrotów i przesuwów pozwala przemieszczać arytmetycznie lub logicznie bity dowolnego rejestru lub komórki pamięci w prawo lub w lewo, z lub bez znacznika przeniesienia. Również cyfra 4 bitowa BCD może być przesuwana w prawo lub w lewo z dowolną komórką w pamięci.

Instrukcje operujące na poszczególnych bitach pozwalają za pomocą pojedynczej instrukcji ustawiać, zerować lub testować dowolny bit akumulatora i rejestru ogólnego przeznaczenia oraz dowolnej komórki pamięci zewnętrznej. Na przykład można wyzerować najbardziej znaczący bit rejestru H. Ta grupa jest szczególnie użyteczna w aplikacjach sterujących oraz w programowym sprawdzaniu różnych znaczników w programach ogólnego przeznaczenia.

Instrukcje skoków, wywołań procedur i powrotów pozwalają mikroprocesorowi wykonywać kod z różnych miejsc w programie użytkownika. Grupa ta wykorzystuje kilka różnych sposobów otrzymywania nowego adresu dla licznika programu ze określonych komórek pamięci. Unikalnym typem wywołania jest instrukcja restartu. Zawiera ona adres wywołania w swoim ośmiobitowym kodzie. Jest to możliwe, ponieważ dozwolone jest tylko osiem oddzielnych adresów umieszczonych na stronie zerowej pamięci zewnętrznej. Skoki programowalne można osiągnąć ładując zawartość rejestrów HL, IX lub IY bezpośrednio do PC, co pozwala wcześniej wyliczyć adres skoku.

Grupa instrukcji wejścia / wyjścia w mikroprocesorze Z80 pozwala na szeroki zakres przesyłów pomiędzy pamięcią zewnętrzną lub rejestrami ogólnego przeznaczenia a urządzeniami zewnętrznymi. W każdym przypadku jest przy dowolnej transakcji wejścia / wyjścia numer portu I/O pojawia się na młodszych ośmiu bitach magistrali adresowej. Jedna instrukcja pozwala podawać ten numer jako drugi bajt kodu instrukcji, natomiast inne instrukcje mikroprocesora Z80 pozwalają go określić jako zawartość rejestru C. Jedną z głównych zalet stosowania rejestru C jako wskaźnika urządzenia wejścia/ wyjścia jest możliwość obsługi wielu portów I/O przez procedury wspólnego sterownika programowego. Zaleta ta nie jest dostępna przy stosowaniu numeru urządzenia wejścia / wyjścia jako kodu instrukcji, jeśli program jest umieszczony w pamięci ROM. Inną cechą tych instrukcji wejścia/ wyjścia jest automatyczne ustawianie rejestru znaczników, co czyni zbędnymi inne operacje określające stan danych wejściowych.  Jednym z przykładów jest stan parzystości.

Mikroprocesor Z80 posiada pojedyncze instrukcje, które potrafią automatycznie przesyłać bloki danych (do 256 bajtów) do lub z dowolnego portu I/O bezpośrednio do dowolnego miejsca w pamięci. W połączeniu z podwójnym zbiorem rejestrów ogólnego przeznaczenia te instrukcje udostępniają szybkie transmisje I/O bloków danych. Potęga tych instrukcji wejścia / wyjścia jest demonstrowana przez mikroprocesor Z80 przy formatowaniu dysków elastycznych na stacjach o podwójnej gęstości zapisu za pomocą procedur sterowanych przerwaniami. Przykładowo, mikroprocesor zapewnia nagłówek, adres, dane i wprowadza kody CRC.

Na koniec, podstawowe instrukcje sterujące mikroprocesorem pozwalają na stosowanie różnych opcji i trybów. Ta grupa instrukcji obejmuje ustawianie i zerowanie przerzutnika przerwań lub ustawianie trybu odpowiedzi na przerwanie.

 



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.