1. Cel ćwiczenia.
Doskonalenie umiejętności posługiwania się różnymi środkami uruchomieniowymi.
2. Realizacja ćwiczenia.
Kompilacja programu wykonywana była przy pomocy metaasemblera C32.EXE i symulatora ekranowego SYMULATOR.EXE. Następnie plik nazwa.hex za pośrednictwiem portu szeregowego przenosiliśmy do pamięci systemu mikroprocesorowego PLUM. Posługując się klawiaturą wprowadzaliśmy dane, wynik obliczeń obserwowaliśmy na wyświetlaczu systemu PLUM.
W trakcie ćwiczenia wykonaliśmy kilka próbnych programów, które miały na celu zobrazowanie pojedynczych procedur bibliotecznych. Wszystkie te procedury znalazły się w głównym zadaniu niniejszego ćwiczenia, więc nie opisywałem ich oddzielnie.
Zadanie 1.
Napisać program dla systemu mikroprocesorowego PLUM dodający i odejmujący dwie liczby jednobajtowe. Rodzaj operacji wybieramy przy pomocy przycisku A (dodawanie) i B (odejmowanie).
CPU "Z80.TBL" HOF "INT8" INCL "SYSTEM.INC"
ORG 8000H MENU: CALL CONIN ;odczytanie klawisza do A CP 41H ;czy to klawisz `A' ? JP Z,DOD ;skocz do etykiety DOD CP 42H ;czy to klawisz `B' ? JP Z,ODE ;skocz do etykiety ODE JP MENU ;skocz do etykiety MENU DOD: CALL INHLP ;wczytaj wartość do HL wykorzystując DFB 40H :wykorzystując 4 pozycje wyświetlacza od prawej LD A,H ;załaduj wartość rejestru H do akumulatora ADD A,L ;dodaj rejestr L do akumulatora JP C,D1 ; jeżeli flaga C=1 skocz to etykiety D1, jeżeli C=0 idź dalej CALL A2HEXP ;wyświetl zawartość akumulatora wykorzystując DFB 23H ;2 środkowe pozycje wyświetlacza JP MENU
ODE: CALL INHLP DFB 40H LD A,H SUB L ;pomniejsz akumulator o rejestr L CALL A2HEXP DFB 23H JP MENU
D1: LD D,00000110B ;załaduj do akumulatora liczbę w kodzie segmentowym CALL DOUTB ;wyprowadza kod segmentowy z D DFB 15H ;wykorzystując jedną, piątą od prawej pozycje wyświetlacza JP MENU
END |
Program składa się z 4 etykiet. Nie ma tu klasycznego programu głównego, ponieważ jest na tyle prosty, że nie potrzebuje odgórnej organizacji pamięci. Rozpoczynamy od MENU. Komenda CALL CONIN wyczekuje aż wciśniemy klawisz na klawiaturze urządzenia i zapisuje wynik w akumulatorze. Następnie sprawdzamy czy został wciśnięty klawisz A (adres 41H) czy B (42H). Jeżeli był to klawisz A to komendą JP Z,DOD skaczemy do etykiety DOD, jeżeli B to komenda JP Z,ODE przenosi nas do etykiety ODE.
Etykieta DOD realizuje dodawanie. Komendą CALL INHLP odczytujemy wartości wybranych klawiszy oraz wyświetlamy je jednocześnie zapisując do rejestru HL. Program liczby pojawią się na czterech pierwszych od prawej pozycjach wyświetlacza. Określone jest to w komendzie DFB 40H - 4 oznacza ile pozycji będzie zajmował napis, a 0 która pozycja wyświetlacza od prawej będzie początkową. Jeżeli w wyniku dodawania wystąpi przeniesienie komendą JP C,D1 przeskakujemy do etykiety D1. Tam następuje załadowanie do rejestru D jedynki w kodzie segmentowym i wyświetlenie jej na piątej pozycji od prawej strony. Za tą operacje odpowiada komenda CALL DOUTB. Natomiast jeśli nie wystąpi przeniesienie komendą CALL A2HEXP odczytujemy zawartość akumulatora (wynik dodawania) i wyświetlamy na dwóch środkowych pozycjach akumulatora.
W operacja odejmowania (etykieta ODE) identyczna jeżeli chodzi o procedury biblioteczne i nie będę jej dodatkowo opisywał.
III. Wnioski.
Opracowany przez nas program jest bardzo prosty i podlega wielu ograniczeniom. Jednak do celów zapoznania się z podstawowymi procedurami usługowymi oraz obsługą i działaniem systemu mikroprocesorowego PLUM uważam za wystarczający. Dowiedzieliśmy się, że można korzystać z usług bez których algorytm naszego programu byłby zagmatwany i nieczytelny. Ułatwiają one również pisanie programu, gdyż zawierają w sobie wiele linijek kodu, który nie trzeba za każdym razem wpisywać. Poznaliśmy też w jak działa wyświetlacz modułu PLUM oraz w jaki sposób wczytywać dane do programu za pomocą klawiszy tegoż urządzenia.