CW B€80 2


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:

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

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

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

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

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

  1. Co będzie skutkiem wykonania powyższego programu?

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

  3. 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

POWT: MOV M,A

INR A

INX H

DCR B

JNZ POWT

HLT

  1. Autor symulatora SIM8085 przewidział, że program będzie kończył się rozkazem HLT. W praktyce prawie nigdy nie kończymy aplikacji rozkazem HLT.

    1. Dlaczego?

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

    3. Jak to zrobić?

  2. 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?

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

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

  1. Jakie skutki spowoduje wykonanie następującego programu:

Program 5

Adres Zawartość

F0A0 CD

F0A1 A0

F0A2 F0

  1. Napisz program dodający 2 liczby 24 bitowe umieszczone w pamięci i przetłumacz go na język wewnętrzny procesora 8080.

  2. 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

  1. 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?

0x01 graphic



Wyszukiwarka

Podobne podstrony:
ćw 4 Profil podłużny cieku
biofiza cw 31
Kinezyterapia ćw synergistyczne
Cw 1 ! komorki
Pedagogika ćw Dydaktyka
Cw 3 patologie wybrane aspekty
Cw 7 IMMUNOLOGIA TRANSPLANTACYJNA
Cw Ancyl strong
Cw 1 Zdrowie i choroba 2009
Rehabilitacja medyczna prezentacja ćw I
ćw 2b
Ćw 3 Elektorforeza Bzducha
ćw 3 Projektowanie drenowania
ćw 3 dla studentów

więcej podobnych podstron