4.1 Charakterystyka ogólna procesora INTEL 8080 i jego



Podobne dokumenty
UTK Można stwierdzić, że wszystkie działania i operacje zachodzące w systemie są sterowane bądź inicjowane przez mikroprocesor.

Mikroprocesor Operacje wejścia / wyjścia

Organizacja typowego mikroprocesora

Architektura komputera. Dane i rozkazy przechowywane są w tej samej pamięci umożliwiającej zapis i odczyt

Rejestry procesora. Nazwa ilość bitów. AX 16 (accumulator) rejestr akumulatora. BX 16 (base) rejestr bazowy. CX 16 (count) rejestr licznika

Organizacja pamięci VRAM monitora znakowego. 1. Tryb pracy automatycznej

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

Instrukcja do oprogramowania ENAP DEC-1

1.2 Schemat blokowy oraz opis sygnałów wejściowych i wyjściowych

Pośredniczy we współpracy pomiędzy procesorem a urządzeniem we/wy. W szczególności do jego zadań należy:

LEKCJA TEMAT: Zasada działania komputera.

3.2. Zegar/kalendarz z pamięcią statyczną RAM 256 x 8

Programowanie w językach asemblera i C

Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury

organizacja procesora 8086

ĆWICZENIE 7. Wprowadzenie do funkcji specjalnych sterownika LOGO!

2. Architektura mikrokontrolerów PIC16F8x... 13

MODBUS RTU wersja M1.14 protokół komunikacyjny wyświetlaczy LDN

PROGRAM TESTOWY LCWIN.EXE OPIS DZIAŁANIA I INSTRUKCJA UŻYTKOWNIKA

Hardware mikrokontrolera X51

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2

CYKL ROZKAZOWY = 1 lub 2(4) cykle maszynowe

dokument DOK wersja 1.0

3. Sieć PLAN. 3.1 Adresowanie płyt głównych regulatora pco

Architektura komputerów. Układy wejścia-wyjścia komputera

IIPW_SML3_680 (Z80) przewodnik do ćwiczeń laboratoryjnych

Technika mikroprocesorowa I Wykład 2

Licznik rewersyjny MD100 rev. 2.48

Odczyt zegara ze sterownika do panelu serii TIU z możliwością korekty ustawień zegara w sterowniku

Zgrywus dla Windows v 1.12

Logiczny model komputera i działanie procesora. Część 1.

Standard transmisji równoległej LPT Centronics

Wprowadzenie do informatyki i użytkowania komputerów. Kodowanie informacji System komputerowy

Wstęp: Interfejs portu równoległego 6821 i portu szeregowego 6850 firmy Motorola

Zadanie Zaobserwuj zachowanie procesora i stosu podczas wykonywania następujących programów

ARCHITEKTURA PROCESORA,

Opis procedur asemblera AVR

Układy wejścia/wyjścia

INSTRUKCJA OBSŁUGI. Przekaźnik czasowy ETM ELEKTROTECH Dzierżoniów. 1. Zastosowanie

Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780

Przykładowe pytania DSP 1

Program V-SIM tworzenie plików video z przebiegu symulacji

Struktura i działanie jednostki centralnej

Dokumentacja sterownika mikroprocesorowego "MIKSTER MCC 026"

LICZNIKI PODZIAŁ I PARAMETRY

Zagadnienia zaliczeniowe z przedmiotu Układy i systemy mikroprocesorowe elektronika i telekomunikacja, stacjonarne zawodowe

Instrukcja do ćwiczenia : Matryca komutacyjna

Metody obsługi zdarzeń

UTK jednostki wykonawczej EU (Ex ecution Unit), jednostki steruj c ej CU,

Tworzenie nowego projektu w asemblerze dla mikroprocesora z rodziny 8051

Podstawy techniki cyfrowej Układy wejścia-wyjścia. mgr inż. Bogdan Pietrzak ZSR CKP Świdwin

Tranzystor JFET i MOSFET zas. działania

Architektura systemów komputerowych. dr Artur Bartoszewski

interfejs szeregowy wyświetlaczy do systemów PLC

Algorytm. a programowanie -

Ćwiczenie 2. Siedmiosegmentowy wyświetlacz LED

Programowany układ czasowy

GRM-10 - APLIKACJA PC

Architektura komputerów

Programowanie w języku Python. Grażyna Koba

INSTRUKCJA OBSŁUGI. Program ProCELL. Wersja: 1.15

Architektura Systemów Komputerowych. Bezpośredni dostęp do pamięci Realizacja zależności czasowych

instrukcja użytkownika terminala ARGOX PA-20 SYSTEMY AUTOMATYCZNEJ IDENTYFIKACJI

Architektura systemów komputerowych Laboratorium 14 Symulator SMS32 Implementacja algorytmów

wersja dokumentacji 1.00 Opis programu TeleTokenEdit

MIKROKONTROLERY I MIKROPROCESORY

Diagnostyka pamięci RAM

Sygnały DRQ i DACK jednego kanału zostały użyte do połączenia kaskadowego obydwu sterowników.

Ustawienia ogólne. Ustawienia okólne są dostępne w panelu głównym programu System Sensor, po kliknięciu ikony

Aby w pełni przetestować układ o trzech wejściach IN_0, IN_1 i IN_2 chcemy wygenerować wszystkie możliwe kombinacje sygnałów wejściowych.

Elementy struktur cyfrowych. Magistrale, układy iterowane w przestrzeni i w czasie, wprowadzanie i wyprowadzanie danych.

Wstęp Architektura... 13

Licznik prędkości LP100 rev. 2.48

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych

Komputer IBM PC niezależnie od modelu składa się z: Jednostki centralnej czyli właściwego komputera Monitora Klawiatury

Struktura systemu mikroprocesorowego Z80 z interfejsem monitora graficznego.

Sterownik kompaktowy Theben PHARAO II

Odbiór i dekodowanie znaków ASCII za pomocą makiety cyfrowej. Znaki wysyłane przez komputer za pośrednictwem łącza RS-232.

INSTRUKCJA PROGRAMOWANIA KASY FISKALNEJ I-ERGOS 3050 PRZY POMOCY PROGRAMU PLU MANAGER I-ERGOS.

ADVANCE ELECTRONIC. Instrukcja obsługi aplikacji. Modbus konfigurator. Modbus konfigurator. wersja 1.1

4. Karta modułu Slave

Dodatek B. Zasady komunikacji z otoczeniem w typowych systemach komputerowych

Konfigurator Modbus. Instrukcja obsługi programu Konfigurator Modbus. wyprodukowano dla

Programowanie Mikrokontrolerów

DVR KEYB v1.4. Interfejs PS-2 do rejestratorów DVR

Programator Kart Master - klient

Podstawy techniki cyfrowej Mikroprocesory. Mgr inż. Bogdan Pietrzak ZSR CKP Świdwin

Elementy struktur cyfrowych. Magistrale, układy iterowane w przestrzeni i w czasie, wprowadzanie i wyprowadzanie danych.

ZASOBY ZMIENNYCH W STEROWNIKACH SAIA-BURGESS

Technika mikroprocesorowa I Wykład 3

Modelowanie liczników w języku Verilog i ich implementacja w strukturze FPGA

Mikroprocesor Intel 8088 (8086)

Spis treúci. Księgarnia PWN: Krzysztof Wojtuszkiewicz - Urządzenia techniki komputerowej. Cz. 1. Przedmowa Wstęp... 11

Układ sterowania, magistrale i organizacja pamięci. Dariusz Chaberski

Elementy struktur cyfrowych. Magistrale, układy iterowane w przestrzeni i w czasie, wprowadzanie i wyprowadzanie danych.

1. Opis. 2. Wymagania sprzętowe:

INSTRUKCJA OBSŁUGI SUPLEMENT

Instrukcja programu użytkownika OmegaUW.Exe. Program obsługuje następujące drukarki fiskalne: ELZAB OMEGA II generacji ELZAB OMEGA F, MERA, MERA F.

Architektura komputera

Transkrypt:

4. MCS-8.2 4.1 Charakterystyka ogólna procesora INTEL 8080 i jego otoczenia System MCS-8 (przedstawiony na rys. 1) oparty jest na procesorze 8080 firmy Intel (jego schemat blokowy został przedstawiony na rys. 2). Nie został on stworzony do pisania programów komercyjnych, ma za zadanie jedynie pokazanie użytkownikowi sposobu działania jednostki centralnej wraz z elementami pobocznymi, szczególnie pracy krokowej procesora. Rysunek 1: Jednostka centralna systemu MCS-8.2 Strona 11

Rysunek 2: Schemat blokowy procesora 8080 [7] System MCS-8 składa się z modułowej jednostki centralnej oraz inteligentnego terminala. Jednostka ma budowę modułową i składa się z procesora INTEL 8080 wraz ze standardowym otoczeniem, 2 KB pamięci ROM i 2 KB pamięci RAM oraz portów wejścia wyjścia. W pamięci ROM umieszczony jest tzw. BIOS systemu. Jeden z paneli zawiera przełączniki sterujące pracą systemu, inny zawiera wyświetlacze ośmiosegmentowe przedstawiające zawartości buforów magistral oraz diody przedstawiające wewnętrzny stan procesora. [1] Otoczenie procesora stanowią: Element sterujący 8228, Strona 12

Generator 8224, generujący sygnały taktujące procesor oraz układy wspomagające procesora. System MCS-8 składa się ponadto z: Programowego elementu czasowego 8253, Programowego sprzęgu szeregowego 8251, Uniwersalnego sprzęgu równoległego 8255, Pamięci ROM i RAM. Procesor posiada ośmiobitową magistralę danych i szesnastobitową magistralę adresową (która pozwala zaadresować 64 KB pamięci, mimo, że w systemie zawarto tylko 4 KB). Układ 8080 zawiera: Jednostkę arytmetyczno-logiczną, Blok rejestrów, Jednostkę sterującą. 4.1.1 Rejestry dostępne programowo W skład jednostki arytmetyczno-logicznej oprócz właściwej części wykonującej działania wchodzi także akumulator, akumulator tymczasowy, rejestr flagowy, rejestr tymczasowy oraz układ sterowania arytmetyką dziesiętna procesora BCD. Akumulator (A) i rejestr flagowy są rejestrami ośmiobitowymi, jednakże w przypadku rejestru flagowego wykorzystanych jest tylko pięć bitów. W kolejności od najmłodszego bitu: o CY (carry) przeniesienie bit jest ustawiany, gdy na najstarszym bicie wyniku operacji wystąpiło przeniesienie lub pożyczka, o Stała wartość 1, o P (parity) parzystość bit jest ustawiany, gdy bitowy zapis wyniku posiada parzystą ilość jedynek, o Stała wartość 0, Strona 13

o AC (auxillary carry) przeniesienie połówkowe - bit jest ustawiany, gdy wystąpi pożyczka lub przeniesienie między bitem trzecim i czwartym wyniku, o Stała wartość 0, o Z (zero) bit jest ustawiany, gdy wynik jest równy 0, o S (sign) znak bit jest ustawiany gdy najstarszy bit wyniku ma wartość 1. S Z 0 AC 0 P 1 CY Tabela I: Rejestr flagowy [4] Blok rejestrów zawiera zarówno rejestry ośmiobitowe jak i szesnastobitowe. Rejestry ośmiobitowe (B, C, D, E, H, L) można traktować jako rejestry szesnastobitowe określając pary rejestrów (BC, DE, HL). Oprócz wymienionych w bloku znajdują się również m.in. szesnastobitowe rejestry PC oraz SP. Rejestr PC (Program Counter) zawiera informację, który fragment pamięci jest aktualnie analizowany przez procesor, natomiast rejestr SP (Stack Pointer) wskazuje na miejsce w pamięci, w którym znajduje się aktualny wierzchołek stosu. Dwa ośmiobitowe rejestry przejściowe, W i Z, nie są dostępne programowo. Dane zawarte w dowolnej parze rejestrów mogą być przesłane do rejestru adresu, a także z rejestru adresu do dowolnie wybranego rejestru pamięci RAM. [5] Procesor zawiera ponadto: Rejestr rozkazów RR, Dekoder rozkazów DR, Selektor S. Strona 14

4.1.2 Otoczenie procesora Na otoczenie procesora składają się układy 8228 oraz 8224. Układ 8228 wytwarza sygnały niezbędne do współpracy procesora 8080 z systemem na podstawie słowa statutowego układu. Umożliwia to współpracę procesora z układami wejścia/wyjścia oraz pamięcią ROM i RAM. Układ 8224 generuje sygnały taktujące procesor oraz układy wspomagające procesora. W skład systemu MCS-8.2 wchodzą także układy 8251, 8253 i 8255. Programowalny układ szeregowy 8251 pełni rolę nadajnika/odbiornika służącego do szeregowej komunikacji terminala z jednostką centralną systemu. Transmisja przy pomocy układu może odbywać się w trybie synchronicznym lub asynchronicznym. W transmisji synchronicznej bity przesyłane są w ciągach, w kolejności od najmłodszego do najstarszego bitu. Transmisja rozpoczyna od się od przesłania bitu startu. Po właściwym ciągu danych następuje bit parzystości (w celach kontroli poprawności przesyłanych danych). Transmisję danego ciągu kończy bit stopu. Układ 8251 przyjmuje dane z procesora w postaci równoległej i zamienia je na postać szeregową. Jednocześnie dane odbierane przez układ w postaci szeregowej zamieniane są na słowa równoległe i przesyłane do procesora. [4],[5] Programowalny generator przedziałów czasowych jest przeznaczony do generacji szerokiego wachlarza sygnałów będących funkcją czasu lub funkcją zliczonych impulsów. Element 8253 ma trzy 16-bitowe liczniki odejmujące, których zawartość początkową można ustawić za pomocą słowa sterującego. Każdy licznik może być programowany indywidualnie dla liczenia w kodzie binarnym prostym lub w kodzie BCD. Sygnały zliczające, mogą być sygnałami wyjściowymi generatora impulsów (częstotliwość do 2MHz) lub sygnałami generowanymi przez elementy zewnętrzne (np. przyciski). Element 8253 może pracować w pięciu różnych trybach. W zależności od tego, jak element 8253 zostanie zaprogramowany, Strona 15

można go wykorzystać m. in. do generacji periodycznych żądań przerwań (a więc może służyć jako tzw. zegar czasu rzeczywistego ), do generacji żądań przerwań po upływie określonej liczby impulsów, czy do generacji ciągów impulsów o różnych częstotliwościach. [4],[5] Mechanizm działania układu 8255 jest bardzo podobny do opisanego wcześniej mechanizmu działania układu szeregowego 8251. Różnica sprowadza się głównie do innego formatu transmitowanych bloków danych. W systemie transmisji równoległej transmisja danych odbywa się również krokowo, wektorami wielobitowymi, najczęściej bajt po bajcie, lub słowami 16 bitowymi jednocześnie na wielu liniach. Programowalny sprzęg szeregowy 8255 zawiera trzy 8-bitowe tzw. bramy (ang. port) A, B i C, które pracują jako wejścia lub wyjścia. Element 8255 zajmuje cztery komórki przestrzeni adresowej: trzy bramy A,B,C oraz rejestr sterujący RS. Przed rozpoczęciem przesyłania informacji do rejestru sterującego RS należy wpisać słowo sterujące, określające tryb pracy, oraz kierunek przesyłania informacji dla poszczególnych bram. Transmisja równoległa może odbywać się w trzech trybach: Tryb 0 jest on przeznaczony do realizacji bezwarunkowych operacji wejścia-wyjścia (tzw. tryb prosty). Tryb 1 jest przeznaczony do realizacji operacji wejścia-wyjścia z przerwaniem przy jednym kierunku przesyłania danych. Potrzebne do tego celu sygnały sterujące określają bity bramy C. Tryb 2 jest przeznaczony do realizacji operacji wejścia-wyjścia z przerwaniem tylko poprzez bramę A, przy dwóch kierunkach transmisji. Potrzebne do tego celu sygnały sterujące określają bity bramy C. [4],[5] Strona 16

4.1.3 Komputer PC jako inteligentny terminal Rolę terminala pełni komputer klasy PC. Komunikuje się on z jednostką centralną łączem szeregowym. Proces programowania i obsługi jednostki centralnej odbywa się na platformie terminala, a komunikacja z jednostką centralną opiera się na wymianie kodów sterujących oraz znaków ASCII za pośrednictwem dwużyłowego kabla ekranowanego. W odpowiedzi na nadchodzący kod, program dokonuje stosownych działań (rys. 3). Komputer pracuje albo jako moduł sterowania obsługujący funkcje MCS a albo jako terminal. [1] Rysunek 3: Schemat blokowy systemu Korzystając z inteligentnego terminala użytkownik może wpisać program do pamięci RAM wystarczy skompilować wcześniej napisany program w asemblerze i przesłać go do systemu MCS-8. Przyjęto takie rozwiązanie, gdyż dzięki temu użytkownik nie musi wpisywać kodu maszynowego bezpośrednio do pamięci RAM systemu. Program TERMINAL umożliwia także modyfikację komórek pamięci RAM oraz oferuję możliwość zapamiętania programów w celu ich ponownego wykorzystania. [1] Strona 17

4.2 Praca z systemem MCS-8 Praca z systemem MCS-8 opiera się na kompilacji napisanego wcześniej programu, przesłaniu go do pamięci RAM jednostki centralnej oraz wykonaniu go. Obsługę systemu zapewniają klawisze umieszczone na przednim panelu (rys. 4). Rysunek 4: Panel jednostki centralnej 4.2.1 Przyciski i kontrolki dostępne na panelu Niestabilizowany przycisk RESET powoduje reset systemu. Jednak aby dokonać wyzerowania zawartości pamięci RAM należy pozbawić Strona 18

jednostkę zasilania na chwile ma to związek z tym, iż przy budowie systemu zastosowano pamięci statyczne. Przejście w tryb pracy ciągłej zapewnia klawisz RUN. Pozostawienie go w pozycji wciśniętej zapewnia pracę ciągłą systemu. Pozycja odwrotna przycisku spowoduje zatrzymanie wykonywania programu i umożliwia przejście w tryb pracy krokowej. Taktowania dokonuje się wciskając niestabilizowany przycisk STEP. Możliwe są dwa tryby pracy krokowej: po cyklach maszynowych lub rozkazowych. Tryb pracy określa się pozycją stabilizowanego przycisku M/INST. Do wprowadzenia mikroprocesora w stan zawieszenia służy przycisk HOLD. Wciśnięcie przycisku spowoduje symulowanie sytuacji podobnej do zachodzącej przy bezpośrednim do pamięci urządzeń zewnętrznych. Wyjście ze stanu zawieszenia następuje po zwolnieniu przycisku HOLD. Przycisk INT w poprzednich wersjach systemu służył do symulowania zgłoszenia przerwania przez urządzenie zewnętrzne. W systemie MCS-8 w wersji 8.2 zrezygnowano z tej opcji na rzecz obsługi przerwania zegarowego. Przerwanie zegarowe jest przerwaniem wykonywanym automatycznie przez system w takt sygnałów generowanych przez układ 8253. Przerwaniu zegarowemu przyporządkowano numer 7, tj. obsługa przerwania rozpoczyna się od wykonaniu rozkazu RST 7. W tablicy restartów pod adresem właściwym restartowi siódmemu umieszczono instrukcję skoku do komórki B00h, gdzie winien być umieszczony program obsługi przerwania zegarowego. [1] Na panelu MCS a umieszczono także kontrolki: WAIT przejście procesora w stan oczekiwania, MEMR wygenerowanie sygnału sterującego odczytem danych z pamięci, Strona 19

MEMRW wygenerowanie sygnału stertującego zapisem danych do pamięci, I/OW wygenerowanie sygnału sterującego zapisem danych do układów wejścia/wyjścia, I/OR wygenerowanie sygnału sterującego odczytem danych z układów wejścia/wyjścia, M1 trwanie pierwszego cyklu maszynowego obecnego rozkazu, INTE odblokowany mechanizm przerwań, INTA potwierdzenie przyjęcia zgłoszenia przerwania STACK wykonywanie rozkazu, w którym adres pamięci jest określony zawartością wskaźnika stosu, HLDA potwierdzenie przejścia procesora w stan zawieszenia, HLTA potwierdzenie przejścia procesora w stan zatrzymania. Część sygnałów wyprowadzanych jest bezpośrednio z nóżek procesora (np. INTE), niektóre z układu sterownika 8228 (np. MEMR), pozostałe zaś otrzymywane są po zdekodowaniu informacji zawartej w słowie statutowym mikroprocesora (np. M1). 4.2.2 Wyświetlacze zawartości magistral Na przednim panelu umieszczono także wyświetlacze odpowiedzialne za przestawienie zawartości magistral adresowej i danych. Korzystając z tych wyświetlaczy możemy podczas pracy krokowej systemu śledzić skąd pochodzą dane i gdzie są wysyłane. Możliwe jest także stwierdzenie, jaki rozkaz jest aktualnie wykonywany i na jakich danych operuje. Ma to oczywiście sens tylko przy pracy krokowej, a nie ciągłej. Strona 20

4.3 Tworzenie i uruchamianie własnych programów Program działający na systemie MCS-8 można stworzyć i edytować za pomocą zewnętrznego edytora tekstowego. Przy programowaniu systemu należy pamiętać, iż program użytkowy należy umieścić w pamięci RAM od adresu 800h (przy pomocy dyrektywy ORG $800) oraz aby program zakończyć instrukcją HLT. W celu kompilacji, a następnie wykonania programu należy uruchomić program TERMINAL i wybrać opcje OTWÓRZ PLIK (rys. 5): Rysunek 5: Okno OTWÓRZ PLIK programu TERMINAL Wczytany program należy skompilować przy pomocy zawartego w programie TERMINAL kompilatora. W przypadku, kiedy przy procesie kompilacji zostaną wykryte błędy, należy zakończyć program TERMINAL, ponownie uruchomić edytor tekstowy, poprawić błędy, uruchomić TERMINAL, wczytać plik z poprawionym kodem oraz powtórnie skompilować program. Kiedy kompilacja zakończy się sukcesem należy przesłać program z komputera PC do pamięci systemu MCS-8 za pomocą Strona 21

opcji programu TERMINAL. Przed przesłaniem programu, system MCS-8 musi być zresetowany (na ekranie pojawi się stosowny monit), następnie program zostaje wysłany i po zakończeniu transmisji wyświetlany jest komunikat: Program został przesłany poprawnie. Program TEMINAL nie sprawdza, czy terminal i jednostka centralna są ze sobą połączone. Jeśli moduły nie komunikują się ze sobą, to i tak po nieudanej próbie przesłania programu do pamięci RAM systemu, zostanie wyświetlony komunikat: Program został przesłany poprawnie. Jeśli użytkownik napisał, skompilował i przesłał poprawny program do jednostki centralnej, powinien uruchomić właściwy terminal. Należy upewnić się, czy przycisk RUN znajduje się w pozycji wciśniętej. Następnie należy dokonać zresetowania systemu przyciskiem RESET i poczekać, aż zostaną wykonane procedury zapisane w pamięci ROM systemu. Na ekranie zostaną wyświetlone funkcje oferowane przez system: M C S - 8.2 M E N U ADRESY WE/WY: DYREKTYWY: U8251 84H U8251 A4H U8255 AOH U8253 88H S-ZMIANA ZAWARTOSCI PAMIECI D-WYSWIETLENIE ZAWARTOSCI PAMIECI G-START PROGRAMU T-PROGRAM TRANSMISJI RESTARTY: STOS: 0FFFh RST 0 - START SYSTEMU RST 1 - WYDRUK ZNAKU Z AKUMULATORA NA MONITOR RST 2 - WCZYTANIE ZNAKU Z KLAWIATURY DO AKUMULATORA RST 3 - WYDRUK LANCUCHA Z PAMIECI OD [HL] DO '@' RST 4 - WYDRUK DWOCH ZNAKOW HEKSADECYMALNYCH Z AKUMULATORA RST 5 - WCZYTANIE CZTERECH ZNAKOW HEKSADECYMALNYCH DO REJESTROW 'DE' RST 6 - WYDRUK ZAWARTOSCI REJESTROW RST 7 - PRZERWANIE ZEGAROWE (JMP 0B00h) NACISNIJ-CR Strona 22

Następnie użytkownik może uruchomić napisany przez siebie program wybierając opcje START PROGRAMU. Na ekranie terminala pojawi się zapytanie, od którego adresu pamięci program ma rozpocząć działanie (adres przy dyrektywie ORG zaleca się umieszczanie programów na początku pamięci RAM, czyli od adresu 800h). Od tej pory należy już obserwować efekty działania programu na ekranie terminala jeśli oczywiście w programie użyto restartów przesyłających do terminala jakiekolwiek instrukcje wyświetlenia danych. Program źródłowy w postaci szesnastkowych można także wprowadzić ręcznie do pamięci RAM systemu MCS (w postaci szesnastkowej). Nie jest to metoda wygodna, dlatego dodano możliwość programowania z użyciem mnemoników. Możliwe jest ponadto ręczne wprowadzenie programu do pamięci za pomocą opcji edycji komórek. Praca z wykorzystaniem tego sposobu jest komfortowa, gdyż programowanie ułatwia sposób wyświetlania danych: w postaci dziesiętnej, szesnastkowej lub w postaci kodów ASCII. [1] Strona 23

5. Opis programu 5.1 Założenia Aplikacja ma spełniać zadania czysto dydaktyczne. Użytkownik podczas pracy z aplikacją ma nie tyle zdobywać informacje na temat pracy systemu opartego na procesorze ośmiobitowym (w tym konkretnym przypadku INTEL 8080), co wykorzystać już posiadane wiadomości. Pracujący z aplikacją powinien znać zasadę działania systemu, architekturę procesora oraz podstawowe kody rozkazów, gdyż nie są one nigdzie wyświetlane. Program nie symuluje całego systemu MCS-8, jedynie te elementu systemu, które pozwalają na zrozumienie zasady działania układu. Nie są symulowane: Programowy element czasowy 8253, Programowy sprzęg szeregowy 8251, Uniwersalny sprzęg równoległy 8255; Symulowana jest pamięć w postaci: Pierwsze 2 kb to pamięć ROM zapisany jest w niej BIOS systemu, Pozostałe 62 kb możliwe do zaadresowania przez szesnastobitową magistralę adresową są do wykorzystania przez użytkownika. W porównaniu z prawdziwym systemem MCS-8, gdzie pamięci RAM było tylko 2 kb, dodano 60 kb tak, aby wykorzystać w pełni zakres adresowań procesora (łącznie 64 kb). Zrezygnowano także z obsługi przerwania zegarowego. Użytkownik ma do dyspozycji przycisk INT, którego naciśnięcie symuluje zgłoszenie Strona 24

przez urządzenie zewnętrzne przerwania. Linie magistrali danych zmienią swój stan na wysoki, co stanowi rozkaz o kodzie FFh, czyli RST 7. 5.2 Właściwości aplikacji Aplikacja została stworzona przy pomocy programu Macromedia Authorware 7. Po załogowaniu się do systemu i wybraniu odpowiedniej opcji, użytkownik uzyskuje na ekranie monitora następujący interfejs (rys. 6): Rysunek 6: Interfejs aplikacji Strona 25

Opis wyświetlanych informacji i dostępnych opcji: 5.2.1 Kontrolki wskazujące typ cyklu maszynowego. Kombinacja dziesięciu kontrolek służy do identyfikacji, jaki z cyklów maszynowych procesora jest aktualnie wykonywany. Wyświetlane są kontrolki (rys. 7): M1,MEMR, MEMW, IOR, IOW, STACK HLTA, INTA, HLDA, INTE. Rysunek 7: Kontrolki wskazujące typ cyklu maszynowego Informacje dotyczące aktualnego stanu pobierane są ze słowa statusowego procesora oraz sygnałów kontrolnych układów pobocznych (w prawdziwym MCS-8), w symulacji zostało zdefiniowane, który z cykli danego rozkazu jest konkretnym z dziesięciu cykli. Na podstawie tego, czy dana kontrolka jest zapalona czy zgaszona możemy dokonać identyfikacji jednego z następujących cykli procesora: Strona 26

Pobranie Odczyt z pamięci Zapis do pamięci instrukcji Odczyt ze stosu Zapis na stos (Stach (MEMORY (MENORY (INSTRUCTION (STACK READ) WRITE) READ) WRITE) FETCH) M1 1 0 0 0 0 MEMR 1 1 0 1 0 MEMW 0 0 1 0 1 IOR 0 0 0 0 0 IOW 0 0 0 0 0 Stach 0 0 0 1 1 HUTA 0 0 0 0 0 INTA 0 0 0 0 0 Potwierdzenie Potwierdzenie Potwierdzenie przerwania podczas Zapis na wyjście Odczyt z wejścia przerwania zatrzymania zatrzymania (OUTPUT (INPUT READ) (INTERRUOR (HALT (INTERRUPT WRITE) ACKNOWLEDGE) ACKNOWLEDGE) ACKNOWLEDGE WHILE HALT) M1 0 0 1 0 1 MEMR 0 0 0 1 0 MEMW 0 0 0 0 0 IOR 1 0 0 0 0 IOW 0 1 0 0 0 Stach 0 0 0 0 0 HUTA 0 0 0 1 1 INTA 0 0 1 0 1 Tabela II: Cykle pracy procesora [3] Stan pozostałych kontrolek, tj. HLDA i INTE ustalany jest następująco: 1. Kontrolka HLDA jest aktywna wtedy, gdy użytkownik wprowadzi system w stan wstrzymania naciskając przycisk HOLD, a następnie poprzez naciśnięcie przycisku STEP przejdzie do analizy następnego cyklu pracy procesora. Naciśnięcie przycisku zasymuluje Strona 27

wprowadzenie procesora w stan wstrzymania, co ma miejsce przy bezpośrednim odczycie danych z pamięci przez urządzenia zewnętrzne z pominięciem procesora. Linie adresowe i linie danych procesora wprowadzane są w stan wysokiej impedancji, co przedstawiają znaki - na wyświetlaczach buforów magistral. Ponowne naciśnięcie przycisku powoduje powrót do normalnego trybu pracy pozostałych następnym cyklu pracy procesora. Stan pozostałych kontrolek pozostaje bez zmian. 2. Kontrolka INTE jest aktywna wtedy, gdy jest możliwe symulowanie zgłoszenia przerwania przez urządzenie zewnętrzne, konkretnie po ostatnim cyklu maszynowym rozkazu a przed pierwszym cyklem maszynowym nowego rozkazu. Obsługa przerwania staje się nieaktywna w przypadku, gdy system aktualnie obsługuje przerwanie (chyba, że w podprogramie obsługi przerwania wydano i wykonano rozkaz EI) oraz gdy wydano i wykonano rozkaz DI. Stan pozostałych kontrolek pozostaje bez zmian. Aplikacja umożliwia wykonywanie programu krokowo po cyklach maszynowych lub rozkazowych. Szczegółowe omówienie obu cykli pracy znajduje się w rozdziale 5.3, należy nadmienić jednak, iż przy pracy po cyklach rozkazowych, kontrolki sygnalizują stan po wykonaniu pierwszego z cykli maszynowych danego rozkazu. [3] 5.2.2 Aktualna zawartość buforów magistral danych i adresowej, rejestrów oraz stan flag. Zawartości te podawane są w postaci heksadecymalnej. Pozycje wyświetlające stan magistral zostały wyróżnione większą czcionką, gdyż to one oryginalnie znajdują się w systemie MCS-8. Pozostałe wskazania, tj. zawartość rejestrów oraz stan flag zostały zaimplementowane, aby ułatwić Strona 28

użytkownikowi korzystanie z systemu. Wyświetlacze buforów magistral oraz zawartości rejestrów i stanu flag przedstawiono na rysunkach 8 i 9: Rysunek 8: Zawartość buforów magistral adresowej i danych Rysunek 9: Zawartość rejestrów, flag i stosu Zawartość rejestrów oraz stan flag można modyfikować, co zostanie opisane w dalszej części pracy. 5.2.3 Aktualna zawartość portów wejścia/wyjścia. Tabela (rys. 10) wyświetla aktualną zawartość portów wejścia/wyjścia. System posiada 256 portów. Przy inicjacji systemu zawartość wszystkich portów jest równa i wynosi 255 (FF heksadecymalnie). Wartość na danym porcie należy odczytać, znajdując najpierw odpowiedni Strona 29

wiersz (starsza wartość dwuznakowego oznaczenia portu w systemie heksadecymalnym), a następnie wybierając odpowiednią kolumnę (młodsza wartość dwuznakowego oznaczenia portu w systemie heksadecymalnym). Na przecięciu wiersza i kolumny wyświetlana jest zawartość danego portu. Rysunek 10: Zawartość portów wejścia/wyjścia W prostokąty ujęto porty wykorzystywane w oryginalnym systemie MCS-8.2 do komunikacji z układami wejścia/wyjścia: Układ Adresy 8251 84h-85h 8251 A4h-A5h 8255 A0h-A3h 8253 88h-8Bh Tabela III: Mapa adresów systemu MCS [1] Ponieważ aplikacja nie symuluje urządzeń pobocznych, zawartości portów nie zgadzają się rzeczywistymi zawartościami systemu MCS-8 w trakcie wykonywania kodu zawartego w BIOS ie oraz przy pracy Strona 30

z programem Terminal. W celu zachowania kompatybilności, a także w celu umożliwienia użytkownikowi wykonywania innych programów wymagających symulowania zmiany zawartości rejestrów przez urządzenia zewnętrzne, dodano możliwość ręcznego modyfikowania zawartości portów. Zostanie to omówione w rozdziale 5.3. 5.2.4 Panel interakcyjny. W trakcie pracy z aplikacją użytkownik ma do wyboru kilka opcji. Może zarówno wprowadzać system w dany stan, zmienić tryb pracy aplikacji jak i dokonać zmiany wartości rejestrów. Panel podzielono na trzy kolumny z przyciskami (rys. 11): STEP, INT, HOLD, RESET, M/INSTR Wczytaj plik do RAM, Start od komórki 800h, Zmień zawartość portów, zmień zawartość rejestrów; Rysunek 11: Panel interakcyjny Strona 31

STEP: Przycisk służy do przejścia do wykonania następnego rozkazu/cyklu maszynowego. Naciśnięcie przycisku spowoduje efekt zależny od aktualnie wykonywanego rozkazu oraz od stanu symulowanego systemu. Po naciśnięciu przycisku dokonywana jest aktualizacja zawartości rejestrów, portów wejścia/wyjścia, buforów magistral oraz kontrolek. RESET: Przycisk służy do wyzerowania systemu. Rejestry i porty ustawiane są do wartości początkowych. Aplikacja dokonuje całkowitego restartu, łącznie z inicjalizacją zmiennych niezbędnych do jej właściwego działania. Rejestr Program Counter jest zerowany i analizowana jest pierwsza komórka pamięci (pierwszy bajt BIOS u). INT: Przycisk służy do aktywacji symulowania przerwania zewnętrznego. Po naciśnięciu zapamiętywana jest informacja, że zgłoszono przerwanie. Po zakończeniu cyklu rozkazowego bufor magistrali danych zawiera liczbę FFh (same jedynki), co odpowiada rozkazowi RST 7. Następuje skok do komórki 38h pamięci, gdzie zaprogramowany jest skok do komórki B00h. Tam użytkownik może umieścić program, który obsłuży przerwanie. Standardowo po wygenerowaniu przerwania niemożliwe jest ponowne jego zgłoszenie przed zakończeniem obsługi poprzedniego. Spowodowane jest to tym, że w trakcie obsługi przerwania nieaktywny jest sygnał INTE (Interrupt Enable), a przerwanie jest możliwe do obsłużenia tylko, jeśli sygnał INTE ma wartość wysoką. Przykładowe działanie systemu przerwań procesora 8080 ilustruje rysunek 12: Strona 32

Rysunek 12: Przebiegi czasowe podstawowych sygnałów procesora 8080 dla obsługi INT=H [7] Sygnałowi INTE można programowo nadać daną wartość rozkazami DI (Diable Interrupt) i EI (Enable Interrupt), które odpowiednio zerują i ustawiają wartość na linii INTE. W trakcie normalnej obsługi przerwania (bez używania rozkazów EI i DI), zakończenie wykonywania podprogramu nastąpi po wydaniu rozkazu RET. Istnieje możliwość uniemożliwienia procesorowi obsługi przerwania wydając w trakcie normalnej pracy rozkaz DI. Jak można się domyślać stan linii INTE będzie niski, co zaowocuje tym, że naciśnięcie przycisku INT nie da żadnego efektu. HOLD: Przycisk służy do wprowadzenia procesora w stan HOLD lub wyprowadzenia z niego po naciśnięciu przycisku STEP (w następnym cyklu pracy). Tryb HOLD może być aktywowany w trakcie trwania wykonywania rozkazu po cyklach maszynowych lub zegarowych. W aplikacji nie ma on większego zastosowania ma jedynie uzmysłowić użytkownikowi, że w prawdziwym Strona 33

systemie istnieje taka możliwość. Przejście w stan HOLD powoduje wprowadzenie magistral danych i adresowej w trzeci stan, tzw. wysokiej impedancji. Objawia się to tym, że na wyświetlaczach buforów widoczne są znaki -. M/INSTR: Przycisk służy do przełączania pomiędzy dwoma trybami pracy aplikacji. Klawisz jest stabilizowany. Domyślnym trybem jest praca krokowa po cyklach maszynowych. Poniżej panelu przedstawiającego zawartość rejestrów oraz flag wyświetlana jest informacja, w jakim trybie aplikacja aktualnie pracuje. Przy przełączaniu pomiędzy trybami zastosowano kilka zasad: Jeśli aktualnie wykonywanym cyklem jest pierwszy cykl maszynowy rozkazu, możemy swobodnie przełączyć aplikację pomiędzy trybami, Jeśli aplikacja jest w trybie pracy po cyklach maszynowych i wydamy polecenie zmiany trybu na pracę po cyklach rozkazowych, aktualnie wykonywany rozkaz zostanie dokończony w trakcie pracy po cyklach maszynowych. Będzie to miało odzwierciedlenie w informacji wyświetlonej na ekranie mimo, że przycisk M/INST będzie w pozycji wciśniętej (co sugerowało by że aplikacja jest w trybie pracy po cyklach rozkazowych), to poniżej panelu przedstawiającego zawartość rejestrów będzie znajdować się informacja o aktualnym trybie pracy po cyklach maszynowych. Po dokończeniu realizacji rozkazu symulator będzie analizować następne komórki pamięci w trybie rozkazowym, zaktualizowana zostanie także informacja o aktualnym trybie pracy. Przy pracy po cyklach maszynowych kontrolki identyfikacyjne typ cyklu maszynowego wyświetlają stan właściwy dla danego cyklu; Strona 34

przy pracy po cyklach rozkazowych, kontrolki wyświetlają stan właściwy dla pierwszego z cykli maszynowych danego rozkazu. Przy pracy w trybie rozkazowym wykonanie przerwania możliwe jest tylko i wyłącznie po rozkazie składającego się z jednego cyklu. Rozwiązanie takie przyjęto ze względu na założenia wyświetlania kontrolek wskazujących typ cyklu maszynowego. Ponieważ przy pracy po cyklach rozkazowych wyświetlany jest stan dla pierwszego z cykli maszynowych rozkazu, a sygnał INTE przyjmuje wartość wysoką po ostatnim cyklu maszynowym rozkazu, zgłoszenie przerwania przyciskiem INT jest możliwe tylko po rozkazie składającym się z jednego cyklu maszynowego. Wczytaj plik do RAM: Naciśnięcie przycisku powoduje wyświetlenie standardowego okienka dialogowego systemu Windows. Należy wybrać plik tekstowy o następującej składni: Bajt1 Bajt2 Bajt3 Bajt4 Bajt5 Bajt6 Przykład: FE 45 23 C2 D2 Wielkość liter nie ma znaczenia. Dozwolone symbole to cyfry oraz litery A, B, C, D, E, F, zarówno małe jak i duże. Jeśli zawartość pliku nie będzie zgodna z formatem, a konkretnie: jeśli zostanie użyty niedozwolony symbol, jeśli łańcuch oddzielony spacjami będzie miał więcej lub mniej niż 2 znaki, to danej komórce zostanie przypisana wartość 0, a na ekranie zostanie wyświetlony komunikat o błędnej składni pliku. Dla przykładu: łańcuch: ef DH 32 56d 3 21 zostanie zinterpretowany jako: EF 00 32 00 00 21. Strona 35

Zawartość pliku powinna zawierać program w postaci kodu maszynowego. Aplikacja wstawia w miejsce niepoprawnych wartości zera, aby nie zakłócić wielkości i kolejności kodu. Kod po przeanalizowaniu poprawności wczytywany jest do symulowanej pamięci RAM, poczynając od komórki 800h (pierwsze 2 kb, czyli komórki od 0h do 7FFh zajmuje BIOS). Wielkość pliku jest ograniczona do 62 kb. Zawartość BIOS u zapisana jest w pliku BIOS.TXT. Poprzez zmianę zawartości tego pliku można modyfikować pierwsze 2 kb pamięci. Ponieważ BIOS jest wczytywany przy starcie aplikacji, aby uaktualnić wczytany BIOS należy uruchomić aplikację od nowa. Start od komórki 800h: Przycisk staje się aktywny, jeśli wczytanie pliku do pamięci RAM zostało zakończone pomyślnie. Naciśnięcie powoduje wyzerowanie rejestrów A, B, C, D, E, H, L, ustawienie rejestru SP na FFFh, ustawienie rejestru PC na 800h i wyzerowanie flag. Aplikacja symuluje, że zostały wykonane wszystkie instrukcje BIOS u, a następnym analizowanym rozkazem będzie pierwszy rozkaz programu wczytanego wcześniej z pliku. Strona 36

Zmień zawartość portów: Naciśnięcie przycisku spowoduje pojawienie się ekranu (rys. 13): Rysunek 13: Ekran zmiany zawartości portu Ponieważ portów jest 256 (licząc od zera), podana liczba nie może być większa od 255. Liczbę można podać binarnie, dziesiętnie lub heksadecymalnie. Wskazanie, w jakim formacie podano liczbę realizowane jest przez podanie na końcu łańcucha litery oznaczającej dany format: b dla liczby binarnej, d dla liczby dziesiętnej, h dla liczny heksadecymalnej; Strona 37

Jeśli nie podano litery, aplikacja zinterpretuje liczbę jako dziesiętną. Po wpisaniu wartości i zaakceptowaniu przyciskiem OK pojawi się następujący komunikat: Aktualna zawartość rejestru xx to yy. Podaj nową wartość. W miejscu xx wyświetlana jest informacja, na jakim porcie dokonujemy zmiany, a w miejsce yy aktualna wartość na tym porcie. Podobnie jak przy poprzednim kroku, także tutaj nie możemy wpisać liczby innej niż z zakresu <0,255>. Po zaakceptowaniu nastąpi powrót do głównego ekranu i jeśli dokonaliśmy aktualizacji zawartości portów, znajdzie to odzwierciedlenie w tabeli portów. Zmień zawartość rejestrów: Naciśnięcie przycisku spowoduje pojawienie się nowego ekranu (rys. 14). Dla wygody zostanie wyświetlona informacja o zawartości rejestrów i stanie flag. Użytkownik ma możliwość wpisania pożądanej wartości, korzystając z tych zasad formatu liczby, jakie omówione były przy aktualizacji zawartości portów wejścia/wyjścia. Jeśli użytkownik chce zaktualizować zawartość danego rejestru, po wpisaniu wartości należy nacisnąć przycisk odpowiadający danemu rejestrowi. Oczywiście nie można wpisać za dużej wartości. Rejestry ośmiobitowe przyjmą maksymalnie wartość 255, a rejestry szesnastobitowe wartość 65535. Przy aktualizacji flag zastosowany prosty mechanizm dopełnienia wartości. Jeśli flaga jest ustawiona, to naciśnięcie przycisku spowoduje wyzerowanie flagi i odwrotnie. Strona 38

Rysunek 144: Ekran zmiany zawartości rejestrów oraz flag Strona 39