Wstęp :
A mikroprocesor to wielofunkcyjne, programowalne, sterowane zegarem, oparte na rejestrach urządzenie elektroniczne, które odczytuje instrukcje binarne z urządzenia magazynującego zwanego pamięcią, przyjmuje dane binarne jako dane wejściowe i przetwarza je zgodnie z tymi instrukcjami oraz dostarcza wyniki w postaci wyjściowej. Mikroprocesor 8085 jest 8-bitowym mikroprocesorem drugiej generacji i stanowi podstawę do badania i wykorzystania wszystkich mikroprocesorów dostępnych na rynku.
np.argmax
Dlaczego warto używać rejestrów w mikroprocesorze 8085?
Oto kilka powodów, dla których rejestry są używane w mikroprocesorze 8085:
- Magazyn tymczasowy: Rejestry służą jako tymczasowe miejsca przechowywania danych, które muszą zostać przetworzone przez mikroprocesor. Na przykład podczas wykonywania operacji arytmetycznych operandy są zwykle przechowywane w rejestrach.
- Adresowanie: Rejestry służą do adresowania komórek pamięci w mikroprocesorze 8085. Rejestr licznika programu (PC) śledzi lokalizację pamięci bieżącej instrukcji, podczas gdy rejestr wskaźnika stosu (SP) śledzi szczyt stosu.
- Wejście/wyjście: Rejestry służą do komunikacji z urządzeniami wejścia/wyjścia (I/O). Na przykład rejestr akumulatora (A) służy do komunikacji z magistralą danych, która jest podłączona do urządzeń wejścia/wyjścia.
- Informacje o statusie: Rejestry służą do przechowywania informacji o stanie mikroprocesora. Na przykład rejestr flagowy przechowuje informacje o wynikach operacji arytmetycznych i logicznych, w tym o tym, czy wynik jest ujemny, zerowy czy przeniesiony.
- Optymalizacja: Rejestry służą do optymalizacji wydajności mikroprocesora. Używając rejestrów do przechowywania często używanych danych i instrukcji, mikroprocesor może uzyskać dostęp do tych informacji szybciej, niż gdyby musiał je odzyskać z pamięci.
Rejestry w 8085:
(a) Rejestry ogólnego przeznaczenia – Model 8085 ma sześć rejestrów ogólnego przeznaczenia do przechowywania danych 8-bitowych; są one identyfikowane jako B, C, D, E, H i L. Można je łączyć jako pary rejestrów – BC, DE i HL, aby wykonać około 16-bitową operację. Rejestry te służą do przechowywania lub kopiowania danych tymczasowych za pomocą instrukcji podczas wykonywania programu.
(b) Rejestry specjalnego przeznaczenia –
- Akumulator: Akumulator to 8-bitowy rejestr (może przechowywać 8-bitowe dane), który jest częścią jednostki arytmetyczno-logicznej (ALU). Po wykonaniu operacji arytmetycznych lub logicznych wynik zapisywany jest w akumulatorze. Akumulator definiuje się także jako rejestr A. Rejestry flagowe:
Rejestr flagowy jest rejestrem specjalnego przeznaczenia i całkowicie różni się od innych rejestrów w mikroprocesorze. Składa się z 8 bitów i tylko 5 z nich jest użytecznych. Pozostałe trzy pozostają wolne i będą używane w przyszłych wersjach Intela. Te 5 flag jest ustawianych lub resetowanych (gdy wartość flagi wynosi 1, mówi się, że jest ustawiona, a gdy wartość wynosi 0, mówi się, że jest resetowana ) po operacji zgodnie ze stanem danych wyniku w akumulatorze i innych rejestrach. Pięć rejestrów flagowych to:- Flaga znaku: zajmuje siódmy bit rejestru flagi, zwany także bitem najbardziej znaczącym. Pomaga programiście dowiedzieć się, czy liczba przechowywana w akumulatorze jest dodatnia czy ujemna. Jeśli flaga znaku jest ustawiona, oznacza to, że liczba przechowywana w akumulatorze jest ujemna, a jeśli zostanie wyzerowana, liczba będzie dodatnia. Zero Flag: : Zajmuje szósty bit rejestru flag. Jest ustawiany, gdy operacja wykonana w ALU daje zero (wszystkie 8 bitów wynosi zero), w przeciwnym razie jest resetowany. Pomaga w określeniu, czy dwie liczby są równe, czy nie. Pomocnicza flaga przenoszenia: zajmuje czwarty bit rejestru flag. W operacji arytmetycznej, gdy flaga przeniesienia jest generowana przez trzeci bit i przekazywana do czwartego bitu, ustawiana jest flaga Auxiliary Carry. Jeśli nie, flaga jest resetowana. Ta flaga jest używana wewnętrznie dla operacji BCD (liczba dziesiętna zakodowana binarnie). Notatka - Jest to jedyny rejestr flagowy w 8085, do którego użytkownik nie ma dostępu. Flaga parzystości: zajmuje drugi bit rejestru flag. Ta flaga sprawdza liczbę jedynek w akumulatorze. Jeśli akumulator zawiera parzystą liczbę jedynek, wówczas flaga ta jest ustawiana i mówi się, że ma parzystość. Z drugiej strony, jeśli liczba jedynek jest nieparzysta, wówczas jest ona resetowana i mówi się, że jest to nieparzysta liczba. Carry Flag: Zajmuje zerowy bit rejestru flag. Jeśli operacja arytmetyczna zakończy się przeniesieniem (jeśli wynik jest większy niż 8 bitów), wówczas ustawiana jest flaga przeniesienia; w przeciwnym razie zostanie zresetowany.
(c) Rejestry pamięci – Istnieją dwa 16-bitowe rejestry używane do przechowywania adresów pamięci. Rozmiar tych rejestrów wynosi 16 bitów, ponieważ adresy pamięci mają 16 bitów. Oni są :-
- Licznik programu: Ten rejestr służy do sekwencjonowania wykonywania instrukcji. Zadaniem licznika programu jest wskazanie adresu pamięci, z którego ma zostać pobrany kolejny bajt. Podczas pobierania bajtu (kodu maszynowego) licznik programu jest zwiększany o jeden, aby wskazać następną komórkę pamięci. Wskaźnik stosu: służy jako wskaźnik pamięci. Wskazuje miejsce w pamięci do odczytu/zapisu, zwane stosem. Podczas operacji push i pop wartość ta jest zawsze zwiększana/zmniejszana o 2.
- Flaga znaku (7 bit): Jest resetowana (0), co oznacza, że liczba przechowywana w akumulatorze jest dodatnia. Flaga zera (6 bit): Jest resetowana (0), zatem wynik operacji wykonywanych w ALU jest niezerowy. Pomocnicza flaga przeniesienia (4. bit): Widzimy, że b3 generuje przeniesienie, które jest pobierane przez b4, dlatego ustawiana jest pomocnicza flaga przeniesienia (1). Flaga parzystości (2. bit): Jest resetowana (0), co oznacza, że parzystość jest nieparzysta. Akumulator przechowuje nieparzystą liczbę jedynek. Flaga przenoszenia (0-ty bit): Jest ustawiona (1), na wyjściu pojawia się więcej niż 8 bitów.
Zastosowania rejestrów mikroprocesora 8085:
porównanie lwa i tygrysa
Oto kilka typowych zastosowań różnych rejestrów w mikroprocesorze 8085:
- Rejestr akumulatora (A): Rejestr akumulatora jest najczęściej używanym rejestrem w mikroprocesorze 8085. Służy do operacji arytmetycznych i logicznych, a także do operacji wejścia/wyjścia (I/O). Akumulator służy również jako tymczasowe miejsce przechowywania danych.
- Rejestr licznika programu (PC): Rejestr PC służy do śledzenia lokalizacji pamięci bieżącej instrukcji. Kiedy instrukcja jest wykonywana, rejestr PC jest automatycznie zwiększany, aby wskazać następną instrukcję w pamięci.
- Rejestr wskaźnika stosu (SP): Rejestr SP służy do śledzenia szczytu stosu. Stos służy do tymczasowego przechowywania danych i adresów zwrotnych podczas wywołań podprogramów.
- Rejestr flagowy: Rejestr flagowy służy do przechowywania informacji o stanie wyników operacji arytmetycznych i logicznych, w tym o tym, czy wynik jest ujemny, zerowy czy przeniesiony.
- Rejestry ogólnego przeznaczenia (B, C, D, E, H i L): Rejestry te służą do ogólnego przechowywania danych, a także do adresowania komórek pamięci. Można ich używać parami jako rejestry 16-bitowe, takie jak BC, DE i HL, w celu bardziej wydajnego adresowania lokalizacji pamięci.
- Rejestr instrukcji (IR) i rejestr cykli maszyny (MCR): Rejestry te są używane wewnętrznie przez mikroprocesor do dekodowania instrukcji i kontrolowania taktowania cykli maszyny.
Cechy tych rejestrów to:
- Wszystkie rejestry mikroprocesora 8085 są bezpośrednio dostępne z poziomu jednostki arytmetyczno-logicznej (ALU), co pozwala na efektywne przetwarzanie danych.
- Rejestr akumulatora jest domyślnym miejscem docelowym dla większości instrukcji arytmetycznych i logicznych, co upraszcza programowanie.
- Rejestry ogólnego przeznaczenia mogą być używane do przechowywania danych podczas obliczeń, ale mogą być również używane do przechowywania adresów pamięci, dzięki czemu są przydatne do uzyskiwania dostępu do komórek pamięci.
- Rejestry licznika programu i wskaźnika stosu są kluczowe dla zarządzania przepływem instrukcji i danych w programie.
- Rejestr flagowy dostarcza cennych informacji o wynikach operacji arytmetycznych i logicznych, pozwalając na sprawne podejmowanie decyzji w programach.
- Rejestr instrukcji przechowuje aktualnie wykonywaną instrukcję, umożliwiając sprawne dekodowanie i generowanie sygnału sterującego przez jednostkę sterującą.
Zalety:
- Szybki dostęp: Rejestry zapewniają szybki i skuteczny sposób dostępu do danych i wykonywania operacji. Ponieważ rejestry znajdują się wewnątrz procesora, można uzyskać do nich szybki dostęp, bez konieczności oczekiwania na pobranie danych z pamięci. Ograniczony dostęp do pamięci: użycie rejestrów może pomóc w zmniejszeniu liczby wymaganych dostępów do pamięci, co może poprawić ogólną wydajność systemu. Specjalna funkcjonalność: Każdy rejestr w mikroprocesorze 8085 ma określoną funkcję, taką jak akumulator operacji arytmetycznych i licznik programu do przechowywania adresu następnej instrukcji. Ta wyspecjalizowana funkcjonalność może ułatwić programowanie i debugowanie. Mniejsza złożoność: Zapewniając dedykowane rejestry do określonych celów, mikroprocesor 8085 zmniejsza złożoność procesu programowania i wykonywania.
Niedogodności:
- Ograniczona pojemność pamięci: Mikroprocesor 8085 ma ograniczoną liczbę rejestrów, co może ograniczać ilość danych, które można w dowolnym momencie przechowywać i którymi można manipulować. Złożone tryby adresowania: Niektóre tryby adresowania stosowane w mikroprocesorze 8085 mogą być złożone, co może utrudniać programowanie. Przełączanie kontekstu: W niektórych przypadkach przełączanie między różnymi zestawami rejestrów może zwiększyć obciążenie i złożoność procesu programowania. Brak elastyczności: Stała liczba i funkcja rejestrów w mikroprocesorze 8085 może ograniczać elastyczność systemu i utrudniać dostosowanie się do zmieniających się wymagań.