830 likes | 998 Views
Podstawy informatyki 2013/2014. Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego Matuszyka. Zilog 80 (Z80) – dane techniczne. Na rynku od lipca 1976 8-bitowa magistrala danych
E N D
Podstawy informatyki2013/2014 Łukasz SztangretKatedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiałyDanuty Szeligi i Pawła Jerzego Matuszyka
Zilog 80 (Z80) – dane techniczne • Na rynku od lipca 1976 • 8-bitowa magistrala danych • 16-bitowa magistrala adresowa • Częstotliwość zegara 2.5MHz • Zasilanie i poziomy logiczne zgodne ze standardem TTL • Prąd zasilania ok. 90mA • Rozpraszana moc ok. 1.5W • 158 rozkazów • Obudowa typu DIL 40 • Wbudowany układ odświeżania pamięci
Address Bus, Data Bus Magistrala adresowa: Jednokierunkowa, trójstanowa 16-bitowa szyna adresów służąca do adresowania zarówno pamięci, jak i portów wejścia/wyjścia. Magistrala danych: Dwukierunkowa, trójstanowa 8-bitowa szyna danych służąca do przesyłania wszystkich danych z i do procesora.
Control Bus Magistrala sterująca:
Control Bus Magistrala sterująca:
Control Bus Magistrala sterująca:
Control Bus Magistrala sterująca:
Control Bus Magistrala sterująca:
Organizacja wewnętrzna Schemat logiczny procesora można podzielić na trzy grupy: • część sterująca, której zadaniem jest kontrola i sterowanie przepływem informacji w procesorze, w szczególności dekodowanie rozkazów. • zespół rejestrów stanowiący wewnętrzną pamięć procesora, • główny układ wykonawczy – jednostka arytmetyczno-logiczna (ang. arithmetic-logic unit ALU)
Organizacja wewnętrzna źródło: www.wikipedia.pl
Rejestry dostępne programowo Rejestry 8-bitowe: • akumulator A (ang. acumulator) • rejestr wskaźników stanu F (ang. flag register) podwójne • rejestry ogólnego przeznaczenia B, C, D, E, H, L • rejestr wektora przerwań I (ang. interruptvector) • licznik odświeżania pamięci R (ang. memoryrefresh) Rejestry 16-bitowe: • rejestr wskaźnika stosu SP (ang. stack pointer) • rejestry indeksowe IX, IY (ang. index register) • licznik rozkazów PC (ang. program counter) Rejestry 1-bitowe: • IFF1, IFF2 (ang. interruptenableflip-flops)
Rejestr wskaźników stanu F C (ang. carry) – wskaźnik przeniesienia. Jest ustawiany, jeżeli podczas operacji arytmetycznej lub przesunięcia bit równy 1 „wyszedł poza rejestr”. N – wskaźnik odejmowania. Jest ustawiany, jeżeli ostatnio wykonywaną operacją było odejmowanie, zerowany jeśli dodawanie. P/V(ang. parity/overflow) – wskaźnik nadmiaru/parzystości. Jest ustawiany, jeżeli pojawił się nadmiar (operacja arytmetyczna) lub liczba „1”| jest parzysta (operacja logiczna).
Rejestr wskaźników stanu F H (ang. half-carry) – wskaźnik przeniesienia z bitu nr 3 do bitu nr 4 Z(ang. zero) – wskaźnik zera. Jest ustawiany, jeżeli wynikiem ostatnio wykonywanej operacji jest zero. S(ang. sign) – wskaźnik znaku. Jest to kopia najbardziej znaczącego bitu wyniku operacji, wynosi 1 jeżeli wynikiem operacji jest liczba ujemna.
Cykl rozkazowy Cykl rozkazowy składa się z: • Pobrania z pamięci kodu rozkazu począwszy od adresu zawartego w liczniku rozkazów (PC). • Dekodowaniu rozkazu i przygotowaniu do wykonania. • Wykonania rozkazu, zmianie wartości pamięci lub/i rejestrów procesora. • Modyfikacji (zwiększeniu) licznika rozkazów o liczbę zależną od długości rozkazu.
Cykl rozkazowy Cykl rozkazowy składa się z jednego lub więcej cykli maszynowych (cykli procesora). Każde odwołanie się do pamięci lub urządzeń we/wy to jeden cykl maszynowy. Cykl maszynowy składa się z kilku cykli (taktów) zegarowych.
Cykle rozkazowe • Podstawowy cykl pobrania i dekodowania rozkazu, tzw. cykl M1. • Cykl zapisu/odczytu pamięci. • Cykl zapisu/odczytu urządzeń wejścia/wyjścia. • Cykl przyjęcia sygnału BUSRQ. • Cykl przyjęcia przerwania maskowalnego. • Cykl przyjęcia przerwania niemaskowalnego. • Cykl pracy jałowej po wykonaniu rozkazu HALT • Cykl zerowania i inicjalizacji pracy procesora po sygnale RESET
Przerwania Przerwanie nazywamy wymuszone odpowiednim sygnałem sterującym wstrzymanie automatycznego generowania kolejnych adresów rozkazów do wykonania i wywołanie specjalnego podprogramu obsługi. Przed przejściem do procedury obsługi przerwania na stosie zapamiętywana jest wartość rejestru PC.
Przerwania Wartości sygnałów NMI i INT są testowane podczas narastającego zbocza ostatniego taktu ostatniego cyklu maszynowego. Przerwanie INT jest zgłaszane niskim poziomem, przerwanie NMI opadającym zboczem. Po przyjęciu przerwania INT rejestry IFF1 oraz IFF2 są zerowane (zablokowanie przerwań). Po przyjęciu przerwania NMI wartość z IFF1 jest kopiowana do IFF2, a IFF1 jest zerowany.
Przerwania Potwierdzenie przyjęcia przerwania jest sygnalizowane sygnałami M1 oraz IORQ. Reakcja procesora na przerwanie: • NMI – przeskok pod adres 66(16) • INT: • tryb 0 – procesor odczytuje stan szyny danych i traktuje go jako kod rozkazu do wykonania • tryb 1 – przeskok pod adres 38(16) • tryb 2 – przeskok pod adres odczytany z tablicy wektora przerwań
INT tryb 2 Procesor odczytuje stan szyny danych i traktuje go jako młodszą połowę adresu, pod którym znajduje się adres procedury obsługi przerwania. Starsza połowa adresu jest w rejestrze I. Tablica wektora przerwań Podprogram obsługi przerwania
Odłączenie procesora od reszty układu Po otrzymaniu sygnału BUSRQ procesor przeprowadza w stan wysokiej impedancji szynę adresów i danych oraz wszystkie trójstanowe wyprowadzenia (MERQ, IORQ, RD, WR). Potwierdzeniem odłączenia procesora jest aktywny sygnał BUSACK. Taki stan trwa dopóki sygnał BUSRQ jest aktywny.
Tryby adresowania pamięci • Adresowanie rejestru wewnętrznego: LD A,C– przesłanie zawartości rejestru C do A • Adresowanie argumentu wbudowanego w rozkaz: LD A,1 – przesłanie wartości 1 do rejestru A • Adresowanie bezpośredniego argumentu dwubajtowego: LD BC,1000 – przesłanie wartości 1000 do rejestru BC • Adresowanie proste (bezpośrednie): LD (1000),A – przesłanie zawartości rejestru A do pamięci pod adres 1000
Tryby adresowania pamięci • Adresowanie pośrednie zawartością rejestru: ADD A,(HL) – dodaj do akumulatora zawartość komórki, której adres znajduje się w rejestrze HL • Adresowanie indeksowe: ADD A,(IX+10) – dodaj do akumulatora zawartość 10-tej komórki za adresem zawartym w IX • Adresowanie względne: JR 10 – skocz pod adres PC+10 • Adresowanie stronnicy zerowej: RST 8 – skocz pod adres 8(16)
Tryby adresowania pamięci • Adresowanie pojedynczych bitów: RES 0,A – wyzeruj zerowy bit akumulatora • Adresowanie niejawne: SUB 10 – odejmij od akumulatora wartość 10
Lista rozkazów Rozkazy Z80 można podzielić na 12 grup: • Rozkazy przesłań jednego bajtu. • Rozkazy przesłań dwóch bajtów. • Rozkazy wymiany. • Jednobajtowe rozkazy arytmetyczne i logiczne. • Rozkazy obrotów i przesunięć. • Dwubajtowe rozkazy arytmetyczne. • Rozkazy przesłań i przeszukiwania bloków bajtów. • Rozkazy sterujące stanem procesora. • Rozkazy adresujące pojedynczy bity. • Rozkazy skoków. • Rozkazy wywołań podprogramów i rozkazy powrotów. • Rozkazy wejścia/wyjścia.
Rozkazy przesłań jednego bajtu • LD d,s Nie ma rozkazu LD (HL),(HL) Kod 01110110 to rozkaz HALT
Rozkazy przesłań jednego bajtu • LD d,n
Rozkazy przesłań dwóch bajtów • LD dd,nn
Rozkazy wymiany EX DE,HL – wymienia zawartość pomiędzy rejestrami DE oraz HL EX (SP),HL – wymienia zawartość rejestru HL i wierzchołkiem stosu EX AF,AF’ – wymienia zawartość rejestrów A i F z rejestrami primowanymi EXX – wymienia zawartość rejestrów B, C, D, E, H, L z odpowiednimi rejestrami primowanymi
Rozkazy przesunięć RL x RR x RLC x RRC x SLA x SRL x SRA x x={A,B,C,D,E,H,L,(HL),(IX+d),(IY+d)}
16-bitowe operacje arytmetyczne ADD HL, p ADC HL, p SBC HL, p gdzie p ∈ {BC, DE, HL, SP} INC p DEC p
Rozkazy przesłań HL – adres pierwszego bajtu przesyłanego bloku DE – adres pierwszego bajtu miejsca przeznaczenia BC – liczba bajtów do przesłania LDI (LDD) – ang. load and increment • Bajt pamięci adresowany przez HL jest przesyłany pod adres zawarty w DE. • Zawartość HL oraz DE są zwiększane. • Zawartość BC jest zmniejszana o 1. • Zawartość BC jest sprawdzana – jeśli wynosi 0 procesor przechodzi do następnego rozkazu, jeśli nie całość jest powtarzana.
Rozkazy przeszukiwania bloku CPI (CPD) – ang. compare and increment • Zawartość bajtu pamięci adresowanego przez HL jest porównywana z A. Jeśli są takie same ustawiana jest flaga Z. • Wartość HL jest zwiększana o 1. • Wartość BC jest zmniejszana o 1. Jeśli wartość jest równa zero kasowana jest flaga P/V. • Sprawdzane są flagi Z oraz P/V.
Rozkazy sterujące NOP – ang. no operation HALT – zatrzymanie pracy procesora. Procesor wykonuje rozkaz NOP bez pobierania jego kodu z pamięci ale generuje sygnał RFSH. Wyjście z tego stanu poprzez zerowanie procesora (sygnał RESET) lub przerwanie. DI/EI – ang. disableinterrupt/enableinterrupt IM 0, IM 1, IM2 – ang. interrputmodes
Rozkazy skoków JP aa – skok pod adres CALL aa – skok do procedury pod adres (zapamiętywany jest licznik rozkazów PC) RET – powrót z podprogramu
Rozkazy skoków warunkowych JP w,aa– skok pod adres CALL w,aa– skok do procedury pod adres (zapamiętywany jest licznik rozkazów PC) RETw – powrót z podprogramu
Rozkazy skoków względnych JR d – skok o d bajtów JR w,d– skok o d bajtów gdy spełniony jest warunek w DJNZ d – zmniejsz wartość rejestru B i wykonuje skok jeśli B jest różne od zera
Rozkazy bitowe BIT b,r– wartość bitu jest zapisywana we fladze Z SET b,r– ustawienie bitu RES b,r– skasowanie bitu r={A,B,C,D,E,H,L,(HL)}
Rozkazy wejścia/wyjścia IN A,(n) – dana spod adresu n jest ładowana do akumulatora OUT (n),A – wartość akumulatora jest wysyłana pod adres n IN r,(C) – dana spod adresu zawartego w C jest ładowana do rejestru r OUT (C),r– wartość rejestru r jest wysyłana pod adres zapisany w C r={A,B,C,D,E,H,L}
Powroty z procedur obsługi przerwańi obsługa stosu RETI – powrót z procedury obsługi przerwania maskowalnego RETN – powrót z procedury obsługi przerwania niemaskowalnego PUSH qq– odkłada na stos parę rejestrów POP qq– zdejmuje ze stosu parę rejestrów qq={BC, DE, HL, AF}
Mnożenie liczb • Mnożna – DE • Mnożnik – A • Wynik – A i HL LD HL,0000 LD B,08 E1 ADD HL,HL RLA JR NC,E2 ADD HL,DE ADC A,00 E2 DJNZ E1 RET
Mnożenie liczb • Mnożna – DE • Mnożnik – A • Wynik – A i HL LD HL,0000 LD B,08 E1 ADD HL,HL RLA JR NC,E2 ADD HL,DE ADC A,00 E2 DJNZ E1 RET
Mnożenie liczb • Mnożna – DE • Mnożnik – A • Wynik – A i HL LD HL,0000 LD B,08 E1 ADD HL,HL RLA JR NC,E2 ADD HL,DE ADC A,00 E2 DJNZ E1 RET
Mnożenie liczb • Mnożna – DE • Mnożnik – A • Wynik – A i HL LD HL,0000 LD B,08 E1 ADD HL,HL RLA JR NC,E2 ADD HL,DE ADC A,00 E2 DJNZ E1 RET
Mnożenie liczb • Mnożna – DE • Mnożnik – A • Wynik – A i HL LD HL,0000 LD B,08 E1 ADD HL,HL RLA JR NC,E2 ADD HL,DE ADC A,00 E2 DJNZ E1 RET
Mnożenie liczb • Mnożna – DE • Mnożnik – A • Wynik – A i HL LD HL,0000 LD B,08 E1 ADD HL,HL RLA JR NC,E2 ADD HL,DE ADC A,00 E2 DJNZ E1 RET