background image

AK    

 

 

 

 

 

 

 

Ćw. 2, 3 

 

Architektura prostego procesora (8080). 
Programowanie w j
ęzyku maszynowym. 

(Materiał na 2 jednostki) 

 
Cel ćwiczenia: Poznanie programowania w języku maszynowym na przykładzie prostego procesora 8-bitowego 

Literatura: A. Niederli

ński, „Mikroprocesory, mikrokomputery, mikrosystemy”, WSiP, 1987  

Sprzęt i oprogramowanie: Komputer z procesorem 8-bitowym (CA80), Komputer PC  z zainstalowanym 

symulatorem procesora 8085 

Sprzęt nadobowiązkowy: Analizator stanów logicznych 

Pomoce: Tabela kodów rozkazów 8080 w kolejności alfabetycznej (do asemblacji), Tabela kodów rozkazów 

8080 według numerów kodów (do dezasemblacji) 

Zagadnienia: 

Architektura procesora 8080  (rejestry, znaczniki, sposób adresowania pamięci, stos) 

Pamięć RAM i ROM 

Start komputera 

Zapis szesnastkowy liczb dwójkowych 

 Budowa rozkazu 

Zapis liczb dwójkowych, dziesiętnych i szesnastkowych 

 Język asembler i język maszynowy 

Rozkazy procesora: 

-

 

przesłań 

-

 

arytmetyczne, logiczne 

-

 

sterujące: skoki, skoki warunkowe, wywołanie podprogramu, powrót z podprogramu 

-

 

inne: NOP, HLT, RST0 

Zapis w pamięci argumentów wielobajtowych (little endian i big endian) 

Tłumaczenie z języka asembler na język maszynowy 

Tłumaczenie z języka maszynowego na asembler 

Cykl rozkazowy – pobranie i wykonanie rozkazu 

Dodawanie liczb wielobajtowych. Przeniesienie. Znacznik przeniesienia. 

 

Polecenia: 

0. Oblicz parametry, które posłużą do indywidualizacji programów 

= ( 3 ostatnie cyfry numeru indeksu)  jeżeli a <100 to przyjmij a=173

10

 

= ( 2 ostatnie cyfry numeru indeksu)  jeżeli b <20 to przyjmij =52

10 

Zamień  a  i  b na postać szesnastkową i oznacz odpowiednio ah i bh. Do zamiany na postać szesnastkową 

możesz wykorzystać kalkulator dostępny w systemie Windows. 

Oblicz zmienne par1, par2, ... Wartości zapisz szesnastkowo 

par1=8500H + ah 

par2 = A000H + ah 

par3 = 30H + bh 

background image

par4 = 20H + bh 

par5 = MSB(par1) (Most Significant Byte) 

par6=LSB(par1) (Least Significant Byte) 

par7=MSB(par2

par8=LSB(par2

 

1.

 

a. Przetłumacz Program 1 na język maszynowy procesora 8080. Wszystkie parametry w postaci 

szesnastkowej (adresy też). Zapisz go w postaci: 

Adres 

kod rozkazu rozkaz w postaci mnemonicznej. Np.,: 

8000 

3E 50  

MVI A,50H 

8002 

D3 21  

OUT 21H 

Uwaga: przekład w kodzie HEX. Znak H na końcu liczby pominięto. 

Przyjmij, że pierwszy rozkaz zapisany jest w komórce 8000H. 

Przykładowy Program 1  

MVI A, 3 

MVI B, 6 

ADD B 

HLT

 

b. Wpisz program 1 w postaci źródłowej do symulatora a następnie skompiluj go. Czy otrzymany program 

binarny jest taki sam jak uzyskany w wyniku ręcznego tłumaczenia? 

c. Wypróbuj program 1 wykonując go krokowo. Czy program działa zgodnie z oczekiwaniami? 

 

2. Przetłumacz program 2 na język maszynowy. 

Przyjmij, że pierwszy rozkaz zaczyna się w komórce 8000H. Uwaga w symulatorze SIM8085 możemy wskazać, 

od jakiego adresu ma zaczynać się przekład. Służy do tego dyrektywa ;org adres np.   ;org 3000 wskazuje, że 

przekład należy umieścić od adresu 3000H 

Przykładowy Program 2 

 

 

 

MVI B,08H 

 

 

 

LXI H, 9000H 

 

 

 

MVI A,50H 

 

POWT:  

MOV M,A 

 

 

 

INR  A 

 

 

 

INX H 

 

 

 

DCR  B 

 

 

 

JNZ POWT 

 

 

 

HLT 

3.

 

Co będzie skutkiem wykonania powyższego programu? 

4.

 

Zmień poprzedni program, tak aby wpisywał do pamięci kolejne 100 liczb począwszy od 0. 

5.

 

Wykorzystując obliczone  w punkcie 0 parametry przetłumacz na język maszynowy poniższy program. 

i ustal, co będzie wynikiem jego wykonania. 

Początek od adresu par1. 

MVI B,par3 

 

 

 

LXI H, par2 

 

 

 

MVI A,par4 

background image

 

POWT:  

MOV M,A 

 

 

 

INR  A 

 

 

 

INX H 

 

 

 

DCR  B 

 

 

 

JNZ POWT 

 

 

 

HLT

 

6.

 

Autor symulatora SIM8085 przewidział, że program będzie kończył się rozkazem HLT. W praktyce 

prawie nigdy nie kończymy aplikacji rozkazem HLT. 

a.

 

Dlaczego? 

b.

 

Dokąd powinno wrócić sterowanie po zakończeniu aplikacji? 

c.

 

Jak to zrobić? 

7.

 

Jakie będą skutki wykonania programu 3?  

Program 3 

POCZ:    CALL  POCZ 

HLT 

Wypróbuj ten program. Co zaobserwowałeś?  

Czy działanie tego programu jest zgodne z oczekiwaniami? 

8.

 

Wykonaj dezasemblację następującego programu zapisanego w języku maszynowym: 

Program 4: 3E 22 D3 15 00 00 21 00 AA 77 C7 

9.

 

Jakie skutki spowoduje wykonanie następującego programu: 

Program 5 

Adres  

Zawarto

ść

 

F0A0   

CD 

F0A1   

A0 

F0A2   

F0 

10.

 

Napisz program dodający 2 liczby 24 bitowe umieszczone w pamięci i przetłumacz go na język 

wewnętrzny procesora 8080. 

11.

 

Napisz program w języku wewnętrznym umieszczający w kolejnych 10 komórkach pamięci kolejne 

elementy ciągu Fibonacciego. 

Ciąg Fibonacciego 1, 1, 2, 3, 5...-każda następna liczba jest sumą dwóch poprzednich 

12.

 

Wykonaj dezasemblację poniższego  programu. Jeżeli kod nie odpowiada żadnemu rozkazowi to wstaw 

NR (Nielegalny Rozkaz). 

Program 6: 3E 17 00  21 par3 55 par4  66 par5 par6 00 00 

12.  Jaki rozkaz wykonuje komputer na rysunku poniżej?