SYMULATOR PROGRAMOWY MIKROPROCESORA Z80



Podobne dokumenty
Instrukcja obsługi Konfigurator MLAN-1000

Zawartość. Wstęp. Moduł Rozbiórki. Wstęp Instalacja Konfiguracja Uruchomienie i praca z raportem... 6

Instrukcja importu dokumentów z programu Fakt do programu Płatnik

Temat: Organizacja skoroszytów i arkuszy

Laboratorium - Monitorowanie i zarządzanie zasobami systemu Windows 7

Włączanie/wyłączanie paska menu

Krótki kurs obsługi środowiska programistycznego Turbo Pascal z 12 Opracował Jan T. Biernat. Wstęp

Instrukcja obsługi systemu elektronicznego katalogu przedmiotów (sylabusów)

e-podręcznik dla seniora... i nie tylko.

1. Dockbar, CMS + wyszukiwarka aplikacji Dodawanie portletów Widok zawartości stron... 3

5.2. Pierwsze kroki z bazami danych

Programator Kart Master - klient

DODAJEMY TREŚĆ DO STRONY

Podręczna pomoc Microsoft Power Point 2007

Instrukcja do oprogramowania ENAP DEC-1

Laboratorium - Monitorowanie i zarządzanie zasobami systemu Windows Vista

I. Program II. Opis głównych funkcji programu... 19

CZĘŚĆ A PIERWSZE KROKI Z KOMPUTEREM

Oficyna Wydawnicza UNIMEX ebook z zabezpieczeniami DRM

imei Instytut Metrologii, Elektroniki i Informatyki

Tworzenie nowego projektu w asemblerze dla mikroprocesora z rodziny 8051

1. Opis. 2. Wymagania sprzętowe:

Tworzenie prezentacji w MS PowerPoint

OPROGRAMOWANIE DEFSIM2

Zadanie 1. Stosowanie stylów

OPTIMA PC v Program konfiguracyjny dla cyfrowych paneli domofonowy serii OPTIMA ELFON. Instrukcja obsługi. Rev 1

Synchronizator plików (SSC) - dokumentacja

Dlaczego stosujemy edytory tekstu?

WinSkład / WinUcz 15.00

Korzystanie z edytora zasad grupy do zarządzania zasadami komputera lokalnego w systemie Windows XP

Instrukcja obsługi programu PLOMP PLUS FM

Instrukcja użytkownika systemu medycznego

OBSŁUGA PRACY DYPLOMOWEJ W APD PRZEZ RECENZENTA

Laboratorium - Monitorowanie i zarządzanie zasobami systemu Windows XP

Edytor tekstu OpenOffice Writer Podstawy

Dodawanie stron do zakładek

5.4. Tworzymy formularze

etrader Pekao Podręcznik użytkownika Strumieniowanie Excel

Formatowanie tekstu za pomocą zdefiniowanych stylów. Włączanie okna stylów. 1. zaznaczyć tekst, który chcemy formatować

Diagnostyka pamięci RAM

Instrukcja. importu dokumentów. z programu Fakt do programu Płatnik. oraz. przesyłania danych do ZUS. przy pomocy programu Płatnik

Kontrola topto. 1. Informacje ogólne. 2. Wymagania sprzętowe i programowe aplikacji. 3. Przykładowa instalacja topto. 4. Komunikacja.

Informatyka Edytor tekstów Word 2010 dla WINDOWS cz.1

Oto istotne informacje o skrótach klawiszowych ZoomText:

Szkolenie dla nauczycieli SP10 w DG Operacje na plikach i folderach, obsługa edytora tekstu ABC. komputera dla nauczyciela. Materiały pomocnicze

Zgrywus dla Windows v 1.12

edycja szablonu za pomocą serwisu allegro.pl

Instrukcja obsługi. Generatora CSV

PROBLEMY TECHNICZNE. Co zrobić, gdy natrafię na problemy związane z użytkowaniem programu DYSONANS

Zadanie Wstaw wykres i dokonaj jego edycji dla poniższych danych. 8a 3,54 8b 5,25 8c 4,21 8d 4,85

System obsługi wag suwnicowych

Zadanie 11. Przygotowanie publikacji do wydrukowania

Dodawanie stron do zakładek

Dokładny opis instalacji programów RFD można znaleźć w pliku PDF udostępnionym na stronie w zakładce Downland > AutoCAD > Instalacja

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

Nagrywamy podcasty program Audacity

Wyniki operacji w programie

1. Wybierz polecenie rysowania linii, np. poprzez kliknięcie ikony W wierszu poleceń pojawi się pytanie o punkt początkowy rysowanej linii:

Rys.1. Technika zestawiania części za pomocą polecenia WSTAWIAJĄCE (insert)

Szybka instrukcja tworzenia testów dla E-SPRAWDZIAN-2 programem e_kreator_2

Elektroniczny Urząd Podawczy

Klawiatura. Klawisze specjalne. Klawisze specjalne. klawisze funkcyjne. Klawisze. klawisze numeryczne. sterowania kursorem. klawisze alfanumeryczne

Instrukcja uruchomienia i obsługi Programu Użytkownika Kas Posnet PUK

Rozdział II. Praca z systemem operacyjnym

Instrukcja logowania do systemu e-bank EBS

1. INFORMACJE O DOKUMENCIE 2. WPROWADZENIE

Edytor tekstu OpenOffice Writer Podstawy

Pracownia internetowa w każdej szkole (edycja Jesień 2007)

Instrukcja instalacji i obsługi modemu ED77 pod systemem operacyjnym Windows 98 SE (wydanie drugie)

Adobe InDesign lab.1 Jacek Wiślicki, Paweł Kośla. Spis treści: 1 Podstawy pracy z aplikacją Układ strony... 2.

Fragment tekstu zakończony twardym enterem, traktowany przez edytor tekstu jako jedna nierozerwalna całość.

1. Opis okna podstawowego programu TPrezenter.

Wprowadzenie do środowiska Qt Creator

System Informatyczny CELAB. Terminy, alarmy

Instrukcja użytkownika ARSoft-WZ1

Wstęp... 3 Win BOSS, czyli SM-Boss pod Windows... 4 SM-Boss w środowisku Windows... 4 Obsługa myszy... 4 Definiowanie drukarek... 4 Wymagania...

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

Windows 10 - Jak uruchomić system w trybie

Informatyka Arkusz kalkulacyjny Excel 2010 dla WINDOWS cz. 1

Podręcznik użytkownika programu. Ceremonia 3.1

instrukcja obsługi programu Neofon

Podręcznik Użytkownika LSI WRPO

Nawigacja po długim dokumencie może być męcząca, dlatego warto poznać następujące skróty klawiszowe

Podstawowe informacje o obsłudze pliku z uprawnieniami licencja.txt

Jak przygotować pokaz album w Logomocji

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2

I Tworzenie prezentacji za pomocą szablonu w programie Power-Point. 1. Wybieramy z górnego menu polecenie Nowy a następnie Utwórz z szablonu

Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury

Program emulatora GPS pobieramy ze strony z działu Pobieralnia.

Instrukcja użytkowania

Dokumentacja programu. Zoz. Uzupełnianie kodów terytorialnych w danych osobowych związanych z deklaracjami POZ. Wersja

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

PIERWSZE URUCHOMIENIE PROGRAMU ITNC PROGRAMMING STATION

Pakiet informacyjny dla nowych użytkowników usługi Multimedia Internet świadczonej przez Multimedia Polska S.A. z siedzibą w Gdyni

Licznik rewersyjny MD100 rev. 2.48

MS Word Długi dokument. Praca z długim dokumentem. Kinga Sorkowska

INSTRUKCJA INSTALACJI I URUCHOMIENIA PROGRAMÓW FINKA DOS W SYSTEMACH 64 bit

Serwis jest dostępny w internecie pod adresem Rysunek 1: Strona startowa solidnego serwisu

1. Logowanie do Systemu BCW

Transkrypt:

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki SYMULATOR PROGRAMOWY MIKROPROCESORA Z80 opis użytkowy dr inż. L.Grodzki na podstawie pracy dyplomowej mgr inż. J.Rydzewskiego Białystok 2015

1 OGÓLNY OPIS PROGRAMU...3 1.1 INSTALACJA PROGRAMU...3 1.2 KONFIGUROWANIE PROGRAMU...3 1.3 SYMULACJA I WIZUALIZACJA STANU PROCESORA...5 1.4 ZARZĄDZANIE OKNAMI W PROGRAMIE...10 2 OPIS UŻYTKOWY SYMULATORA...10 2.1 PRZYGOTOWANIE TEKSTU PROGRAMU...11 2.2 ASEMBLACJA PROGRAMU...12 2.3 OBSŁUGA SYMULATORA...14 2.3.1 Praca krokowa...15 2.3.2 Praca ciągła...15 2.3.3 Przeskocz...16 2.3.4 Wykonaj do...16 2.3.5 Wykonaj do RET...16 2.3.6 Auto krok...16 2.3.7 Pułapki...16 2.3.8 Przerwania...17 2.4 MENU PROJEKT...18 3 BIBLIOGRAFIA...19 2

1 Ogólny opis programu Oprócz podstawowej funkcji jaką jest programowa symulacja działania mikroprocesora Z80, program oferuje użytkownikowi wbudowany edytor tekstu źródłowego oraz mechanizm asemblacji tego tekstu do pliku wynikowego, przy użyciu wybranego asemblera (domyślnie jest to meta-asembler C32 [2]). Program posiada uporządkowane menu, w którym zawarte są wszystkie funkcje. Dodatkowo poniżej menu umieszczono pasek z szybkimi przyciskami, które realizują najczęściej wykonywane funkcje. Program może pracować pod systemami rodziny Windows czyli Windows 98, Windows Me, Windows 2000 i Windows XP. Typ systemu nie ma dużego znaczenia, ponieważ program nie korzysta ze specyficznych dla danego systemu funkcji. 1.1 Instalacja programu Program nie wymaga specjalnej procedury instalacyjnej w 32-bitowych systemach operacyjnych. W przypadku 64-bitowych wersji systemów operacyjnych ze względu na wykorzystywanie meta-asemblera c32.exe konieczne jest skorzystanie z wirtualnej maszyny XP. W takim przypadku katalog z plikami roboczymi oraz oprogramowaniem narzędziowym (np. Z80) należy założyć na udostępnionym przez wirtualne XP dysku C (inna lokalizacja tego katalogu uniemożliwi uruchomienie meta-asemblera). 1.2 Konfigurowanie programu W celu dostosowania programu do indywidualnych potrzeb użytkownika, posiada on możliwość ustawiania pewnych parametrów, które decydują o działaniu programu. Wszystkie parametry konfiguracji programu można zmieniać w specjalnym oknie konfiguracji, które otwiera się z menu [Konfiguracja/Zmień...]. Okno to zawiera kilka zakładek z grupami ustawień. Na każdej zakładce znajdują się parametry wybranej grupy. Podział ten ułatwia orientację w gąszczu różnych opcji. Widok zakładek okna konfiguracji przedstawiają rysunki 1.1-1.4. Po zmianie ustawień konfiguracyjnych wskazane jest ich zapisanie w pliku konfiguracyjnym SYMULATOR.INI opcjami [Konfiguracja/Zapisz]. 3

Rys. 1-1. Okno konfiguracji - ustawienia ogólne Rys. 1-2. Okno konfiguracji - ustawienia kolorów 4

Rys. 1-3. Okno konfiguracji - ustawienia edytora Rys. 1-4. Okno konfiguracji - ustawienia asemblacji 1.3 Symulacja i wizualizacja stanu procesora Symulacja mikroprocesora wykonywana jest na poziomie rozkazów. Poziom ten jest wystarczający do testowania i uruchamiania programów pisanych przez studentów na zajęciach laboratoryjnych. Funkcje dotyczące symulacji są wzorowane na funkcjach pana Marata Fayzullina. Źródła tych funkcji udostępnił on do niekomercyjnego wykorzystania na [3]. 5

Wizualizacja zestawu rejestrów i flag umieszczona jest w oddzielnym oknie, które nazywa się Rejestry, przedstawionym na rysunku 1.5. Minimalny widok tego okna zawiera flagi i rejestry podstawowe. Wartości rejestrów są przedstawione na dwa sposoby: w systemie szesnastkowym (HEX), w specjalnym polu edycyjnym obok nazwy rejestru i w systemie binarnym, za pomocą kolorowych prostokątów reprezentujących poszczególne bity rejestru. Wartość rejestru można zmieniać wpisując wartość w systemie szesnastkowym (HEX) lub klikając na poszczególne prostokąty i modyfikując w ten sposób wartość pojedynczych bitów. Rys. 1-5. Pełne okno rejestrów Okno rejestrów może być powiększone o prezentację zawartości pamięci adresowanej przez rejestry, które mogą służyć m.in. do adresowania pośredniego: BC, DE, HL, IX, IY, PC, SP. Możliwe jest również powiększenie okna w celu prezentacji zestawu rejestrów alternatywnych. Rozwiązanie takie daje możliwość zaoszczędzenia miejsca na ekranie przez dostosowanie wymiarów okna do potrzeb użytkownika. Zawartość pamięci RAM jest przedstawiona w oknie RAM X, gdzie X to numer okna pamięci. Oznacza to możliwość pokazania kilku okien z pamięcią. Każde ma swój numer. Przykładowy widok takiego okna jest na rysunku 1.6. Dzięki temu możliwe jest obserwowanie jednocześnie kilku obszarów pamięci. Poszczególne komórki pamięci umieszczone są w tabeli, która ma 9 kolumn i w zależności od rozmiaru pamięci odpowiednią liczbę wierszy. W pierwszej kolumnie umieszczony jest adres pierwszej komórki w danym wierszu. Następne osiem kolumn to kolejne komórki pamięci. Dziewiąta kolumna przedstawia odpowiedniki w kodzie ASCII zawartości komórek w 6

wierszu. Na dole okienka umieściłem pasek statusu, na którym wyświetlane są informacje takie jak: adres zaznaczonej komórki pamięci, wartość w systemie szesnastkowym HEX, wartość w systemie dziesiętnym i znak w kodzie ASCII. W razie gdyby zaistniała konieczność odświeżenia widoku pamięci, należy dwukrotnie kliknąć na pasek statusu. Po zakończonym odświeżaniu zostanie wyświetlony na tym pasku komunikat: Odświeżanie zakończone. Rys. 1-6. Okno widoku pamięci Prezentacja portów wejść/wyjść posiada osobne okno Porty, jak na rysunku 1.7, niewidoczne przy uruchomieniu programu. Można je jednak przywołać poleceniem [Okna/Pokaż porty]. W oknie Porty możliwy jest jednoczesny podgląd czterech portów. Numer portu można wybrać za pomocą specjalnych pól edycyjnych, w których numer portu jest przedstawiony w systemie szesnastkowym. Zawartość wybranego portu jest prezentowana (podobnie jak rejestry) na dwa sposoby: w systemie szesnastkowym (HEX), w specjalnym polu edycyjnym obok numeru portu i w systemie binarnym, za pomocą kolorowych prostokątów reprezentujących stany poszczególnych bitów portu. Rys. 1-7. Okno portów we/wy Okno Kod programu zawiera interpretację zawartości pamięci jako rozkazów mikroprocesora. Główną część okna zajmuje tablica posiadająca trzy kolumny: adres, kod, rozkaz. W każdym wierszu w pierwszej kolumnie znajduje się adres początku rozkazu, w drugiej - kod rozkazu w kodzie HEX, w trzeciej mnemonik asemblerowy rozkazu. Program nie ma możliwości rozpoznania czy pod danym adresem w pamięci 7

znajduje się rozkaz czy dane. Dlatego cały obszar pamięci jest interpretowany jako rozkazy. Z tego względu może się zdarzyć, że początek kolejnego rozkazu zacznie się w niewłaściwym miejscu. Na rysunku 1.8 jest pokazane przykładowe źródło programu, które zostało skompilowane i załadowane do pamięci symulatora. CPU "Z80.TBL" HOF "INT8" ORG 0H jp start dwl 0C334H start: inc a jp start END Rys. 1-8. Zła interpretacja kodu programu Program zaczyna się od adresu 0H. Pierwszą instrukcją jest skok do etykiety start, która znajduje się za dwubajtową daną 0C334H. Następnie zwiększana jest o jeden wartości rejestru A i następuje ponowny skok do etykiety start. Po kompilacji i załadowaniu tego programu do pamięci symulatora, w oknie Kod programu pojawiła się interpretacja tego kodu widoczna na rysunku 1.8. Na przykładzie tego krótkiego programu widać, że interpretacja kodu pierwszej instrukcji jest prawidłowa JP 0005H, a następna instrukcja została zinterpretowana jako INC (HL), a nie jako dana 34H. To jeszcze nie stwarza problemu, bo rozkaz jest jednobajtowy i interpretacja następnego kodu zacznie się od kolejnego bajtu. Następny zinterpretowany rozkaz jest już 3 bajtowy (JP XXXXH). Nakłada się on na następną prawidłową instrukcję, powodując błędne interpretacje kodów dalszych rozkazów. Choć program jest wykonywany prawidłowo to interpretacja w oknie kodu jest błędna. Jeżeli chcemy, aby w dalszej części program był interpretowany poprawnie należy podać adres, od którego zaczyna się poprawna instrukcja. Można zrobić to klikając prawym przyciskiem myszki w oknie kodu programu i z menu podręcznego wybrać opcję Pokaż kod od... Pojawi się okno z pytaniem o adres jak na rysunku 1.9. 8

Rys. 1-9. Okno do podania adresu Należy podać adres (w tym przypadku 0005H) i zaznaczyć opcję Początek od tego adresu. Teraz okno kodu programu wygląda tak jak na rysunku 1.10. Rys. 1-10. Prawidłowa interpretacja kodu programu Okno Kod programu oprócz prezentacji przetłumaczonych rozkazów, posiada kilka innych przydatnych funkcji, takich jak: zmiana rozkazów - realizowaną przez edycję mnemonika rozkazu w trzeciej kolumnie okna. Jeśli nowy rozkaz jest dłuższy (w bajtach) od pierwotnego, to zmianie ulegną także bajty następne. Jeśli zmieniony rozkaz jest krótszy, to wolne miejsce jest wypełniane rozkazami NOP. W obu przypadkach wyświetli się okienko z informacją, jaka jest różnica w bajtach i pytaniem czy kontynuować zmianę rozkazu. Edycja bezpośrednio w oknie kodu programu powinna ograniczyć się do drobnych zmian, nie powodujących zwiększenia długości kodu rozkazu. Natomiast większe zmiany powinny być nanoszone w kodzie źródłowym programu; odświeżenie widoku - realizowane po kliknięciu w dolny pasek okna programu (zgodnie z widocznym na nim opisem). Ponieważ odświeżanie może czasem zająć sporo czasu, w celu jego przerwania należy powtórnie kliknąć na pasek statusu; wyróżnienie wiersza z rozkazem, który zostanie wykonany w następnym kroku pracy procesora (czyli pozycja rejestru PC) - wyróżniony wiersz ma czerwone tło; modyfikacja wartości licznika rozkazów PC - jeżeli nowa wartość PC ma wskazywać na jeden z rozkazów widocznych w oknie programu, to należy kliknąć prawym 9

klawiszem myszy na tym rozkazie i wybrać z pojawiającego się menu opcję PC=XXXX, zmieni się wartość PC i wskazany rozkaz zostanie podświetlony jako rozkaz do wykonania; wyróżnienie wierszy, w których zostały ustawione pułapki - wyróżniony wiersz ma zielone tło; ustawianie pułapek programowych - po kliknięciu prawym klawiszem myszy na wybrany rozkaz wskazujemy opcję Przełącz pułapkę albo po wskazaniu rozkazu lewym klawiszem myszy wciskamy F2; wykonanie programu do wybranego, widocznego w oknie rozkazu - po kliknięciu prawym klawiszem myszy na wybrany rozkaz wskazujemy Wykonaj do albo po wskazaniu rozkazu lewym klawiszem myszy wciskamy F4. 1.4 Zarządzanie oknami w programie Okna widoczne podczas pracy programu symulatora podlegają typowym regułom, jak w programach okienkowych: mogą być przesuwane, zamykane, można zmieniać ich wymiary. Dodatkowo okno edytora tekstu programu może być minimalizowane lub maksymalizowane. Opcje menu: [Okna/Ustaw okna] oraz [Okna/Ustaw okna i rozmiary] służą szybkiemu uporządkowaniu podstawowych okienek wizualizujących stan symulowanego procesu. Opcja [Okna/Nowe okno RAM] pozwala otwierać kolejne okna do podglądu zawartości symulowanej pamięci operacyjnej. Okna te zawsze pokazują zawartość pamięci od komórki o adresie 0000h. Chcąc oglądać inny fragment pamięci należy użyć dostępnych z boku przycisków suwaka. Wśród przycisków szybkiego wyboru znajdują się także przyciski przełączające (aktywujące) okno Rejestry, Kod programu i dowolne okno RAM X. 2 Opis użytkowy symulatora Program uruchamia się przez wywołanie pliku symulator.exe Po chwili pojawia się okno główne programu jak na rysunku 2.1. Rys. 2-1. Okno główne programu 10

Następnie, w zależności od potrzeb, przystępujemy do przygotowanie tekstu programu, jego asemblacji lub symulacji wcześniej przygotowanego kodu programu. Sposób przeprowadzenia tych czynności zostanie opisany poniżej. 2.1 Przygotowanie tekstu programu Tekst programu uruchamianego programu można przygotować w dowolnym edytorze tekstowym pozwalającym na zapis tekstu bezpośrednio w kodzie ASCII (bez informacji edytorskich i formatujących). Najwygodniejszym jednak rozwiązaniem jest skorzystanie z edytora wbudowanego w opisywany symulator. Oferuje on funkcję kolorowania składni - dzięki niej w tekście programu możemy rozróżnić krojem lub kolorem czcionki takie elementy jak: mnemoniki rozkazów, liczby, etykiety, komentarze itd. (patrz konfigurowanie programu). Chcąc rozpocząć pisanie tekstu nowego programu, należy użyć menu Asembler/Nowy lub klawisza szybkiego wyboru umożliwiające wpisywanie tekstu programu (rysunek 2.2).. Pojawi się wtedy okno Rys. 2-2. Okno edytora z przykładowym programem Można również rozpocząć od gotowego "pliku startowego" SZKIELET.ASM zawierającego już niezbędne dyrektywy asemblera. Należy w tym celu skorzystać z opcji [Asembler/Otwórz plik ASM] albo klawisza szybkiego wyboru. W ten sam sposób można powrócić do edycji uprzednio przygotowywanego programu. Menu 11

[Asembler] ma także opcję [Wczytywane], umożliwiającą szybkie odwołanie się do jednego z pięciu wcześniej edytowanych plików. Po napisaniu programu dla Z80 należy zapisać go na dysku, używając menu [Asembler/Zapisz ASM jako...] lub klawiszem. Pojawi się standardowe dla systemu Windows okno dialogu do zapisania pliku. Aktualizację już istniejącego pliku ASM nową treścią wykonuje się tak samo. 2.2 Asemblacja programu Program może współpracować z dowolnym asemblerem, generującym plik z kodem binarnym w formacie Intel-hex. Wyboru programu asemblującego dokonuje się na odpowiedniej zakładce okna konfiguracji. Domyślnie program jest skonfigurowany do korzystania z meta-asemblera C32.EXE. Wynikają z tego pewne ograniczenia: nazwy plików *.ASM muszą być w formacie DOS-owym '8.3', tj. maksimum 8 znaków nazwy; nazwy katalogów nie powinny być dłuższe niż 8 znaków. Przygotowany w edytorze program można skompilować używając menu [Asembler/Kompiluj] lub klawiszem. UWAGA: Za każdym razem, gdy chcemy skompilować edytowany program, plik w edytorze musi być zapisany na dysku. Operację zapisu przed kompilacją można zautomatyzować, zaznaczając w konfiguracji na zakładce Kompilator opcję Automatycznie zapisz przed kompilacją. Przy takim ustawieniu, gdy zostanie użyta komenda [Asembler/Kompiluj] lub klawisz, najpierw plik w edytorze zostanie zapisany na dysk, a potem zostanie wykonana kompilacja. Po kompilacji może się okazać, że wystąpiły błędy. Są one wyświetlane w dolnej części okna edytora, gdzie pojawia się wyjście kompilatora 1 (rysunek 2.3). 1 wyjście kompilatora komunikaty wyświetlane przez program w czasie jego działania 12

Rys. 2-3. Wynik kompilacji programu z błędami Kursor edytora zostanie przeniesiony w miejsce pierwszego błędu. U dołu rysunku 2.3 widoczny jest opis błędu w linii 10 kolumna 12 o treści Undefined label, czyli niezdefiniowana etykieta. Jak widać w kodzie źródłowym w instrukcji jr dale w etykiecie dale brakuje jednej litery j. Po poprawieniu błędu możemy przejść do następnego wykrytego błędu, klikając dwukrotnie w dolnej części okna edytora na linijce zawierającej tekst następnego błędu. Kursor edytora zostanie przeniesiony w miejsce, gdzie wystąpił błąd. W ten sposób można szybko poprawić błędy, nie tracąc czasu na odnajdywanie miejsca, w którym one wystąpiły. Jeżeli program asemblujący nie zgłosi żadnego błędu, nie pojawią się dodatkowe informacje w oknie edytora. Przy asemblacji powstaje dodatkowo plik o rozszerzeniu *.LST, który zawiera pełny raport z pracy meta-asemblera C32 wraz z przedrukiem asemblowanego programu. Na zakładce Kompilator okna konfiguracji możliwe jest również włączenie opcji Pokazuj tylko ostrzeżenia i błędy, która powoduje filtrowanie wyników kompilacji tak, aby w miejscu wyników kompilacji znajdowały się tylko informacje dotyczące ostrzeżeń i błędów. Przy bezbłędnej asemblacji tekstu programu generowany jest plik wynikowy typu *.HEX (w formacie Intel-hex). Uwaga: widoczna w menu opcja [Pamięć/Asembluj z pliku] służy do asemblowania pojedynczych rozkazów, zapisanych w zewnętrznym pliku. Dlatego nie ma ona znaczenia praktycznego przy uruchamianiu programów. 13

2.3 Obsługa symulatora Przed rozpoczęciem symulacji należy wykonać dwie czynności: załadować do pamięci symulatora kod uruchamianego programu; zapewnić załadowanemu programowi odpowiedni obszar pamięci typu RAM. Pierwsza czynność może być realizowana automatycznie po poprawnej asemblacji, jeżeli na zakładce Kompilator okna konfiguracji zaznaczymy opcję Automatycznie wczytaj plik HEX po kompilacji. Można również wykorzystać menu [Pamięć/Wczytaj], kombinację klawiszy [Ctrl+O] lub klawisz szybkiego wyboru. Ich użycie powoduje ukazanie się standardowego okna umożliwiającego wskazanie pliku (o domyślnym rozszerzeniu *.HEX), którego zawartość należy wczytać do pamięci symulatora. Menu [Pamięć] dysponuje także opcją [Wczytywane], której wybranie pozwala skorzystać z jednego z pięciu wcześniej ładowanych plików *.HEX. Ewentualne błędy odczytu wybranego pliku są zapisywane w oknie Log rysunek 2.4. Rys. 2-4. Okno logu z przykładowym komunikatem o błędzie odczytu pliku *.HEX Podczas ładowania kodu programu pamięć symulatora ulega rozszerzeniu do rozmiaru wynikającego z wielkości ładowanego kodu. Jednak testowany program podczas symulacji zwykle potrzebuje tzw. pamięci danych (RAM), w której powinny znaleźć się jego struktury danych, jak również stos programowy. Zarezerwowanie fragmentu pamięci typu RAM dla stosu jest konieczne, jeżeli w programie występują wywołania procedur lub przewiduje się wykorzystanie systemu przerwań. Jest to właśnie druga z niezbędnych czynności przed przystąpieniem do właściwej symulacji. Rozszerzenia lub wstępnego ustawienia rozmiaru symulowanej pamięci dokonuje się przy pomocy menu [Pamięć/Rozmiar RAM...]. W pojawiającym się okienku (rysunek 2.5) należy podać (w postaci HEX) maksymalny adres pamięci RAM, który będzie dostępny dla procesora. Po chwili pamięć zostaje przydzielona i wyzerowana. Rozmiar pamięci będzie o 1 większy niż podany adres. Dzieje się tak z powodu adresowania pamięci od zera, czyli pierwsza komórka pamięci ma adres 0H, druga 1H, trzecia 2H, itd. W przypadku procesora Z80 szyna adresowania ma szerokość 16 bitów, więc maksymalny adres może osiągnąć wartość 2 16 1 = 65535 = FFFFH. Do 14

podglądu pamięci programu i pozostałych obszarów symulowanej pamięci RAM służą opisane w pkt. 1.2 okna Kod programu i RAM X. Rys. 2-5. Definiowanie maksymalnego rozmiaru symulowanej pamięci Menu [Pamięć] posiada także opcję [Zapisz], uruchamianą także kombinacją klawiszy [Ctrl+S] lub klawiszem szybkiego wyboru. Powoduje ona pojawienie się standardowego okienka umożliwiającego zapis do wskazanego pliku bieżącego obrazu symulowanej pamięci operacyjnej mikroprocesora. Zapis odbywa się w formacie Intelhex. Mechanizm ten pozwala na zapamiętanie w pliku stanu symulowanej pamięci, by powrócić do pracy nad programem w późniejszym okresie. Kiedy już mamy załadowany program i zdefiniowaną jego pamięć operacyjną, możemy przystąpić do jego symulacji. Symulator oferuje dwa główne tryby pracy (krokowy i ciągły) oraz kilka innych, będących modyfikacjami głównych (Przeskocz, Wykonaj do, Wykonaj do RET, Auto krok). Poniżej przedstawiony jest opis każdego z wyżej wymienionych trybów pracy. 2.3.1 Praca krokowa Jeden krok procesora można wykonać za pomocą menu: [Procesor/Krok], za pomocą klawiatury przyciskiem F7 lub klawiszem szybkiego wyboru. Wykonany zostaje jeden rozkaz wskazywany przez aktualną zawartość rejestru licznika rozkazów PC. 2.3.2 Praca ciągła Tryb ten włącza się z menu [Procesor/Run Z80], klawiszem F9 lub klawiszem szybkiego wyboru. Zostaje włączone ciągłe wykonywanie pojedynczych kroków. Wyłączenie tego trybu może nastąpić na skutek jakiegoś zdarzenia (koniec pamięci, odczyt/zapis poza pamięcią, pułapka i inne). Ponadto można ręcznie zatrzymać wykonywanie programu przy pomocy menu [Procesor/Pauza] lub klawiszem szybkiego wyboru. 15

2.3.3 Przeskocz Tryb ten zachowuje się jak tryb krokowy, jeśli rozkazem do wykonania nie jest CALL. W przeciwnym przypadku zostaje wykonana procedura (CALL) w trybie pracy ciągłej. Po zakończeniu procedury program jest zatrzymywany. W efekcie procedura zostaje potraktowana jak jeden rozkaz w trybie krokowym. Pozwala to na omijanie całych procedur i szybsze analizowanie wykonywania programu. Ten tryb symulacji uruchamia się z menu [Procesor/Przeskocz], klawiszem F8 lub. 2.3.4 Wykonaj do Tryb ten uruchamia się z menu [Procesor/Wykonaj do] lub klawiszem F4. W trybie tym program przechodzi w tryb ciągłej symulacji, która jest zatrzymywana po dojściu wykonywania do zaznaczonego wiersza w oknie Kod programu. 2.3.5 Wykonaj do RET Tryb ten uruchamia się z menu [Procesor/Wykonaj do RET], kombinacją klawiszy Shift+F8 lub przyciskiem. Włączany jest tryb pracy ciągłej. Jak nazwa wskazuje, symulacja jest zatrzymywana po wykonaniu rozkazu RET, czyli powrotu z procedury. Dzięki temu można odnaleźć miejsce wywołania procedury. 2.3.6 Auto krok Tryb ten powoduje cykliczne wykonanie pojedynczych kroków z odstępem czasowym określonym w konfiguracji (rysunek 1.1 na stronie 4). Włącza się go poleceniem [Procesor/Auto krok] lub kombinacją klawiszy Shift+F7. Natomiast wyłączyć można ponownie wybierając [Procesor/Auto krok], poleceniem [Procesor/Pauza] lub klawiszem. 2.3.7 Pułapki Do testowego zatrzymywania wykonywania programu w dowolnym miejscu można użyć pułapek. W celu ustawienia pułapki, po przejściu do wybranego wiersza, należy w oknie Kod programu wybrać z menu [Pułapki/Przełącz pułapkę] lub nacisnąć klawisz F2. Ustawiona pułapka jest sygnalizowana zmienionym (zielonym) tłem wiersza. Zestawienie wszystkich pułapek można zobaczyć w oknie pułapek (rysunek 2.6). Okno to można przywołać z menu [Pułapki/Lista pułapek] lub [Okna/Lista pułapek]. 16

Rys. 2-6. Okno listy pułapek Klikając dwukrotnie w obszarze kolumny Stan, można tymczasowo wyłączyć pułapkę. W takim przypadku stan tej pułapki zmienia się na Nie aktywna. Znika też wyróżnienie w oknie Kod programu. Dwukrotne kliknięcie poza kolumną Stan powoduje przejście kursora w oknie Kod programu do wiersza z adresem pułapki. W ten sposób można szybko przeglądać w jakich miejscach znajdują się poszczególne pułapki. 2.3.8 Przerwania Mikroprocesor Z80 posiada możliwość przyjmowania dwóch przerwań zewnętrznych: niemaskowalnego (NMI) i maskowalnego (INT). Przerwanie powoduje zatrzymanie wykonywania programu i wykonanie specjalnego kodu, który zwany jest procedurą lub podprogramem obsługi przerwania. Po wykonaniu tej procedury procesor powraca do wykonywania przerwanego programu. Przyjęcie przerwania powoduje automatyczne zapamiętanie na stosie zawartości licznika rozkazów, co umożliwia poprawny powrót do programu wykonywanego przed przerwaniem. Nie jest zapamiętywana zawartość żadnych innych rejestrów. Podprogram obsługi przerwania musi zadbać o to sam. Po przyjęciu przerwania niemaskowalnego (NMI) następuje skok do procedury obsługi przerwania pod adresem 66H. W przypadku przerwania maskowalnego (INT) procesor dysponuje trzema trybami jego obsługi, przełączanymi programowo. W trybie 0 procesor przyjmując przerwanie traktuje zawartość szyny danych jako kod rozkazu do wykonania. Tę daną powinno dostarczyć urządzenie zewnętrzne. Najczęściej stosuje się przesłanie kodu rozkazu restartu RST, który jest jednobajtowym rozkazem wywołania podprogramu mieszczącego się pod jednym z adresów: 00H, 08H, 10H, 18H, 20H, 28H, 30H, 38H. W trybie 1 zostaje wywołany podprogram mieszczący się pod adresem 38h. W trybie 2 procesor oczekuje od urządzenia zewnętrznego wystawienia na magistralę danych bajtu, traktowanego jako mniej znacząca połowa adresu. Jako bardziej znaczący bajt adresu, procesor pobiera ustawioną programowo zawartość 17

rejestru I, a następnie dokonuje odczytu dwubajtowego słowa mieszczącego się w pamięci pod wskazanym adresem. Te dwa odczytane bajty traktuje jako adres podprogramu obsługi przerwania. Najmniej znaczący bit bajtu przekazywanego przez urządzenie zewnętrzne jest ignorowany i zawsze traktowany jako 0. Przerwania w symulatorze można generować za pomocą poleceń: [Procesor/NMI] i [Procesor/INT], klawiszami odpowiednio F10, F11 lub klawiszami szybkiego wyboru i. Jeśli aktualny tryb (0 lub 2) wymaga przyjęcia dodatkowych danych związanych z przerwaniem to zostanie wyświetlone okno (rysunek 2.7), w którym należy podać te dane. Rys. 2-7. Okno przyjęcia wektora przerwania INT 2.4 Menu Projekt Dzięki temu menu można zapisać lub wczytać z dysku stan pracy symulatora. Dokładniej chodzi tu o otwarte pliki oraz położenie i rozmiar okien na ekranie. Projekt można zapisać używając menu [Projekt/Zapisz jako...]. Zostanie stworzony plik w formacie INI i rozszerzeniu *.PRO. Będą w nim zapisane informacje o: rozmiarze pamięci, otwartych plikach oraz położeniu okien i ich stanie. Wczytując projekt przez menu [Projekt/Otwórz projekt...] lub przyciskiem szybkiego wyboru, zmieniany jest rozmiar pamięci, otwierane są odpowiednie pliki oraz ustawiane są okna w zapisanych wcześniej pozycjach. Dzięki temu można szybko przywrócić ustawienia i wygląd okien do poprzedniego stanu. Menu [Projekt] posiada również opcję [Wczytywane], która umożliwia szybkie odwołanie się do jednego z pięciu ostatnio używanych projektów (symulacji). Opcja [Projekt/Nowy] ( ) pozwala zainicjować pracę nad nowym projektem. 18

3 Bibliografia Opis symulatora programowego Z80 [1] "Symulator programowy mikroprocesora Z80", J.Rydzewski, praca magisterska 2004. [2] Opis metaasemblera C32, opr. dr inż. Lech Grodzki, (Białystok 2003) - http://vela.pb.bialystok.pl/~kaie/kaie-md/lab/metaasembler.pdf [3] Home Page of Marat Fayzullin, Marat Fayzullin (2004) - http://fms.komkon.org/ 19