POLITECHNIKA BIAŁOSTOCKA
WYDZIAŁ ELEKTRYCZNY
KATEDRA AUTOMATYKI I ELEKTRONIKI
Sprawozdanie z zajęć laboratoryjnych:
Technika Mikroprocesorowa 2
Kod: TS1A520312
Ćwiczenie numer: 1
Temat: Obsługa struktur tablicowych na poziomie asemblera.
Wykonujący ćwiczenie:
Rafał Siemieniuk
Patryk Siwerski
Studia dzienne
Kierunek: Elektronika i Telekomunikacja
Specjalność: Aparatura Elektroniczna
Semestr: V Grupa: L02
Prowadzący ćwiczenie: dr inż. Kociszewski Rafał
……………...……..
Ocena
…………………….
Data wykonania ćwiczenia
……………………………………
Data i podpis prowadzącego
Cel ćwiczenia
Celem ćwiczenia było zdobycie praktycznych umiejętności w obsłudze struktur tablicowych na poziomie języka maszynowego.
Opis stanowiska badawczego
Ćwiczenie przeprowadzane zostało w dwuosobowej grupie przy stanowisku komputerowym. Wymagany był komputer klasy Pentium, z systemem operacyjnym Windows, wyposażony w kolorową kartę graficzną i takiż monitor. Na komputerze były zainstalowane programy narzędziowe ( program metaasemblera C32.EXE i symulatora ekranowego SYMULATOR.EXE).
Przebieg ćwiczenia
Uruchomienie przygotowanych programów, wymagających zastosowania struktur tablicowych, w oparciu o symulator ekranowy Z80.
Zad. 1.
Wypełnienie tablicy 8 wartości 1-bajtowych w NB ciągiem
geometrycznym o a0=128 i q=1/2.
CPU "z80.TBL" podanie biblioteki rozkazów
HOF "INT8" rozkazy tłumaczone na kod szesnastkowy
ORG 0H adres początkowy programu
TAB: EQU 30H deklaracja zmiennej „TAB” i przypisanie jej
wartości 30. Określa od którego
pola zaczynać się będzie tablica
ILOSC: EQU 8 deklaracja zmiennej „ILOSC” i przypisanie
jej wartości 8.
A0: EQU 128 deklaracja zmiennej dla „A0” i przypisanie jej
wartości 128.
LD HL, TAB załadowanie pierwszego elementu tablicy TAB do
rejestru HL
LD B, ILOSC załadowanie zmiennej ILOSC do rejestru B
(określa jak długo trwa pętla)
LD A,A0 załadowanie zmiennej A0 do akumulatora
PETLA: LD(HL),A początek pętli; zapis zawartości akumulatora do
komórki pamięci określonej przez TAB
RR A dzielenie zawartości akumulatora przez 2
INC HL inkrementacja, zwiększenie zawartości rejestru
HL o 1
DJNZ PETLA realizacja pętli
HALT zatrzymanie wykonywania pętli
END wyznaczenie końca tekstu programu
Rys. 1. Końcowy stan programu.
Zad. 2.
zmiana kolejności elementów w tablicy wartości 1-bajtowych według
reguły: 0,1,2,3,4,5,6,.. -> 1,3,5,7,..., 0,2,4,6,...;
CPU "Z80.TBL" podanie biblioteki rozkazów
HOF "INT8" rozkazy tłumaczone na kod szesnastkowy
ORG 0H adres początkowy programu
TAB EQU 40H deklaracja zmiennej „TAB” i przypisanie jej
wartości 40. Określa od którego
pola zaczynać się będzie tablica.
TAB2: EQU 60H deklaracja zmiennej „TAB2” i przypisanie jej
wartości 60. Określa od którego
pola zaczynać się będzie tablica.
TAB3: EQU 68h deklaracja zmiennej „TAB3” i przypisanie jej
wartości 68. Określa od którego
pola zaczynać się będzie tablica.
ILOSC : EQU 8 deklaracja zmiennej „ILOSC” i przypisanie
jej wartości 8.
ILOSC2: EQU 4 deklaracja zmiennej „ILOSC2” i przypisanie
jej wartości 4.
A0: EQU 0 deklaracja zmiennej dla „A0” i przypisanie jej
wartości 0.
LD HL,TAB załadowanie pierwszego elementu tablicy TAB
do rejestru HL
LD B,ILOSC załadowanie zmiennej ILOSC do rejestru B
(określa jak długo trwa pętla)
LD A,A0 załadowanie zmiennej A0 do akumulatora
PETLA1: LD (HL),A początek pętli1; zapis zawartości akumulatora
do komórki pamięci określonej przez TAB
INC A inkrementacja, zwiększenie zawartości
akumulatora o 1
INC HL inkrementacja, zwiększenie zawartości rejestru
HL o 1
DJNZ PETLA1 realizacja pętli1
LD HL,TAB załadowanie pierwszego elementu tablicy TAB
do rejestru HL
LD IX,TAB2 załadowanie pierwszego elementu tablicy
TAB2 do rejestru IX;
LD B,ILOSC2 załadowanie zmiennej ILOSC2 do rejestru B
(określa jak długo trwa pętla)
PETLA2: LD A,(HL) początek pętli2; zapis zawartości akumulatora
do komórki pamięci określonej przez TAB
LD (IX+0),A zapis zawartości akumulatora do komórki
pamięci określonej przez zmienną TAB2
INC HL
INC HL podwójna inkrementacja, zwiększenie
zawartości rejestru o 2
INC IX inkrementacja, zwiększenie zawartości rejestru
IX o 1
DJNZ PETLA2 realizacja pętli1
LD HL,TAB+1 załadowanie drugiego elementu
tablicy TAB do rejestru HL
LD IX,TAB3 załadowanie pierwszego elementu tablicy
TAB3 do rejestru IX;
LD B,ILOSC2 załadowanie zmiennej ILOSC2 do rejestru B
PETLA3: LD A,(HL) początek pętli3; zapis zawartości akumulatora
do komórki pamięci określonej przez TAB+1
LD (IX+0),A zapis zawartości akumulatora do komórki
pamięci określonej przez zmienną TAB3
INC HL
INC HL podwójna inkrementacja, zwiększenie
zawartości rejestru o 2
INC IX inkrementacja, zwiększenie zawartości rejestru
IX o 1
DJNZ PETLA3 realizacja pętli3
HALT zatrzymanie wykonywania pętli END wyznaczenie końca tekstu programu
Rys. 2. Końcowy stan programu.
4.Wnioski
Nauczyliśmy się obsługiwać struktury tablicowe w języku asemblera. Przypomnieliśmy sobie używane wcześniej komendy oraz poznaliśmy nowe. Wyniki obu zadań umieszczone są na zamieszczonych rysunkach.