224
głów 8-bitowych (bajtów). Ponadto pP 8080 może współpracować (przy bezpośrednim adresowaniu) z 256 urządzeniami wejściowymi 1 taką samą liczbą urządzeń wyjściowych.
6.3.j. Opis poszczególnych bloków
Schemat blokowy |j.P 8080 przedstawiony Jest na ry3. 6.3. Poniżej opiszemy działanie i przeznaczenie poszczególnych bloków.
Rys. 6.3* Architektura jiP 8080
Rejestry operacyjne. Pamięć wewnętrzna pP składa się z 7 programowo dostępnych rejestrów A (Akumulator), B, C, D, E, B, L. Niektóre z rozkazów oddziałują Jednocześnie na zawartość par rejestrów BC, DE, HL, przy czym para HL służy zazwyczaj do przegotowania adresu dla rozkazu komunikacji z pamięcią zewnętrzną.
Rejestry W, Z nie są dostępne dla programisty. Służą one pp jako pamięć pomocnicza przy wykonywaniu niektórych rozkazów. Pomocniczą rolę pełni również inkrementator (dekrementator), służący do zwiększania lub zmniejszania o 1 zawartość dowolnego rejestru.
Licznik rozkazów (Program Counter - PO) Jest 16-bitowym rejestrem,którego zawartość wskazuje adres następnego bajtu programu; może to być kolejny bajt rozkazu aktualnie wykonywanego lub kod operacyjny rozkazu następnego. Licznik rozkazów jest programowo dostępny** .
Wskaźnik stosu. Stos jest ustalonym przez programistę obszarem w zewnętrznej pamięci RAU, w którym mogą być zapisywane i odczytywane dane w
4 Termin „programowo dostępny" lub „programista ma dostęp" oznacza Istnienia rozkazów oddziałujących Ba dany rejestr.
O
kolejności LIFO. Rozmiar skosu wyznacza się przez ustawienie stanu początkowego 16-bitowego rejestru wskaźnika stosu (Stack Pointer - SP), Zawartość wskaźnika stosu Jest automatycznie pomniejszana o 1 po każdym przesianiu do stosu, a powiększana o 1 po każdym pobraniu informacji ze stosu.
Rejestr i dekoder rozkazów oraz układ 3toru.1 acy, Rozkaz składa się z dwu części: kodu operacyjnego i operandów lub icłi adresów. Kod operacyjny określa rodzaj operacji, jaką procesor ma wykonać na wskazanych operan-dach.
W czasie pobierania rozkazu z pamięci zewnętrznej pierwszy jego bajt, zawierający kod operacyjny, zostaje przesłany do 8-bitowego rejestru rozkazów (Instruction Register - IR) połączonego z dekoderem rozkazów (In-struction Decoder - ID). Sygnał wyjściowy dekodera wprowadzany jest, wraz z zewnętrznymi sygnałami sterującymi, do układu sterowania (Timing and Control) koordynującego pracę wszystkich układów procesora w kolejnych stanach 1 cyklach wykonywania rozkazu.
Układ arytmetyczno-logiczny (AUT) wykonuje operacje arytmetyczne lub logiczne na parze danych, pobieranych z akumulatora poprzez Jego rejestr buforowy (Accumulator Iatch) i innych jednostek pamięci poprzez rejestr pomocniczy (Temporary Register). Dodatkowo, na wynik operacji w AID może wpływać stan wskaźników przeniesienia. Wynik każdej operacji umieszczany jest w akumulatorze oraz wpływa na stan wskaźników. Dzięki układowi korekcji dziesiętnej (Decimal Adjust) AID może przekształcić zawartość akumulatora do postaci BCD (rozkaz DAA).
Wskaźniki (Flaga) Jest to 5 niezależnych przerzutnlków sterowanych przez AID. Ich stan zawiera niektóre parametry rezultatu wykonalnej operacji arytmetycznej lub logicznej i pozostaje niezmieniony aż do wykonania przez procesor następnego rozkazu wpływającego na nie. Stan czterech wskaż ników może być testowany i wpływać na dalsze wykonywanie programu. Poniżej podajemy nazwy i funkcje pełnione przez poszczególne wskaźniki.
Wskaźnik przeniesienia (Carry - CI) jest ustawiany lub zerowany przez rozkazy arytmetyczne lub logiczne. Głównym jego przeznaczeniem jest sygnalizacja przeniesienia przy operacjach dodawania i odejmowania.
Pomocniczy wskaźnik przeniesienia (Auiiliary Carry - AC) jest ustawiany lub zerowany przez instrukcje dodawania, odejmowania, przyrostu i porównania. Wskaźnik ten ustawiany jest z chwilą wystąpienia przeniesienia w bicie nr 3* Ilustruje to poniższa operacja dodawania, w wyniku której następuje wyzerowanie (zgaszenie) CI oraz ustawienie (zapalenie) AC.
Bit nr |
7 6 5 4 |
3 2 10 |
+ |
0 10 1 10 0 0 |
110 1 0 10 1 |
1110 --CY=0 |
0 0 10 -—AC=1 |
Pomocniczy wskaźnik przeniesienia nie jest bezpośrednio testowany przez rozkazy programu i Jego stan uwzględniany Jest tylko przy wykonywaniu rozkazu DAA korekcji dziesiętnej.