Professional Documents
Culture Documents
MIKROPROCESORSKIH SISTEMA
Doboj, 2013.
Edicija: Tehnike knjige-udbenici
Naziv udbenika: Praktikum za auditorne vjebe iz mikroprocesorskih sistema
Autor: mr Miroslav Kostadinovi
Recezenti: prof. dr Zlatko Bundalo, Elektrotehniki fakultet Banja Luka
prof. dr Duanka Bundalo, Filozofski fakultat Banja Luka
Dizajn korica: Perica Luki, dipl. ing. inf.
Izdava: Saobraajni fakultet Doboj
Glavni i odgovorni urednik: prof.dr Perica Gojkovi
tampa: Izdavako-grafika kua GRAFOMARK, Laktai
tampanje odobrilo: Nauno-nastavno vijee Saobraajnog fakulteta, odluka
broj NNV: 61/12 od 09.07.2012. godine.
Tira: 100
CIP -
,
004.2(075.8)(076)
004.31(075.8)(076)
,
Praktikum za auditorne vjebe iz
mikroprocesorskih sistema / Miroslav Kostadinovi.
- Doboj : Saobraajni fakultet, 2013 (Laktai :
Grafomark). - 115 str. : tabele, graf. prikazi ;
25 cm. - (Edicija Tehnike knjige-udbenici)
Tira 100. - Bibliografija: str. 115.
ISBN 978-99955-36-36-7
COBISS.BH-ID 3571736
Napomena:
Sva prava zadrava autor. Nije dozvoljeno fotokopiranje, niti drugi vid
umnoavanja ovog udbenika bez pismene saglasnosti autora.
PREDGOVOR
Autor
SADRAJ
1. BROJNI SISTEMI 5
2. PREDSTAVLJANJE PODATAKA 15
3. STRUKTURA PROCESORA 25
4. PROGRAMIRANJE 37
4.1. ALGORITMI 38
7. ZADACI 57
8. PREDISPITNI TEST 99
A. PRILOG 111
LITERATURA 115
1. BROJNI SISTEMI
6 Praktikum za auditorne vjebe iz mikroprocesorskih sistema
Bit 0 je bit nieg reda ili najmanje znaajan bit (LSB Least Significant Bit), dok je bit 7 bit
vieg reda ili najvie znaajan bit (MSB Most Significant Bit).
Biti 0-3 ine nibl nieg reda (low order nibble), dok biti 4-7 ine nibl vieg reda (high order
nibble). Kako se bajt sastoji od tano dva nibla, potrebne su dvije heksadecimalne cifre da bi se
predstavila vrijednost bajta. O heksadecimalnom brojnom sistemu bie vie rijei neto kasnije.
S obzirom da bajt sadri osam bita, sa njim se moe predstaviti 28, ili 256, razliitih vrijednosti.
U optem sluaju, mi emo koristiti bajt za predstavljanje numerikih vrijednosti u opsegu 0 do
8 Praktikum za auditorne vjebe iz mikroprocesorskih sistema
255, oznaenih brojeva u opsegu 128 do 127, za prikaz ASCII/IBM alfanumerikih kodova, i
za druge strukture podataka koje ne zahtijevaju vie od 256 razliitih vrijednosti.
RIJE I DUPLA RIJE
Dupla rije (double word), kao to samo ime kae, ima 32 bita, i ine je dvije rijei od po 16
Binarni Heksadecimalni
0000 0
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
0111 7
1000 8
1001 9
1010 A
1011 B
1100 C
1101 D
1110 E
1111 F
U prikazanoj tabeli date su sve informacije koje su potrebne da bi pretvorili bilo koji
heksadecimalni u binarni broj i obrnuto.
Da bi pretvorili heksadecimalni u binarni broj, prosto izvrimo zamjenu odgovarajua etiri bita
iz tabele za svaku heksadecimalnu cifru u broju. Na primjer, da bi pretvorili 0ABCDH u binarnu
vrijednost, prosto pretvorimo svaku heksadecimalnu cifru prema tabeli koja je prikazana.
0 A B C D heksadecimalno
Pretvaranje binarnog broja u heksadecimalni format je takoe lako. Prvi korak sastoji se u
dodavanju potrebnog broja nula binarnom broju na strani MSB-a, tako da se obezbjedi da broj
bita predstavlja umnoak broja etiri. Sljedei korak je razdvajanje binarne vrijednosti u grupe
od po etiri bita. Konano, gledajui za ove binarne vrijednosti ekvivalentne heksidecimalne
cifre dobijamo heksadecimalni ekvivalent binarnog broja.
1) 1011001010
2) 001011001010
3) 0010 1100 1010
4) 2CAH
Binarni Oktalni
000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7
Oktalni brojevi se takoe esto koriste za predstavljanje podataka u raunarskom sistemu. Oni su
pogodniji za korienje u odreenim situacijama u odnosu na heksadecimalne, iako se
heksadecimalni brojevi daleko ee koriste.
Konverzija izmeu oktalnog i heksadecimalnog brojnog sistema vri se pretvaranjem prvo u
binarni brojni sistem, a zatim u eljeni brojni sistem, dakle posrednim putem.
1. Brojni sistemi 11
Odavde vidimo da vrijednost 8000H invertovana postaje 7FFFH. Poslije dodavanja jedinice
dobijamo 8000H! Odavde izlazi da je -(-32768) jednako -32768!!! To naravno nije tano. Ali
vrijednost +32768 se ne moe predstaviti sa 16-bitnim oznaenim brojem, tako da ne moemo
da obavimo negaciju za najmanju negativnu vrijednost.
Postavlja se pitanje zato se muiti sa ovako komplikovanim nainom prikazivanja oznaenih
brojeva? Zato ne bi koristili MSB bit za odreivanje znaka, smjetajui pozitivan ekvivalent u
ostale bite? Odgovor je u jednostavnosti projektovanja hardvera. Korienjem sistema drugog
komplementa, veina drugih operacija u binarnom sistemu je laka. Na primjer, pretpostavimo da
elimo da obavimo sabiranje 5+(-5). Rezultat treba da bude nula. Razmotrimo ta se deava kada
izvrimo sabiranje ove dvije vrijednosti u sistemu drugog komplementa:
0000 0101
1111 1011
1 0000 0000
Ako ignoriemo vrijednost koja se dobija u bitu prenosa dobijamo korektan rezultat. Ovo znai
da moemo da koristimo isti hardver za sabiranje i za oduzimanje upotrebom drugog
komplementa. Ovo ne bi bio sluaj sa nekim drugim brojnim sistemima.
8421
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
Primjer:
92410 = 1001 0010 0100NBCD
1000 0111 1001NBCD = 87910
Prirodni NBCD kod je teinski kod. To znai da svaka binarna cifra ima odreenu teinu pri
formiranju decimalne cifre, koja je odreena pozicijom te cifre.
2. Predstavljanje podataka 17
2421
0 0000
1 0001
2 0010
3 0011
4 0100
5 1011
6 1100
7 1101
8 1110
9 1111
Primjer:
97410 = 1111 1101 0100AJKEN
0000 0010 1011AJKEN = 02510
18 Praktikum za auditorne vjebe iz mikroprocesorskih sistema
XS3
0 0011
1 0100
2 0101
3 0110
4 0111
5 1000
6 1001
7 1010
8 1011
9 1100
Primjer:
7010 = 1010 0011XS3
1011 1100XS3 = 8910
2. Predstavljanje podataka 19
15731 15731
0 0000 0000
1 0001 0001
2 0011 0011
3 0010 0010
4 0110 0110
5 0111 0111
6 0101 0101
7 0100 0100
8 1100 1100
9 1101 1000
10 1111
11 1110
12 1010
13 1011
14 1001
15 1000
Primjer:
10 = 15 7 + 3 1
36710 = 0010 0101 0100Gray BCD
20 Praktikum za auditorne vjebe iz mikroprocesorskih sistema
Johnson
0 00000
1 00001
2 00011
3 00111
4 01111
5 11111
6 11110
7 11100
8 11000
9 10000
Primjer
Napisati sljedee brojeve u NBCD, XS3, Grejovom i Donsonovom kodu:
a)847
b)2170.25
c)35.29.
Rjeenje:
a) 1000 0100 0111NBCD
1011 0111 1010XS3
1100 0110 0100Gray BCD
11000 01111 11100Johnson
b) 0010 0001 0111 0000. 0010 0101NBCD
0101 0100 1010 0011. 0101 1000XS3
0011 0001 0100 0000. 0011 0111Gray BCD
00011 00001 111000 00000. 00011 11111Johnson
c) 0011 0101. 0010 1001NBCD
0110 1000. 0101 1100XS3
0010 0111. 0011 1000Gray BCD
00111 11111. 00011 10000Johnson
2. Predstavljanje podataka 21
Jedino gdje se ova dva karaktera razlikuju jeste u bitu na petoj poziciji. Karakteri velikih slova
uvijek sadre nulu na petoj poziciji; karakteri malih slova uvijek sadre jedinicu u petom bitu.
Na ovaj nain se moe vriti lako pretvaranje velikih slova u mala i obrnuto.
2. Predstavljanje podataka 23
0 0 Kontrolni karakteri
0 1 Cifre i interpunkcija
Sedmi bit u standardnom ASCII kodu je uvijek postavljen na nulu. Ovo znai da ASCII skup
karaktera zauzima polovinu moguih kodova karaktera u bajtu.
31 0
Tipom podataka real u raunaru se predstavlja jedan konaan podskup realnih brojeva. Kako
raunari posjeduju registre i memoriju ogranienog kapaciteta, ogranien je opseg i preciznost
realnih brojeva, odnosno skup brojeva koji se mogu prikazati u raunaru je diskretan i konaan
za razliku od skupa realnih brojeva koji je kontinualan i beskonaan. Zbog prirode diskretnosti
postoji uvijek praznina izmeu dva susjedna broja, tako da se moe desiti da rezultat bude ba u
tom opsegu. U tom sluaju vri se zaokruivanje na broj koji je najblii dobijenom rezultatu a
koji se moe predstaviti u raunaru.
PREDSTAVLJANJE BROJEVA SA POMINIM ZAREZOM (FLOATING POINT)
U praktinim primjenama javljaju se veoma velike i veoma male vrijednosti (npr. 1024 i 10-27).
Realan broj se moe napisati u eksponencijalnom obliku.
E
m = M bE
b baza
E eksponent
M mantisa
Realni broj se najee predstavlja sa 32 bita, pri emu se usvaja normalizovani oblik broja. To
znai da mantisa ima oblik 0.xyz... pri emu je x 0.
24 Praktikum za auditorne vjebe iz mikroprocesorskih sistema
Primjer :
Opseg brojeva koji se mogu predstaviti na ovaj nain odreen je brojem binarnih cifara
eksponenta, dok broj binarnih cifara mantise odreuje preciznost predstavljanja i tanost
raunanja.
3. STRUKTURA PROCESORA
26 Praktikum za auditorne vjebe iz mikroprocesorskih sistema
Svi registri koji se koriste u procesoru su sa paralelnim ulazima i izlazima. Registri procesora se
mogu podjeliti u grupe:
registar instrukcije,
privremeni registar,
akumulator,
adresni registri,
blok registara opte namjene,
registar adrese,
registar podataka i
registar bita stanja.
3. Struktura procesora 27
P bit parnosti pokazuje da podatak u akumulatoru ima paran ili neparan broj jedinica.
Ako je paran, onda je na njegovom mjestu upisan broj jedan. Koristi se za
generisanje bita parnosti (ili bita neparnosti), koji se primjenjuje za kontrolu
ispravnosti kodovanja, tj. za kontrolu parnosti. Kod osmobitnih podataka on je deveti
bit.
C bit prenosa pokazuje da li je pri realizovanju prethodne operacije dolo do pojave
prenosa ili pozajmice bita. Prenos se pojavljuje kod sabiranja ako rezultat ima vie
bita nego to je broj bita akumulatora, u takvim sluajevima ono to ne moe da stane
u akumulator ide u bit prenosa.
Npr. Najvei broj koji moe da stane u akumulator je br. 255.
256 128 64 32 16 8 4 2 1
Ovaj bit se moe pojaviti i pri oduzimanju, ako se oduzima vei broj od manjeg (pojava
pozajmice).
Koristi se i pri pomjeranju bita u lijevo ili u desno pri emu bit koji ulazi ili izlazi, se upisuje se
u bit prenosa.
ADRESNI REGISTRI
Adresni registri su registri iji se sadraj koristi za adresiranje memorijskih lokacija u
operativnoj memoriji ili za adresiranje ulaznih i izlaznih sklopova.
Pri izvravanju instrukcija procesor postavlja na svoje adresne linije sadraj nekog od adresnih
registara.
Adresni registri mikroprocesora Intel 8085 su:
programski broja (PC) i
pokaziva steka (SP).
3. Struktura procesora 29
Programski broja (Program Counter) je adresni registar u kojem se uvijek nalazi adresa sljedee
instrukcije koju e procesor izvravati. U toku izvravanja instrukcije sadraj programskog
brojaa se automatski mijenja tako da adresira onu instrukciju koja e sljedea biti oitana i
izvrena. Broj bita programskog brojaa jednak e broju bita adrese koju generie procesor. Ako
je broj bita programskog brojaa "n" tada on moe adresirati "2n" memorijskih lokacija to znai
da kod mikroprocesora Intel 8085 iji raunari imaju 64KB operativne memorije ima 16 bita, jer
je 64KB=2n.
Pokaziva steka (Stack Pointer) se koristi za adresiranje memorijski lokacija u steku. Stek je
memorijska struktura LIFO (Last In, First Out) tipa, to znai da se onaj podatak koji je
posljednji upisan prvi oitava. Stek se koristi kod rada sa podprogramima i sa prekidima, jer se
mijenja redoslijed izvravanja instrukcija tako to procesor prelazi na izvravanje podprograma
ili programa za obradu prekida. Da bi se po zavretku tih programa moglo nastaviti daljnje
izvravanje prethodnog programa u steku se memorie tzv. "povratna adresa".
Programski model mikroprocesora Intel 8085 je prikazan na sljedeoj slici.
IE-"bit maske prekida" slui da se omogui (logika jedinica) ili zabrani (logika nula)
prihvatanje zahtjeva za prekid.
30 Praktikum za auditorne vjebe iz mikroprocesorskih sistema
Operacioni dio
Svi mikroprocesori raspolau sa vie naina adresiranja. Mikroprocesor Intel 8085 koristi
sljedee naine adresiranja:
IMPLICITNO ADRESIRANJE
Kod ovakvog naina adresiranja informacija o tome gdje se nalazi operand sadrana je u sastavu
operacionog dijela same istrukcije.
Kod ovakvih instrukcija operand se obino nalazi u nekom registru procesora a najee u
akumulatoru.
Primjer:
ADD r; (A)+(r)(A), Sadraj registra (r) sabrati sa
sadrajem akumulatora i rezultat smjestiti u
akumulator.
NEPOSREDNO ADRESIRANJE
Kod ovog naina adresiranja, operand koji se koristi pri izvravanju instrukcije nalazi se u
sastavu same instrukcije iza operacionog dijela instrukcije u okviru dijela operanda. To je
konstantan podatak koji e se upisati u neki od registara procesora ili koji e se koristiti pri
realizovanju odreene operacije.
Primjer:
MVI B,78h; 78h(B), Vrijednost 78h smjestiti u registar (B).
LXI B,1F02h; 1Fh(B) (vii bajt), 02h(C) (nii bajt), Napuniti
registarski par (B,C) sa brojem 1F02h
MVI M,1Fh; 1FhM(H,L), Vrijednost 1Fh smjestiti u memorijsku
lokaciju ija je adresa odreena sadrajem
registarskog para (H,L).
DIREKTNO ADRESIRANJE
Kod ovog naina adresiranja, adresa memorijske lokacije na kojoj se nalazi operand koji je
potreban za izvrenje instrukcije, nalazi se direktno u sastavu instrukcije i to u dijelu operanda
instrukcije. Na primjer:
LDA 0123h; napuniti akumulator sadrajem lokacije ija je adesa
0123h.
3. Struktura procesora 31
INDIREKTNO ADRESIRANJE
Kod ovog naina adresiranja, adresa operanda se nalazi u nekom od registarskih parova ((B,C),
(D,E), (H,L)) koji se koriste kao pokazivai na lokaciju u kojoj se nalazi operand. Na primjer :
MOV A,M; M(H,L)(A)
Sadraj memorijske lokacije M ija je adresa odreena registarskim parom (H,L) smjestiti u
akumulator.
Upravljanje serijskim
Upravljanje prekidom
ulazom i izlazom
B(8) C(8)
Privremeni Registar Registar
Akumulator
registar bita stanja instrukcija D(8) E(8)
H(8) L(8)
SP(8)
Aritmetiko-
Dekoder PC(8)
logika
instrukcija SKLOP ZA INC. I DEC.
jedinica ADRESE
VCC
VSS Bafer
Upravljako kontrolna jedinica Bafer
X1 adrese i
adrese
X2 podataka
10
S0
S1
CLK
READY
RD
ALE
HOLD
HLDA
RESET IN
RESET OUT
WR
Preko ovih signala se prenose i adrese "U/I" (ulazno-izlaznih) sklopova pri izvravanju ulaznih i
izlaznih instrukcija. Na njima se uvijek nalazi sadraj nekog od adresnih registara procesora.
Broj adresnih signala je uglavnom jednak broju bita adrese koju proceor generie. Da bi se
smanjio ukupan broj izvoda na integrisanom kolu (procesoru) jedan dio adrese se prenosi preko
signala podataka, a drugi dio adrese preko adresnih signala.
Ovaj mikroprocesor ima osam adresnih signala preko kojih se prenosi "vii" bajt adrese (A8-A15)
i oni su stabilni za vrijeme trajanja mainskog ciklusa. "Nii" bajt adrese se prenosi preko
signala kojim se prenose i podaci, i to u toku prvog takt perioda mainskog ciklusa , a nakon
toga na tim linijama se pojavljuju podaci pa se kae da se vri multipleksiranje adresa i podataka
na tim linijama.
SIGNALI PODATAKA
Preko ovih signala se prenose podaci u procesor i iz procesora.
Procesor ima onoliko signala podataka koliko bita imaju podaci sa kojima operiu, tj. onoliko
bita koliko bita ima akumulator.
Mikroprocesor Intel 8085 ima osam signala podataka oznaenih sa AD0-AD7, preko kojih se
prenosi i nii bajt adrese.
UPRAVLJAKI SIGNALI
To su signali pomou kojih procesor upravlja radom operativne memorije, "U/I" sklopovima i
nekim drugim sklopovima u raunaru. Koriste se i za davanje informacije procesoru o stanju
ostalih sklopova. Tipini upravljaki signali su:
signal za oitavanje iz operativne memorije,
signal za upisivanje u operativnu memoriju,
signal za oitavanje iz ulaznog sklopa,
signal za upisivanje u izlazni sklop,
signal zahtjeva za prekid,
potvrda prihvatanja zahtjeva za prekid,
zahtjev za zaustavljanje ili "DMA" (Direct Memory Access) prenos,
potvrda za prihvatanje zahtjeva za zaustavljanje ili "DMA" prenos i
resetovanje.
To su jednosmjerni signali od kojih su jedni ulazni (daju informaciju o stanju ostalih sklopova),
a drugi su izlazni (koje generie procesor).
SIGNAL ZA OITAVANJE IZ OPERATIVNE MEMORIJE
RD je izlazni signal (kontrolni signal oitavanja), logika nula na ovom izlazu se generie kada
je potrebno oitati podatak iz memorije ili ulaznog sklopa.
Dok je RD = 0 , podatak se mora pojaviti na linijama magistrale podataka. Mora biti stabilan na
tim linjama kada signal postane visok jer se tada podatak sa magistrale upisuje u odgovarajui
registar mikroprocesora.
SIGNAL ZA UPISIVANJE U OPERATIVNU MEMORIJU
WR = 0 se generie kada je potrebno podatak iz nekog registra upisati u memoriju ili izlazni
sklop. WR = 0 pokazuje da je magistrala podataka spremna za prenos i da se podatak nalazi na
linijama magistrale podataka. Podatak mora biti stabilan kada WR postane "visok" (stanje
logie jedinice).
3. Struktura procesora 33
Maskiranje se vri pomou instrukcije SIM pomou koje postavljamo ili briemo unutranji bit
prekida.
Ova tri signala imaju vii prioritet od INTR, a nii prioritet nego ulaz TRAP. Najvii prioritet od
ova tri ima RST 7.5, a najnii RST 5.5.
TRAP je ulazni signal za prekid najvieg nivoa prioriteta. Kada je TRAP = 1 vri se skok na
"fiksnu" poetnu adresu programa za obradu prekida, a ona je 0024h .
34 Praktikum za auditorne vjebe iz mikroprocesorskih sistema
Ovaj prekid se ne moe maskirati, on je uvijek omoguen tj. ne moe se zabraniti njegovo
prihvatanje.
POTVRDA PRIHVATANJA ZAHTJEVA ZA PREKID
To je izlazni signal procesora. Procesor ga generie kada prihvati zahtjev za prekid. Taj signal se
vodi na periferni ureaj koji je izazvao prekid kao informacija ureaju da je njegov zahtjev
prihvaen. Koristi se i za oitavanje vektora prekida koji definie poetnu adresu odgovarajueg
programa za obradu prekida.
Kada je ovaj ulaz na nivou logike nule ( RESET IN = 0 ) tada on dovodi mikroprocesor u
RESET stanje u kome je PC=0, IE=0, HLDA=0 i program se ne izvrava.
Prelaskom na visok nivo ovog signala ( RESET IN = 1 ) tada procesor poinje izvravanje
programa od poetne adrese ( 0000h ).
READY
To je ulazni signal koji se koristi pri radu sa sporim memorijma i U/I sklopovima kod kojih
procesor mora da eka dok ne budu spremni.
4.1. ALGORITMI
POJAM ALGORITMA I OSNOVNA SVOJSTVA ALGORITMA
Obavljanje razliitih poslova svodi se na izvoenje pojedinih osnovnih operacija zadanim
redoslijedom. Pod pojmom algoritma podrazumijevamo tano opisana pravila za postizanje
eljenog cilja, odnosno, moemo rei da je algoritam konaan niz nedvosmislenih koraka za
postizanje cilja.
Svojstva algoritma:
uz svaki algoritam moraju jasno biti definisani poetni objekti nad kojima se
obavljaju operacije i zavrni objekti ili rezultati koji se pojavljuju kao rezltat
provoenja algoritma.
algoritam mora biti sastavljen od konanog broja koraka. Svaki korak opisuje se
instrukcijom. Obavljanje algoritma naziva se algoritamskim procesom.
za obavljanje algoritma potreban je izvrilac algoritma, koji razumije algoritam i
zna tano obaviti svaki korak algoritma. Trajanje algoritamskog procesa odreeno je
brzinom kojom izvrilac obavlja korake algoritma. Obavljanje algoritma ne zahtjeva
nikakvu domiljatost ili inicijativu izvrioca. Izvrilac djeluje sasvim mehaniki
algoritam je upotrebljiv (ili teorijski upotrebljiv) ako se za bilo koji lan iz
poetne klase objekata moe dobiti rezultat iz klase dozvoljenih zavrnih objekata u
konanom vremenu, tj. uz konaan broj koraka u algoritamskom procesu. Neki
teorijski upotrebljivi algoritmi su krajnje neprikladni za praktinu upotrebu jer
njihovo izvoenje moe trajati neprihvatljivo dugo. Isto tako neki teorijski
neupotrebljivi algoritmi mogu biti praktino upotrebljivi za odreeni podskup klase
poetnih objekata, ako se u njih ugrade ogranienja koja zaustavljaju algoritamski
proces nakon odreenog broja koraka ili ga zaustavljaju nakon pojave prepreke u
nekom od koraka.
Algoritme, s obzirom na obim primjene, moemo podijeliti u dvije vrste:
specijalizovane mogu se primijeniti samo na pojedine poetne objekte
opte dozvoljava razliite vrijednosti poetnih objekata.
JEZIK ZA ZAPISIVANJE ALGORITAMA INSTRUKCIJE ZA OBAVLJANJE
OPERACIJA
Algoritmi se mogu pisati na bilo kojem govornom jeziku. Isto je tako mogue sainiti i
umjetne jezike za zapisivanje algoritama. Bitno je da izvrilac algoritma poznaje jezik na kojem
je algoritam zapisan. Algoritmi zapisani dobro oblikovanim umjetnim jezikom mogu biti mnogo
saetiji, pregledniji i mogu se jednoznano tumaiti. Algoritmi zapisani takvim jezikom nazivaju
se programima, a jezici programskim jezicima.
S obzirom da su vrste osnovnih objekata u takvim jezicima relativno jednostavne i da najee
poprimaju oblik brojki i slova, objekti se najee nazivaju podacima. Umjesto klasa objekata
koristimo naziv tip podataka.
Poetne vrijednosti podataka nazivaju se ulaznim podacima, a zavrne vrijednosti objekata
izlaznim podacima programa.
Sastavni dio programa su instrukcije koje se ugrubo mogu podijeliti na:
instrukcije za obavljanje operacija
instrukcije za odreivanje toka programa
instrukcije za ulaz i izlaz podataka.
esto se javlja potreba da se vie instrukcija objedini u grupu instrukcija.
4. Programiranje 39
Kod novostvorenih algoritama vano je najprije ustanoviti njihovu ispravnost ili korektnost.
Algoritam je korektan ako za sve objekte iz klase dozvoljenih ulaznih objekata omoguuje
odreivanje rezultata i ako je taj rezultat ispravan pri svim moguim vrijednostima ulaznih
varijabli.
Druga vana injenica, koju treba ocijeniti kod algoritama, je trajanje algoritamskog procesa,
izraeno kao broj osnovnih operacija koje treba obaviti. Pretpostavlja se da e trajanje
algoritamskog procesa biti proporcionalno ukupnom broju operacija. To svojstvo se naziva
vremenska sloenost ili kompleksnost algoritma.
Primjer
Opiite dijagram toka za algoritam koji za dva zadana broja ispisuje iste u padajuem poretku.
Rjeenje:
4. Programiranje 43
Primjer
Opiite dijagram toka za algoritam koji za ispisuje prvih 10 elemenata niza.
Rjeenje:
Ako nema te pseudo instrukcije onda program poinje od adrese 0000h . Ona se moe u
programu pojaviti vie puta. Poetnu adresu odreuje vrijednost izraza koji se nalazi u polju
operanda.
NAME IZRAZ
Koristi se za definisanje imena programa, obavezno mora biti prva instrukcija izvornog
programa, a njegov naziv je definisan sa "IZRAZ".
END
Oznaava kraj izvornog programa. Mora biti posljednja instrukcija u programu.
PSEUDO INSTRUKCIJE ZA DEFINISANJE SIMBOLIKIH IMENA
Koriste se uglavnom dvije vrste i to EQU i SET.
EQU dodjeljuje vrijednost simbolu ili labeli, koja se pojavljuje u programu na vie
mjesta.
Ima oblik:
SIMBOL_EQU_IZRAZ
Simbolu bez obzira gdje se pojavljuje u programu, asembler dodjeljuje vrijednost IZRAZ,
odnosno kada se jednom ta vrijednost dodjeli uvijek se podrazumijeva i definie se samo jedan
puta u programu.
Na primjer:
AAA EQU 05
48 Praktikum za auditorne vjebe iz mikroprocesorskih sistema
On definie sve operacije koje mikroprocesor moe da obavi. Intel 8085 ima 80 osnovnih
instrukcija koje se dijele:
instrukcije prenosa podataka,
instrukcije koje manipuliu sadrajem akumulatora i registara,
instrukcije za upravljanje tokom izvravanja programa i
instrukcije koje upravljaju stekom, ulazom/izlazom i mikroprocesorom.
Primjeri:
SPECIJALNE INSTRUKCIJE
CMA; komplementirati akumulator
STC; postaviti bit prenosa CY = 1
CMC; komplementirati bit prenosa
DAA; decimalno podeavanje akumulatora (slijedi nakon
aritmetike operacije)
Operacijom PUSH se najprije pokaziva steka umanji za jedan, a zatim vri unos podataka na
vrh steka.
PUSH rp; smjestiti sadraj registarskog para (rp) na stek, pri
tom se prvo smjesti vii bajt pa onda nii bajt.
Sadraj pokazivaa steka se umanjuje za dva,
(SP)2.
Operacijom POP uzima se podatak sa vrha steka, a zatim vrijednost pokazivaa uveava za
jedan.
POP rp; smjesititi podatke sa steka u registarski par (rp), pri
tome se prvo uzima i smjeta nii bajt pa onda vii
bajt. Sadraj pokazivaa steka se uvea za dva,
(SP)+2.
XTHL; zamijeniti sadraj registara (H) i (L) i posljednje
vrijednosti u steku adresirane sa (SP), (SP) ostaje
nepromijenjen odnosno zamijeniti (H,L) i vrh steka.
SPHL; premjestiti sadraj registara (H) i (L) u registar (SP)
(pokaziva steka).
LXI SP, (b2)(b3); napuniti neposredno (SP), pri emu se bajt (b2)
prenosi u osam niih bita (SP), a bajt (b3) u osam
viih bita (SP).
INX SP; (SP)+1SP, inkrementirati registar.
DCX SP; (SP)-1SP, dekrementirati registar.
INSTRUKCIJE ZA UPRAVLJANJE ULAZOM/IZLAZOM
IN adr; u akumulator se upisuje podatak sa ulaznog porta
ija je adresa adr.
OUT adr; sadraj akumulatora se upisuje u izlazni port ija je
adresa adr.
INSTRUKCIJE ZA UPRAVLJANJE MIKROPROCESOROM/KONTROLNE
INSTRUKCIJE
EI; postavlja se bit omoguenja prekida (IE) na jedan,
pri emu se omoguuje prekid.
DI; brie se bit omoguenja prekida (IE=0), pri emu se
prekid onemoguava.
NOP; ne obavlja se nikakva operacija nego se samo sadraj
PC-a poveava za 1, (PC)+1PC.
HLT; zaustavlja se mikroprocesor i iz tog stanja procesor
moe izai samo ako se pojavi zahtjev za prekid ili
DMA prenos.
56 Praktikum za auditorne vjebe iz mikroprocesorskih sistema
7. ZADACI
58 Praktikum za auditorne vjebe iz mikroprocesorskih sistema
1. Zadatak
Napisati program prema dijagramu toka na slici, program treba da se nalazi u memoriji poev od
adrese 0800h.
Rjeenje:
NAME ZAD1
ORG 0800h
LDA Q; (Q)(A)
STA P; (A)(P)
HLT
Q: DB 4
P: DS 1
KOMENTAR ZADATKA:
LDA Q; napuniti akumulator direktno sadrajem odreenim
labelom Q.
STA P; sadraj akumulatora pohraniti (smjestiti) na lokaciju
odreenu labelom P.
DB 4; pseudo instrukcija, dodjeljuje vrijednost
memorijskoj lokaciji oznaenoj labelom Q.
DS 1; Pseudo instrukcija, rezervie memorijsku lokaciju za
upis rezultata.
2. Zadatak
Napisati program koji izraunava izraz:
Q = (Y + Z) W, za Y = 2, Z = 3, W = 1.
Poetna adresa programa je 0900h.
Rjeenje:
NAME ZAD2
ORG 0900h
LDA Y
LXI H,Z
ADD M; (A)+M(H,L)(A)
LXI H,W
7. Zadaci 59
SUB M; (A)M(H,L)(A)
STA Q
HLT
Y: DB 2
Z: DB 3
W: DB 1
Q: DS 1
END
KOMENTAR ZADATKA
LDA Y; napuniti akumulator direktno sadrajem odreenim
labelom Y.
LXI H,Z; registarski par (H,L) puni adresom odreenom
labelom Z.
ADD M; sabire vrijednost u akumulatoru i podatak koji se
nalazi na memorijskoj lokaciji odreen registarskim
parom (H,L), tj. (Y+Z).
LXI H,W; registarski par (H,L) puni adresom odreenom
labelom W.
SUB M; oduzima vrijednost na memorijskoj lokaciji
odreenoj registarskim parom (H,L) od vrijednosti u
akumulatoru tj. (Y+Z)W.
STA Q; pohranjuje sadraj akumulatora direktno na adresu
Q.
Y:DB 2; pseudo instrukcija koja dodjeljuje vrijednost
memorijskoj lokaciji oznaenoj labelom Y.
Z:DB 3; pseudo instrukcija koja dodjeljuje vrijednost
memorijskoj lokaciji oznaenoj labelom Z.
W:DB 1; pseudo instrukcija koja dodjeljuje vrijednost
memorijskoj lokaciji oznaenoj labelom W.
Q:DS 1; pseudo instrukcija koja rezervie memorijsku
lokaciju za upis rezultata.
3. Zadatak
Napisati asemblerski program koji vri sabiranje dva 16-bitna broja prema algoritmu datom na
slici. Poetna adresa programa je 0A00h.
60 Praktikum za auditorne vjebe iz mikroprocesorskih sistema
Rjeenje:
NAME ZAD3
ORG 0A00h
LHLD P; (PH,PL)(H,L)
XCHG; (H,L)(D,E)
LHLD Q; (QH,QL)(H,L)
DAD D; (H,L)+(D,E)(H,L)
SHLD R; (H,L)R
HLT
P: DW 0400h
Q: DW 02F1h
R: DS 2
END
KOMENTAR ZADATKA
LHLD P; puni registarski par (H,L) direktno sa
esnaestobitnim brojem 0400h smjetenog na
adresama P i P+1. Prvo puni nii bajt (L=00h), a
zatim vii bajt (H=04h).
XCHG; mijenja sadraj registarskim parovima (H,L) i (D,E).
LHLD Q; puni (H,L) direktno esnaestobitnim brojem na
adresama Q i Q+1. Prvo puni nii bajt (L=F1h) a
zatim vii bajt (H=02h).
DAD D; sabire sadraj registarskih parova (H,L) i (D,E) i
rezultat smjeta u registarski par (H,L).
SHLD R; pohranjuje sadraj registarskog para (H,L) direktno
na lokacije R i R+1 (dvije uzastopne lokacije).
P: DW 0400h dvije uzastopne lokacije P i P+1 za upis
esnaestobitnog broja 0400h
R: DS 2; rezervie dvije lokacije u koje se smjeta rezultat.
4. Zadatak
Prebaciti polje od pet podataka iz uzastopnih memorijskih lokacija u drugi dio memorije u novih
pet lokacija. Zahtijeva se da program poinje od adrese 0B00h.
Rjeenje:
NAME ZAD4
ORG 0B00h
LXI D,Q
LXI H,P
MVI B,05h; 05h(B)
L1: MOV A,M; M(H,L)(A)
INX H; (H,L)+1(H,L)
STAX D
INX D; (D,E)+1(D,E)
DCR B; (B)1(B)
JNZ L1; (B)0(Z=0)
HLT
P: DB 5,4,3,2,1
Q: DS 5
END
KOMENTAR ZADATKA
LXI D, Q; registarski par (D,E) punimo neposredno sa
poetnom adresom niza Q.
LXI H, P; registarski par (H,L) punimo neposredno sa
poetnom adresom niza P.
MVI B, 05h; punimo ragistar B neposredno sa 05h.
MOV A, M; punimo akumulator elementima niza P iz
memorijske lokacije M (H,L).
INX H; uveavamo pokaziva adrese niza P za jedan, tj.
prelazimo na sljedeu adresu niza P.
STAX D; vrijednost iz akumulatora stavljamo na memorijsku
lokaciju odreenu parmo (D,E).
INX D; uveavamo pokaziva adrese niza Q za jedan, tj.
prelazimo na sljedeu adresu niza Q.
DCR B; umanjujemo broja podataka za jedan.
JNZ L1; uslovni skok na memorijsku lokaciju oznaenu
labelom L1, ako vrijednost brojaa podataka nije
jednaka nuli.
P: DB 5,4,3,2,1 pseudo instrukcije.
Q: DS 5
62 Praktikum za auditorne vjebe iz mikroprocesorskih sistema
5. Zadatak
Nalaenje zbira niza podataka (uz uslov da se ne deava prekoraenje opsega). Na adresi 0A00h
nalazi se podatak koji govori koliki je broj podataka u nizu. Podaci su smjeteni u memoriji
poev od adrese 0800h. Program poinje od adrese 0B00h.
Rjeenje:
NAME ZAD5
ORG 0B00h
LDA 0A00h
MOV B,A; (A)(B)
LXI H,0800h; 0800h(H,L)
SUB A; (A)(A)(A)
L1: ADD M; (A) + M(H,L)(A)
INX H; (H,L)+1(H,L)
DCR B; (B)1(B)
JNZ L1; (B)0(Z=0)
HLT
END
KOMENTAR ZADATKA
LDA 0A00h; punimo akumulator direktno podatkom koji
pokazuje broj podataka u nizu, a nalazi se na adresi
0A00h.
MOV B,A; punimo registar B (broja) podatkom iz akumulatora
u kome se nalazi podatak koji govori koliki je broj
podataka u nizu.
LXI H,0800h; registarski par (H,L) punimo neposredno sa 0800h,
to predstavlja poetnu adresu niza podataka.
SUB A; ienje akumulatora.
ADD M; akumulatoru dodajemo podatak na memorijskoj
lokaciji odreenoj registarskim parom (H,L) i
rezultat sabiranja smjetamo u akumulator.
INX M; registarski par (H,L) uveavamo za jedan, tj.
postavljamo pokaziva adrese na sljedeu
memorijsku lokaciju iz koje uzimamo podatak za
obradu.
DCR B; umanjujemo broja podataka za jedan.
JNZ L1; uslovni skok na memorijsku lokaciju oznaenu
labelom L1, ako vrijednost brojaa podataka nije
jednaka nuli, tj. ako ima jo podataka za obradu.
7. Zadaci 63
6. Zadatak
Koristei podatke iz prethodnog zadatka, pronai najvei broj u nizu podataka predstavljenih
kao cjelobrojni bez znaka i smjestiti na adresu 0E00h. Program poinje od adrese 0B00h.
Rjeenje:
NAME ZAD6 Pronai najmanji broj:
ORG 0B00h imamo izmjenu u dole
LDA 0A00h prikazanim instrukcijama.
MOV B,A; (A)(B)
LXI H,0800h; 0800h(H,L)
NM: MOV A,M; M(H,L)(A) [NOV MIN: MOV A,M]
STA 0E00h
Adr1: DCR B; (B)(1)(B)
JZ Kraj; (B)=0(Z=1)
INX H; (H,L)+1(H,L)
CMP M; (A)M(H,L)
JC NM; CY=1 [JNC NOV MIN]
JMP Adr1
Kraj: HLT
END
KOMENTAR ZADATKA
STA 0E00h; stavljamo sadraj akumulatora u kome se nalazi
najvei broj u polju podataka direktno na
memorijsku lokaciju 0E00h.
DCR B; umanjujemo broja podataka za jedan.
JZ Kraj; uslovni skok na memorijsku lokaciju oznaenu
labelom Kraj, ako je vrijednost brojaa jednaka
nuli (Z=1).
INX H; prelazak na adresu sljedeeg elementa.
CMP M; poredi se podatak na memorijskoj lokaciji odreenoj
registarskim parom (H,L) sa sadrajem akumulatora
u kome je trenutno najvei broj. Ako je M(H,L)>A,
rezultat AM(H,L) je negativan, te je CY=1.
JC NM; uslovni skok na memorijsku lokaciju oznaenu
labelom NM (novi maksimum) ako je postavljan
bit prenosa (CY=1) to omoguava smjetanje novog
maksimuma u akumulator.
JMP Adr1; bezuslovni skok na memorijsku lokaciju oznaenu
labelom Adr1 to omoguava dalju obradu sve dok
sadraj registra B ne bude jednak nuli (Z=1).
NAPOMENA
Logika operacija CMP M izvrava operaciju (A)M(H,L) i ne mijenja se sadraj akumulatora,
ali mijenja bite registra stanja. Ako je tekui element polja M(H,L) vei od ranije naenog
maksimuma koji je u akumulatoru, onda ga on zamjenjuje u akumulatoru na taj nain to se bit
prenosa postavlja na jedan (CY=1), te se izvrava skok na labelu NM gdje se postavlja novi
maksimum.
64 Praktikum za auditorne vjebe iz mikroprocesorskih sistema
7. Zadatak
Napisati program koji vri brisanje memorije mikroraunara od lokacije 1000h do lokacije 2000h.
Program poinje od adrese 0020h.
Rjeenje:
NAME ZAD7
ORG 0020h
LXI H,1000h; 1000h(H,L)
L1: MVI M,00h;(**) 00hM(H,L)
INX H; (H,L)+1(H,L)
MOV A,H; (H)(A)
CPI 20h; (A)20h
JNZ L1; (A)20hZ=0
HLT
**ovu instrukciju moemo drugaije napisati:
L1: SUB A; (A)(A)(A)
MOV M,A; (A)M(H,L)
KOMENTAR ZADATKA
LXI H,1000h; registarski par (H,L) punimo neposredno sa 1000h,
to predstavlja poetnu adresu od koje se vri
brisanje memorije.
MVI M,00h; punimo memorijsku lokaciju odreenu registarskim
parom (H,L) neposredno sa 00h, tj. briemo je.
INX H; registarski par (H,L) uveavamo za jedan, tj.
postavljamo pokaziva adrese na sljedeu lokaciju.
MOV A,H; punimo akumulator iz registra (H) jer je:
1000 1001
+ 1 1
10 ( H ) , 01 ( L ) ; 10 ( H ) , 02 ( L ) ;
1001 1002
1FFE 1FFF
+ 1 1
1F ( H ) , FF ( L ) ; 20 ( H ) , 00 ( L ) .
1FFF 2000
8. Zadatak
Napisati program koji upisuje jedinice u sve bite svih memorijskih lokacija od adrese 2000h do
3000h. Program poinje od 0020h.
Rjeenje:
NAME ZAD8
ORG 0020h
LXI H,2000h; 2000h(H,L)
L1: MVI M,FFh; FFhM(H,L)
INX H; (H,L)+1(H,L)
MOV A,H; (H)(A)
CPI 30h; (A)30h
JNZ L1; (A)30h
HLT
KOMENTAR ZADATKA
LXI H,2000h; Registarski par (H,L) punimo neposredno sa 2000h
to predstavlja poetnu adresu od koje se upisuju
jedinice u sve bite memorije.
MVI M,FFh; Punimo memorijsku lokaciju odreenu registarskim
parom (H,L) neposredno sa FFh, tj. postavljamo
jedinice u sve bite M (H,L).
INX H; Postavljamo pokaziva adrese na sljedeu
memorijsku lokaciju u koju treba da postavimo
jedinice u sve bite;
MOV A,H; Punimo akumulator iz registra (H) jer je:
2000 2001
+ 1 1
20 ( H ) ,01 ( L ) ; 20 ( H ) , 02 ( L ) ;
2001 2002
2FFE 2FFF
+ 1 1
2F ( H ) , FF ( L ) ; 30 ( H ) , 00 ( L ) .
2FFF 3000
CPI 30h; Poredimo sa akumulatorom neposredno 30h (A30h),
tj. provjeravamo da li smo stigli do posljednje
memorijske lokacije u koju treba postaviti jedinice u
sve bite. Poredimo sa 30h jer registar H kada bude
30h, tada registar L ima sadraj 00h.
JNZ L1; Uslovni skok na memorijsku lokaciju oznaenu
labelom L1 ako vrijednost u akumulatoru nije
jednaka 30h tj. A30hZ=0.
9. Zadatak
Napisati program koji puni registarski par BC sa 0108 i 0018 respektivno, a zatim ga upii u
memoriju na dvije uzastopne lokacije poev od adrese 0080h. Program poinje od adrese 0020h.
66 Praktikum za auditorne vjebe iz mikroprocesorskih sistema
Rjeenje:
NAME ZAD9
ORG 0020h
LXI B,0801h; 0801h(B,C)
LXI H,0080h; 0080h(H,L)
MOV M,B; (B)M(H,L)
INX H; (H,L)+1(H,L)
MOV M,C; (C)M(H,L)
HLT
KOMENTAR ZADATKA
LXI B,0801h; registarski par (B,C) punimo neposredno sa 0801h,
odnosno 08h=0108(B), 01h=0018(C).
0108=000 001 0002=08hB
0018=000 000 0012=01hC
LXI H,0080h; registarski par (H,L) punimo neposredno sa 0080h
to predstavlja memorijsku lokaciju na koju emo
upisati sadraj registra (B)=08h.
MOV M,B; punimo memorijsku lokaciju 0800h sadrajem
registra (B)=08h.
INX H; postavljamo pokaziva adrese na sljedeu
memorijsku lokaciju 0081h.
MOV M,C; punimo memorijsku lokaciju 0081h sadrajem
registra (C)=01h.
10. Zadatak
Primjer uzimanja podataka sa steka, inkrementiranje i dekrementiranje podataka i ponovno
vraanje podataka na stek. Program poinje od adrese 0000h.
Rjeenje:
NAME ZAD10
ORG 0000h
LXI SP,0080h; 0800h(SP)
POP B; M((SP)+1)(B), M((SP)+2)(C)
INR B; (B)+1(B)
DCR C; (C)1(C)
PUSH B; (B)M((SP)1), (C)M((SP)2)
HLT
KOMENTAR ZADATKA
LXI SP,0080h; punimo neposredno pokaziva steka sa 0080h.
POP B; sadraj registarskog para (B,C) punimo neposredno
sa steka. Prvo se uzima i smjeta podatak u nii bajt
registarskog para (B,C) a zatim u vii bajt
respektivno: (0080h)(C), (0081h)(B), a sadraj
pokazivaa steka uveamo za dva ((SP)+2(SP)).
INR B; inkrementiramo podatak koji smo uzeli sa steka i
smjestili u vii bajt registarskog para (B,C), tj. u
registar (B).
7. Zadaci 67
11. Zadatak
U narednom primjeru data je standardna procedura skupljanja i formiranja u RAM-u
mikroprocesorskog sistema, polja podataka od jednog izvora. Ulazni podaci se uzimaju sa
ulaznog porta (registra). Poetna adresa polja podataka u RAM-u je 0800h. Adresa ulaznog porta
je A0h. Program poinje od adrese 0B00h. Uzimanje podatka sa ulaznog porta:
Prekida kada se pojavi FFh, ne unosi taj podatakide na kraj.
Rjeenje:
NAME ZAD11a
ORG 0B00h
MVI C,00h; 00h(C)
LXI H,0800h; 0800h(H,L)
L1: IN A0h
SUI FFh; (A)FFh(A)
JZ Kraj
MOV M,A; (A)M(H,L)
INX H; (H,L)+1(H,L)
INR C; (C)+1(C)
JMP L1
Kraj: HLT
NAPOMENA
U ovom zadatku potrebno je prekinuti uzimanje podataka sa ulaznog porta kada je taj podatak
FFh, zbog ega moramo po preuzimanju podataka sa porta u akumulator provjeriti zadani uslov.
KOMENTAR ZADATKA
MVI C,00h; punimo registar (C) neposredno sa 00h, tj.
postavljamo broja podataka (registar (C)) na
vrijednost 00h.
LXI H,0800h; registarski par (H,L) punimo neposredno sa 0800h,
to predstavlja poetnu adresu polja podataka.
IN A0h; podaci sa ulaznog porta upisuju se u akumulator.
SUI FFh; oduzimamo od akumulatora neposredno FFh i
rezultat smjetamo u akumulator, tj. ako je u
akumulatoru podatak koji smo preuzeli sa ulaznog
porta FFh, poslije naznaene operacije oduzimanja u
68 Praktikum za auditorne vjebe iz mikroprocesorskih sistema
12. Zadatak
U memoriji mikroraunara nalazi se niz od 400 (190h) binarnih podataka poev od adrese 0900h.
Napisati program koji vri logiko mnoenje i logiko sabiranje ovih podataka sa 55h i rezultate
smjestiti poev od adrese 0900h i 0000h respektivno. Program poinje od adrese 0B00h.
Rjeenje:
NAME ZAD12
ORG 0B00h
LXI B,0190h ; 0190h(B,C)
LXI H,0900h; 0900h(H,L)
LXI D,0000h; 0000h(D,E)
L1: MOV A,M; M(H,L)(A)
ORI 55h; (A)+55h(A)
STAX D
MOV A,M; M(H,L)(A)
ANI 55h; (A)55h(A)
MOV M,A; (A)M(H,L)
INX H; (H,L)+1(H,L)
INX D; (D,E)+1(D,E)
70 Praktikum za auditorne vjebe iz mikroprocesorskih sistema
DCX B; (B,C)1(B,C)
MOV A,B; B(A)
ORA C; (A)+(C)(A)
JNZ L1
HLT
KOMENTAR ZADATKA
LXI B,0190h; registarski par (B,C) punimo neposredno sa 0190h,
to predstavlja broja podataka niza.
LXI H,0900h; registarski par (H,L) punimo neposredno sa 0900h,
to predstavlja poetnu adresu niza podataka. Istu
ovu lokaciju koristiemo kasnije kao poetnu adresu
od koje smjetamo rezultate logikog mnoenja.
LXI D,0000h; registarski par (D,E) punimo neposredno sa 0000h,
to predstavlja poetnu adresu od koje smjetamo
rezultate logikog sabiranja.
L1: MOV A,M; uzimamo podatak iz niza koji se nalazi na
memorijskoj lokaciji ija je adresa u registarskom
paru (H,L) i stavljamo u akumulator.
STAX D; pohranjujemo sadraj akumulatora (indirektno
adresa u registarskom paru) na lokaciju ija je adresa
u registarskom paru (D,E).
MOV A,M; uzimamo isti podatak iz niza, kako bi izvrili logiko
mnoenje sa 55h.
MOV M,A; rezultat mnoenja iz akumulatora smjetamo na
memorijske lokacije poev od adrese 0900h.
13. Zadatak
U memoriji mikroraunara je niz od 400 (190h) binarnih podataka poev od adrese 0800h.
Napisati program koji podatke iz niza vee od 100 prebacuje na uzastopne lokacije poev od
adrese 0C00h. Poetna adresa programa je 0020h.
Rjeenje:
NAME ZAD13
ORG 0020h
LXI B,0190h; 0190h(B,C)
LXI H,0800h; 0800h(H,L)
LXI D,0C00h; 0C00h(D,E)
L1: MOV A,M; M(H,L)(A)
CPI 65h;
JC L2
STAX D
INX D
L2: INX H
DCX B
MOV A,B
ORA C
JNZ L1
HLT
7. Zadaci 71
KOMENTAR ZADATKA
LXI B,0190h; registarski par (B,C) punimo neposredno sa 0190h,
to predstavlja broja podataka niza.
LXI H,0800h; registarski par (H,L) punimo neposredno sa 0800h,
to predstavlja poetnu adresu niza podataka.
LXI D,0C00h; registarski par (D,E) punimo neposredno sa 0C00h,
to predstavlja poetnu adresu za smjetanje
podataka iz niza veih od 10010.
L1: MOV A,M; uzimamo podatak iz niza koji se nalazi na
memorijskoj lokaciji ija je adresa u registarskom
paru (H,L) i stavljamo u akumulator.
CPI 65h; uporeuje 10110=65h sa akumulatorom, na sljedei
nain:
A<101 CY=1
A10110
A>101 CY=0
JC L2; uslovni skok na L2, ako je CY=1, tj. 101>A.
STAX D; na memorijsku lokaciju (registarski par (D,E))
smjetamo podatke iz akumulatora vee od 100, za
koje je CY=0.
L2: INX H; inkrementiramo registarski par (H,L) kako bi
pokaziva stavili na sljedeu memorijsku lokaciju sa
koje uzimamo podatak za obradu.
14. Zadatak
U memoriji mikroraunara nalazi se niz od 300=120h podataka poev od adrese 0906h.. Izvriti
sabiranje podataka koji imaju neparan broj jedinica i odrediti broj takvih podataka. Rezultat
smjestiti na dvije lokacije poev od adrese 0000h. Podaci su takvi da je njihova suma manja od
255. Poetna adresa programa je 0020h.
Rjeenje:
NAME ZAD14
ORG 0020h
LXI B,012Ch; 012Ch(B,C)
LXI H,0906h; 0906h(H,L)
MVI D,00h; 00h(D)
MVI E,00h; 00h(E)
L1: MOV A,M; M(H,L)(A)
JPE L2
INR D; (D)+1(D)
ADD E; (A)+(E)(A)
MOV E,A; (A)(E)
L2: INX H; (H,L)+1(H,L)
DCX B; (B,C)1(B,C)
MOV A,B; (B)(A)
ORA C; (A)+(C) (A)
JNZ L1
MOV A,E; (E)(A)
STA 0000h
MOV A,D; (D)(A)
STA 0001h
HLT
72 Praktikum za auditorne vjebe iz mikroprocesorskih sistema
KOMENTAR ZADATKA
LXI B,012Ch; registarski par (B,C) punimo neposredno sa 012Ch,
to predstavlja broja podataka niza, jer je niz vei
od 25510.
LXI H,0906h; registarski par (H,L) punimo neposredno sa 0906h,
to predstavlja poetnu adresu niza podataka.
MVI D,00h; registar (D) koristimo kao broja podataka sa
neparnim brojem jedinica.
MVI E,00h; registar (E) koristimo za trenutno smjetanje sume
podataka sa neparnim brojem jedinica.
L1: MOV A,M; uzimamo podatak na memorijskoj lokaciji ija je
adresa u registarskom paru (H,L) i stavljamo u
akumulator.
JPE L2; skok na L2 ako je u akumulatoru podatak sa parnim
brojem jedinica (P=1) gdje uzimamo sljedei
podatak iz datog niza u memoriji, ako ne postoji
parnost tj. neparan broj jedinica izvravaju se
instrukcije koje slijede poslije opisane.
INR D inkrementiramo registar (D) koji je broja podataka
sa neparnim brojem jedinica.
ADD E zbrajamo podatke sa neparnim brojem jedinica.
MOV E,A sumu podataka sa neparnim brojem jedinica iz
akumulatora prenosimo u registar (E).
L2: INX H; uzimamo sljedei podatak za obradu iz niza.
DCX B; dekrementiramo (umanjujemo) broja podataka u
nizu za jedan.
MOV A,B provjeravamo dali je broja na nuli, tj. ima li jo
ORA C podataka u datom nizu za obradu.
JNZ L1
MOV A,E; prenosimo podatak iz registra (E), tj. ukupnu sumu
podataka sa neparnim brojem jedinica, u akumulator.
STA 0000h; podatak iz akumulatora, tj. ukupnu sumu podataka sa
neparnim brojem jedinica smjetamo na memorijsku
lokaciju 0000h.
MOV A,D; prenosimo podatak iz registra (D), tj. ukupan broj
podataka sa neparnim brojem jedinica, u akumulator.
STA 0001h; podatak iz akumulatora, tj. ukupan broj podataka sa
neparnim brojem jedinica smjetamo na memorijsku
lokaciju 0001h.
15. Zadatak
U memorij mikroraunara nalazi se niz od 120h podataka, poev od adrese 0A00h. Napisati
program koji vri mnoenje svakog od podataka sa 10 i smjestiti rezultat na iste lokacije.
Poetna adresa programa je 0020h.
Rjeenje:
NAME ZAD15
ORG 0020h
LXI B,0120h; 0120h(B,C)
LXI H,0A00h; 0A00h(H,L)
L1: MOV A,M; M(H,L)(A)
MOV D,A; (A)(D)
7. Zadaci 73
16. Zadatak
Napisati program koji e generisati prvih 10 lanova niza prirodnih brojeva gdje je svaki sljedei
lan niza jednak zbiru prethodnih lanova. Poetna adresa je 0A00h za niz. Poetna adresa
programa je 0900h.
Rjeenje:
NAME ZAD16
ORG 0900h
LXI H,0A00h; 0A00h(H,L)
MVI A,01h; 01h(A)
MOV M,A; (A)M(H,L)
INX H; (H,L)+1(H,L)
MOV M,A; (A)M(H,L)
MVI B,07h; 07h(B)
L1: RLC; (A)2(A), ((A)2)
INX H; (H,L)+1(H,L)
74 Praktikum za auditorne vjebe iz mikroprocesorskih sistema
17. Zadatak
U memoriji mikroprocesora 8085 na lokacijama sa adresama 0900h i 0905h nalaze se dva
binarna podatka. Pomnoi ih i rezultat smjesti na lokaciju sa adresom 0920h (to je za nii bajt
proizvoda) i 0921h (to je za vii bajt proizvoda). Poetna adresa programa je 0800h.
Rjeenje:
NAME ZAD17
ORG 0800h Moe i ovako:
LXI H,0900h; 0900h(H,L) LDA 0900h
MOV E,M; M(H,L)(E) MOV E,A
LXI H,0905h; 0905h(H,L) LDA 0905h
MOV B,M; M(H,L)(B) MOV B,A
MVI D,00h; 00h(D)
LXI H,0000h; 0000h(H,L)
L1: DAD D; (D,E)+(H,L)(H,L)
DCR B; (B)1(B)
JNZ L1
MOV A,L; (L)(A)
STA 0920h
MOV A,H; (H)(A)
STA 0921h
HLT
7. Zadaci 75
KOMENTAR ZADATKA
LXI H,0900h; registarski par (H,L) punimo neposredno sa 0900h,
to predstavlja poetnu adresu prvog podatka.
MOV E,M; uzimamo podatak na M(H,L), tj. prvi podatak i
prenosimo u registar (E).
LXI H,0905h; u registarski par (H,L) smjetamo adresu drugog
podatka.
MOV B,M; uzimamo podatak na M(H,L), tj. drugi podatak i
prenosimo u registar (B).
MVI D,00h; u registar (D) prenosimo 00h, jer emo mnoenje
raditi
LXI H,0000h; pomou instrukcije DAD D.
L1: DAD D; ovom instrukcijom prvi broj u registarskom paru
(D,E) zbrajamo sa samom sobom onoliko puta u
zavisnosti od drugog broja koji se nalazi u registru
(B).
MOV A,L; ova instrukcija se izvrava kada je registar (B)=0, te
se nii bajt rezultata iz registra (L) smjeta u
akumulator.
STA 0920h; direktno smjeta podatak iz akumulatora na adresu
0920h.
MOV A,H; vii bajt rezultata mnoenja koji je u registru (H)
prenosimo u akumulator.
STA 0921h; direktno smjetamo podatak iz akumulatora na
adresu 0920h.
18. Zadatak
U memoriji mikroraunara nalazi se niz od 300 podataka poev od adrese 0800h. Podatke iz niza
koji zadovoljavaju uslov da je b2=b5=b7=0 prebaciti na nove lokacije poev od adrese 0B00h.
Odrediti broj takvih podataka. Poetna adresa programa je 0020h.
Rjeenje:
NAME ZAD18
ORG 0020h
LXI B,30010; 30010(B,C)
LXI H,0800h; 0800h(H,L)
LXI D,0B00h; 0B00h(D,E)
L1: MOV A,M; M(H,L)(A)
CPI 5Bh; (A)5Bh
JNZ L2
STAX D
INX D; (D,E)+1(D,E)
L2: INX H; (H,L)+1(H,L)
DCX B (B,C)1(B,C)
MOV A,B (B)(A)
ORA C; (A)+(C)(A)
JNZ L1
L3: DCX D; (D,E)1(D,E)
MOV A,D; (D)(A)
CPI 0Bh; (A)0Bh
JC L4
76 Praktikum za auditorne vjebe iz mikroprocesorskih sistema
INX B; (B,C)+1(B,C)
JMP L3
L4: HLT
KOMENTAR ZADATKA
LXI B,30010; u registarski par (B,C) smjetamo broj podataka niza
koji koristimo kao broja.
LXI H,0800h; u registarski par (H,L) smjetamo poetnu adresu
niza podataka za obradu.
LXI D,0B00h; u registarski par (D,E) smjetamo poetnu adresu
niza podataka koji zadovoljavaju uslov zadatka.
L1: MOV A,M; uzimamo podatak iz memorije adresiran u
registarskom paru (H,L) i prenosimo u akumulator
zbog dalje obrade.
CPI 5Bh; poredimo podatak iz memorije koji je u akumulatoru
neposredno sa 5Bh, tj. 01011011 to odgovara uslovu
zadatka.
JNZ L2; ako je rezultat prethodne instrukcije (poreenje)
(A)5Bh=0, tada podatak iz niza zadovoljava uslov
zadatka i ne izvrava se skok na L2, ve prelazi na
izvravanje sljedee instrukcije.
STAX D; ako je uslov zadovoljen, podatak iz akumulatora
stavljamo na novu lokaciju ija je adresa u
registarskom paru (D,E).
INX D; po smjetanju podataka u memoriju,
inkrementiranjem registarskog para (D,E)
postavljamo adresu za sljedei podatak iz niza koji
e zadovoljiti uslov zadatka.
L2: INX H; inkrementiranjem registarskog para (H,L)
postavljamo adresu sljedeeg podatka iz niza koji
emo obraivati.
DCX B; dekrementiranjem registarskog para (B,C), tj.
umanjujemo broja podataka u nizu poto smo iz
memorije uzeli podatak i obradili.
L3: DCX; prije ulaska u ovu petlju imali smo INX D, tako da u
registarskom paru (D,E) imamo jednu memorijsku
lokaciju vie i ovom instrukcijom tu lokaciju
briemo.
MOV A,D; podatak iz registra (D) prenosimo u akumulator. Na
poetku programa u registarski par (D,E) smjetamo
0B00h, zatim svaki podatak koji zadovolji uslov od
njih 30010=12Ch smjetamo na novu sljedeu adresu.
Maksimalan podatak u (D,E) moe biti
0B00h+012Ch=0C2Ch, te u registru (D) imamo 0Ch
koji prenosimo u akumulator.
CPI 0Bh; poredimo podatak iz akumulatora, tj. registra (D) sa
0Bh, tako da imamo petlju u kojoj brojimo podatke
koji su zadovoljili uslov smjetajui ih u registar (B).
Onog momenta kada ispunimo uslov za JC, tj. da je
C=1, jer je podatak u akumulatoru 0Ah, dalje
izvravanje programa se zaustavlja.
7. Zadaci 77
19. Zadatak
Niz od 500 ASCII podataka je zadat u memoriji mikroraunara poev od adrese 0500h, iz niza
izdvojiti cifre i poslati ih na izlazni port na adresu 20h. Prestati kada se pojavi znak prazno.
ASCII kodovi za cifre su od 30h do 39h, a znak prazno 20h. Poetna adresa programa je 0020h.
Rjeenje:
NAME ZAD19
ORG 0020h
LXI H,0500h; 0500h(H,L)
LXI B,01F4h; 01F4h(B,C)
L1: MOV A,M; M(H,L)(A)
INX H; (H,L)+1(H,L)
CPI 30h; (A)30h
JC Pr
CPI 40h; (A)40h
JNC L2
OUT 20h
JMP L2
Pr: CPI 20h; (A)20h
JZ Kraj
L2: DCX B; (B,C)1(B,C)
MOV A,B; (B)(A)
ORA C; (A)+(C)(A)
JNZ L1
Kraj: HLT
KOMENTAR ZADATKA
LXI H,0500h; u registarski par (H,L) smjetamo poetnu adresu
niza.
LXI B,01F4h; u registarski par (B,C) smjetamo ukupan broj
podataka zadatog niza.
L1: MOV A,M; u akumulator prenosimo podatak iz memorije
adresiran registarskim parom (H,L).
INX H; nakon prenosa podatka iz memorije u akumulator,
inkrementiranjem registarskog para (H,L)
postavljamo u njemu adresu sljedeeg podatka za
obradu.
CPI 30h; poreenjem akumulatora i 30h saznajemo da li je
preneeni podatak iz memorije u akumulatoru cifra.
Ako je vei ili jednak 30h provjeravamo da ne bude
vei ili jednak 40h i ako zadovolji to je cifra i
aljemo je na izlazni port, zatim provjeravamo da li
ima jo podataka u nizu i ako ima uzimamo sljedei
podatak. Ako je podatak manji od 30h postavlja se
bit prenosa i provjeravamo da li je jednak 20h, i ako
jeste program se zaustavlja, u suprotnom uzimamo
novi podatak.
78 Praktikum za auditorne vjebe iz mikroprocesorskih sistema
20. Zadatak
Na ulazni port sa adresom A0h dolazi niz od 150 jednobajtnih podataka, napisati program koji od
tog niza formira niz u memoriji poev od adrese A000h, zatim iz tog niza izdvojiti parne brojeve
i od njih formirati novi niz od adrese B000h, a neparne slati na izlazni port sa adresom B0h.
Program treba da pone od adrese 0000h.
Rjeenje:
NAME ZAD20
ORG 0000h
MVI B,96h; 96h(B)
LXI H,A000h; A000h(H,L)
Ulaz: IN A0h
MOV M,A; (A)M(H,L)
INX H; (H,L)+1(H,L)
DCR B; (B)1(B)
JNZ Ulaz
LXI H,A000h; A000h(H,L)
LXI D,B000h; B000h(D,E)
MVI B,97h; 97h(B)
NN: MOV A,M; M(H,L)(A)
INX H; (H,L)+1(H,L)
DCR B; (B)1(B)
JZ Kraj
RAR
JNC Parni
RAL
OUT B0h
JMP NN
Parni: RAL
STAX D
INX D
JMP NN
Kraj: HLT
KOMENTAR ZADATKA
LXI H,A000h; u registarski par (H,L) smjetamo poetnu adresu
niza.
MVI B,96h; u registar (B) unosimo broj podataka koji dolaze sa
ulaznog porta.
In A0h; ulazna instrukcija, podaci se smjetaju sa ulaznog
porta u akumulator.
MOV M,A; podatak koji dolazi sa ulaznog porta smjeta se u
akumulator, ovom instrukcijom isti podatak iz
akumulatora prenosimo u memoriju na lokaciju ija
je adresa u registarskom paru (H,L).
LXI H,A000h; nakon to smo instrukcijama koje prethode formirali
niz podataka u memoriji, ovom instrukcijom u
registarski par (H,L) smjetamo 16-bitni podatak
A000h to predstavlja poetnu adresu formiranog
niza u memoriji.
LXI D,B000h; u registarski par (D,E) smjetamo poetnu adresu
novog niza sa parnim brojevima.
7. Zadaci 79
21. Zadatak
U memoriji mikroraunara nalazi se niz od 300 podataka na adresi 1800h. Prenijeti ove podatke
na nove lokacije poev od adrese 2800h, ali sa obrnutim redoslijedom. Odrediti takoe
maksimalni lan niza i staviti ga na adresu 3200h. Poetna adresa programa je 0020h.
Rjeenje:
NAME ZAD21
ORG 0020h
LXI B,012Ch; 012Ch(B,C)
LXI H,1800h 1800h(H,L)
LXI D,292Ch; (poetna adresa niza + 30010)(D,E)
L1: MOV A,M; M(H,L)(A)
STAX D
INX H; (H,L)+1(H,L)
DCX D; (D,E)1(D,E)
DCX B; (B,C)1(B,C)
MOV A,B; (B)(A)
ORA C; (A)+(C)(A)
JNZ L1
LXI B,012Ch; 012Ch(B,C)
LXI D,292Ch; 292Ch(D,E)
L2: LDAX D
MOV H,A; (A)(H)
L3: DCX D; (D,E)1(D,E)
DCX B; (B,C)1(B,C)
MOV A,B; (B)(A)
ORA C; (A)+(C)(A)
JZ L4
MOV A,H; (H)(A)
XCHG; (D,E)(H,L)
80 Praktikum za auditorne vjebe iz mikroprocesorskih sistema
CMP M; (A)M(H,L)
JC L2
JMP L3
L4: STA 3200h
HLT
KOMENTAR ZADATKA
LXI B,012Ch; postavljamo broja podataka u registar (B).
LXI H,1800h; poetnu adresu niza u memoriji smjetamo u
registarski par (H,L).
LXI D,292Ch; poetnu adresu novog niza smjetamo u registarski
par (D,E).
L1: MOV A,M; uzimamo podatke iz memorije, sa lokacija ije su
adrese u registarskom paru (H,L) i prenosimo u
akumulator.
STAX D; podatak iz akumulatora smjetamo na novu lokaciju
u memoriju ija je adresa u registarskom paru (D,E).
LXI B,012Ch; nakon to smo cjeli niz koji se nalazi u memoriji na
lokacijama poev od adrese 1800h premjestili na
nove lokacije, ovom instrukcijom ponovo u
registarski par (B,C) unosimo podatak koji
predstavlja ukupan broj podataka niza.
LXI D,292Ch; u registarski par (D,E) smjetamo adresu na kojoj e
biti posljednji podatak novoformiranog niza.
L2: LDAX D; u akumulator stavljamo podatak iz memorije ija je
adresa u registarskom paru (D,E).
MOV H,A; podatak koji smo prethodno iz novog niza stavili u
akumulator prenosimo u registar H.
L3: DCX D; kako smo u registarski par (D,E) stavili adresu
posljednjeg podatka, sljedeu lokaciju u (DE)
dobijamo tako to umanjimo za jedan, registarski par
(D,E).
MOV A,H; podatak iz novog niza nalazi se u registru (H) i ovom
instrukcijom isti podatak prenosimo u akumulator.
XCHG; mjenjamo sadraj registarskih parova (D,E) i (H,L)
zbog instrukcije kojom poredimo podatak iz
akumulatora (trenutni koji obraujemo) i podatak
koji se u memoriji nalazi jednu lokaciju prije.
CMP M; poredimo podatak u akumulatoru sa podatkom na
memorijskoj lokaciji ija se adresa nalazi u
registarskom paru (H,L). Ako je (A)<M (H,L)
pojavie se prenos tj. CY=1.
JC L2; ako je CY=1, podatak koji poredimo u akumulatoru
je manji od podatka na memorijskoj lokaciji ija je
adresa u registarskom paru (H,L). Uzimamo novi
podatak iz memorije i stavljamo u akumulator i
poredimo sa trenutno najveim.
JMP L3; na ovu instrukciju idemo ako je CY=0, tj. imamo
trenutno najvei podatak koji je u akumulatoru.
Skokom na L3 iz memorije uzimamo sljedei
podatak za poreenje.
L4: STA 3200h; ovom instrukcijom najvei podatak koji smo
postavili u akumulator, stavljamo na adresu 3200h.
7. Zadaci 81
22. Zadatak
U memoriji mikroraunara nalazi se niz od 300h jednobajtnih podataka, poev od adrese 5500h.
Napisati program koji vri mnoenje svakog podatka sa 12h i rezultate smjeta na iste lokacije.
Rezultati mnoenja su manji od FFh. Poetna adresa programa je 0500h.
Rjeenje:
NAME ZAD22
ORG 0500h
LXI B,0300h; 0300h(B,C)
LXI H,5500h; 5500h(H,L)
L1: MOV A,M; M(H,L)(A)
MOV D,A; (A)(D)
RLC; (2)
RLC; (4)
RLC; (8)
ADD D; (A)+(D)(A), (9)
RLC; (18)
MOV M,A; (A)M(H,L)
INX H; (H,L)+1(H,L)
DCX B; (B,C)1(B,C)
MOV A,B; (B)(A)
ORA C; (A)+(C)(A)
JNZ L1
HLT
KOMENTAR ZADATKA
LXI B,0300h; u registarski par (B,C) smjetamo broja
jednobajtnih podataka.
LXI H,5500h; u registarski par (H,L) smjetamo poetnu adresu
niza.
L1: MOV A,M; sa memorijske lokacije odreenom adresom u
registarskom paru (H,L) prenosimo podatak iz
zadatog niza u akumulator zbog dalje obrade.
MOV D,A; prenosimo podatak koji smo iz memorije smjestili u
akumulator, sada u registar (D), kako bismo u obradi
koja slijedi imali izvornu vrijednost tog podatka.
RLC; rotira podatak u akumulatoru bit poziciju u lijevo, tj.
mnoi isti podatak sa dva. Tri ovakve uzastopne
instrukcije odgovaraju mnoenju podatka u
akumulatoru sa osam.
ADD D; ovom instrukcijom podatak u akumulatoru, koji
odgovara izvornom podatku preneenom iz
memorije pomnoen sa osam, sabiremo sa izvornim
podatkom koji je u registru (D). Ovom instrukcijom
izvorni podatak je pomnoen sa devet.
MOV M,A; pomnoeni podatak sa 18 iz akumulatora prenosimo
u memoriju na istu lokaciju gdje se nalazio prije
obrade.
82 Praktikum za auditorne vjebe iz mikroprocesorskih sistema
23. Zadatak
Napisati program koji broji jedinice jednobajtnog podatka na memorijskoj lokaciji 0900h.
Ukupan broj jedinica poslati na izlazni port sa adresom B0h. Poetna adresa programa je 0020h.
Rjeenje:
NAME ZAD23
ORG 0020h
LXI H,0900h; 0900h(H,L)
MVI B,00h; 00h(B)
MVI D,08h; 08h(D)
MOV A,M; M(H,L)(A)
L1: RAL
JNC L2
INR B; (B)+1(B)
L2: DCR D; (D)1(D)
JNZ L1
MOV A,B; (B)(A)
OUT B0h
HLT
KOMENTAR ZADATKA
LXI H,0900h; u registarski par (H,L) smjetamo adresu memorijske
lokacije na kojoj se nalazi podatak za obradu.
MVI B,00h; registar (B) koristimo kao broja jedinica u podatku
za obradu.
MVI D,08h; registar (D) koristimo kao kontrolni, pomou koga
znamo koji bit podatka ispitujemo.
MOV A,M; u akumulator prenosimo podatak sa memorijske
lokacije ija je adresa u registarskom paru (H,L).
L1: RAL; rotira podatak u akumulatoru ulijevo preko bita
prenosa, tako da sljedeom instrukcijom uslovnog
skoka provjeravamo da li je bit postavljen. Ako je
CY=1, uveavamo registar (B) za jedan, koji
predstavlja broja jedinica u podatku. Ako je CY=0
izvrava se skok na labelu L2.
L2: DCR D; skokom na labelu L2 umanjujemo registar (D) koji u
ovom programu ima zadatak da broji bite u podatku,
umanjujui ga za jedan poslije svakog obraenog
bita podatka kojeg smo zarotirali u bit prenosa.
JNZ L1; ovom instrukcijom provjeravamo da li je sadraj
registra (D) jednak nuli, tj. da li su obraeni svi biti u
zadanom podatku. Ako rezultat nije nula izvrava se
skok na L1
24. Zadatak
U memoriji mikroraunara nalazi se na adresama 0900h i 0905h dva podatka koji predstavljaju
sedmine zarade radnika. Napisati program koji rauna njihovu sumu i rezultat smjeta na
memorijsku lokaciju 1100h, ako dobijena suma ne zadovoljava uslov: b0 = 0; b1 = b2 = b3 = b4 =
b5 = b6 = b7 = X (X = 0 ili 1). Ako zadovoljava izraunati aritmetiku sredinu sedminih zarada
radnika i rezultat poslati na izlazni port sa adresom B0h. Ukupna suma sedminih zarada je
manja od 255 KM. Poetna adresa programa je 0020h.
7. Zadaci 83
Rjeenje:
NAME ZAD24
ORG 0020h
LXI H, 0900h; 0900h(H,L)
LDA 0905h
ADD M; (A)+M(H,L)(A)
RAR
JNC L1; Uslovni skok, b0=0
RAL
STA 1100h; - nije ispunjen uslov
JMP L2
L1: RAL; - ispunjen uslov
RRC; (/2)
OUT B0h
L2: HLT
KOMENTAR ZADATKA
LXI H,0900h; u registarski par (H,L) smjetamo adresu prvog
podatka.
LDA 0905h; u akumulator pohranjujemo drugi podatak sa
memorijske lokacije 0905h.
ADD M; prvi podatak koji se nalazi memorijskoj lokaciji ija
je adresa u registarskom paru (H,L) dodajemo
drugom podatku u akumulatoru. Ukupna suma nalazi
se u akumulatoru.
RAR; ovom instrukcijom bit najnie pozicije u
akumulatoru prenosimo u bit prenosa.
JNC L1; pomou ove instrukcije uslovnog skoka
provjeravamo da li je zadovoljen postavljeni uslov u
ovom zadatku.
RAL; rotiramo sadraj akumulatora ulijevo, dobija se
prvobitno stanje sadraja (stanje prije izvravanja
instrukcije RAR).
STA 1100h; podatak iz akumulatora direktno smjetamo na
adresu 1100h u memoriji.
L1: RAL; ova instrukcija izvrava se ako nije uslov zadatka
zadovoljen i prelazi se na raunanje aritmetike
sredine i rezultat se alje na izlazni port B0h.
25. Zadatak
Neka A predstavlja vektor koga ini 300 elemenata, od kojih je svaki obima 8-bita, a G=1500h i
H=1900h su adrese memorijskih lokacija u kojima se uvaju promjenljive g i h. Napisati
program koji izraunava izraz:
g=h+(A[8]+A[9])6
Poetna adresa vektora A=A[0]=2600h. Rezultat smjestiti na lokaciju G. Zbir A[8]+A[9] kao i
vrijednost g ne premauju 8-bitnu vrijednost. Poetna adresa programa je 0020h.
Rjeenje:
NAME ZAD25
ORG 0020h
LXI H,2608h; 2608h(H,L)
84 Praktikum za auditorne vjebe iz mikroprocesorskih sistema
LDA 2609h
ADD M; (A)+M(H,L)(A)
MOV B,A; (A)(B)
RLC
ADD B; (A)+(B)(A)
RLC
LXI H,1900h; 1900h(H,L)
ADD M; (A)+M(H,L)(A)
STA 1500h
HLT
KOMENTAR ZADATKA
LXI H,2608h; u registarski par (H,L) smjetamo adresu vektora
A(8).
LDA 0905h; akumulator direktno punimo vektorom A(9) koji se
nalazi na adresi 2609h.
ADD M; ovom instrukcijom sabiremo vektore A(8) na
M(H,L) i A(9) u akumulatoru.
MOV B,A; rezultat prethodnog zbira iz akumulatora prenosimo
u registar (B), te instrukcijama koje slijede
realizujemo mnoenje tog podatka sa est.
LXI H,1900h; u registarski par (H,L) smjetamo adresu na kojoj se
nalazi promjenjiva h kako bi je dodali akumulatoru.
Instrukcije koje slijede realizuju sabiranje i
smjetanje rezultata na lokaciju G.
26. Zadatak
Napisati program koji vri sabiranje dva viebajtna podatka proizvoljne duine od 1 do 255
bajta. Adrese najniih bajtova ova dva podatka su 0800h i 0B00h, respektivno. Broj koji
pokazuje duinu podataka koji se sabiru nalazi se na lokaciji 07FFh (podaci su iste duine).
Rezultat smjestiti u memoriju poevi od lokacije 0800h (najnii bajt). Ako je rezultat vei od
rezervisanog memorijskog prostora pozvati program ERROR. U suprotnom zaustaviti
izvravanje programa. Poetna adresa programa je 0020h.
Rjeenje:
NAME ZAD26
ORG 0020h
LXI H, 07FFh; 07FFh(H,L)
MOV B,M; M(H,L)(B)
LXI D,0B00h; 0B00h(D,E)
INX H; (H,L)+1(H,L)
SUB A; (A)=0
STC; CY=1
CMC; CY=0
L1: LDAX D
ADC M; (A)+M(H,L)+CY(A)
MOV M,A; (A)M(H,L)
INX H; (H,L)+1(H,L)
INX D; (D,E)+1(D,E)
DCR B; (B)1(B)
JNZ L1
7. Zadaci 85
27. Zadatak
Dva dvocifrena BCD podatka su u memoriji na lokacijama 0B00h i 0B01h. Napii program koji
vri njihovo oduzimanje i razliku smjeta na adresu 0B02h. Poetna adresa programa je 0020h.
Rjeenje:
NAME ZAD27
ORG 0020h
LXI H,0B00h; 0B00h(H,L)
MOV A,M; M(H,L)(A)
INX H; (H,L)+1(H,L)
MOV B,M; M(H,L)(B)
SUB B; (A)(B)(A)
DAA
STA 0B02h
HLT
KOMENTAR ZADATKA
LXI H,0B00h; u registarski par (H,L) smjetamo adresu prvog BCD
podatka.
MOV A,M; prenosimo prvi BCD podatak u akumulator.
INX H; Sadraj registarskog para (H,L) uveavamo za jedan,
tj. smjetamo adresu drugog BCD podatka.
MOV B,M; prenosimo drugi BCD podatak u registar (B).
SUB B; ovom instrukcijom realizujemo oduzimanje podatka
u registru (B) od podatka u akumulatoru.
DAA; sadraj akumulatora podeavamo u BCD obliku, tj.
rezultat oduzimanja.
86 Praktikum za auditorne vjebe iz mikroprocesorskih sistema
28. Zadatak
U memoriji mikroraunara je niz podataka poev od adrese 0400h, podatak o broju podataka
nalazi se na adresi 0A00h. Meu datim podacima pronai najvei i smjestiti ga na lokaciju
0C00h. Poetna adresa programa je 0020h.
Rjeenje:
NAME ZAD28
ORG 0020h
LXI D,0400h; 0400h(D,E)
LXI H,0A00h; 0A00h(H,L)
MOV B,M; M(H,L)(B)
XCHG; (D,E)(H,L)
L1: MOV A,M; M(H,L)(A)
STA 0C00h
L2: DCR B; (B)1(B)
JZ L3
INX H; (H,L)+1(H,L)
CMP M; (A)M(H,L)
JC L1
JMP L2
L3: HLT
KOMENTAR ZADATKA
LXI D,0B00h; u registarski par (D,E) smjetamo poetnu adresu
niza podataka.
LXI H,0A00h; u registarski par (H,L) smjetamo adresu na kojoj se
nalazi podatak, tj. broj elemenata niza.
MOV B,M; u registar (B) prenosimo informaciju o broju
podataka za obradu.
XCHG; sadraj registarskih parova (H,L) i (D,E) mjenjaju se
meusobno, jer nam treba podatak u registarskom
paru (D,E) koji odreuje poetnu adresu niza
podataka u memoriji. Ovom instrukcijom poetna
adresa je u registarskom paru (H,L) i koristimo
M(H,L).
L1: MOV A,M; ovom instrukcijom u akumulator prenosimo podatke
iz niza ije su adrese u registarskom paru (H,L).
STA 0C00h; pohranjujemo tj. smjetamo najvei podatak u
pretraenom nizu direktno na adresu 0C00h.
L2: DCR B; broja elemenata niza umanjujemo nakon svakog
obraenog podatka, tj. provjeravamo da li je broja
na nuli. Ako nije uzimamo sljedei podatak iz niza i
poredimo ga sa trenutno najveim podatkom i ako je
CY=1 vei je od podatka u akumulatoru i imamo
skok na L1, suprotno uzimamo novi podatak iz niza
odlazei na L2.
7. Zadaci 87
29. Zadatak
Napisati program koji vri brisanje 50 uzastopnih memorijskih lokacija poev od lokacije
0A00h, potom sa ulaznog porta uitati niz od 50 jednobajtnih podataka. Adresa ulaznog potra je
A0h. Svaki podatak logiki pomnoi sa 35 a od dobijenih rezultata formirati niz poev od
memorijske lokacije 0A00h. Poetna adresa programa je 0020h.
Rjeenje:
NAME ZAD29
ORG 0020h
LXI H,0A00h; 0A00h(H,L)
LXI D,0A00h; 0A00h(D,E)
MVI B,32h; 32h(B)
SUB A (A)=0
L1: MOV M,A; (A)M(H,L)
INX H; (H,L)+1(H,L)
DCR B; (B)1(B)
JNZ L1
MVI B,32h; 32h(B)
L2: IN A0h
ANI 23h; (A)23h(A)
STAX D
INX D; (D,E)+1(D,E)
DCR B; (B)1(B)
JNZ L2
HLT
KOMENTAR ZADATKA
LXI H,0A00h; u registarski par (H,L) smjetamo poetnu adresu
memorijske lokacije od koje vrimo brisanje.
LXI D,0A00h; u registarski par (D,E) smjetamo adresu od koje
formiramo novi od 50 jednobajtnih podataka.
MVI B,32h; u registar (B) prenosimo 32h=5010.
L1: MOV M,A; ovom instrukcijom briemo memorijske lokacije ije
su adrese u registarskom paru (H,L), jer na te
lokacije prenosimo sadraj akumulatora koji je
prethodnom instrukcijom ist.
JNZ L1; imamo skok na L1 sve dok ne obriemo svih 50
lokacija.
L2: IN A0h; uitavamo podatke sa ulaznog porta u akumulator.
ANI 23h; uitani podatak koji se nalazi u akumulatoru logiki
mnoimo sa 23h=3510.
STAX D; rezultat mnoenja smjetamo na lokaciju ija je
adresa u registarskom paru (D,E). Instrukcijama koje
slijede poslije ove, postavljamo sljedeu lokaciju i
provjeravamo da li su obraeni svi podaci, ako nisu
odlazimo na labelu L2.
88 Praktikum za auditorne vjebe iz mikroprocesorskih sistema
30. Zadatak
U memoriji mikroprocesora Intel 8085 na lokacijama sa adresama 0900h i 0905h nalaze se dva
binarna podatka. Pomnoi ih i rezultat smjesti na lokaciju sa adresama 0902h (nii bajt
proizvoda). Poetna adresa programa je 0080h.
Rjeenje:
NAME ZAD30
ORG 0080h
LXI H,0900h; 0900h(H,L)
MOV B,M; M(H,L)(B)
LXI H,0905h; 0905h(H,L)
MOV A,M; M(H,L)(A)
MOV C,A; (A)(C)
MVI E,00h; 00h(E)
STC; CY=1
CMC; CY=0
L1: MOV A,E; (E)(A)
ADC C; (A)+(C)+CY(A)
MOV E,A; (A)(E)
JC L3
L2: DCR B; (B)1(B)
JNZ L1
XCHG; (D,E)(H,L)
SHLD 0902h
END
L3: INR D; (D)+1(D)
JMP L2
NAPOMENA
Drugi broj sabiramo sa samim sobom onoliko puta, u zavisnosti od prvog broja. Rezultat
mnoenja smjetamo u registarski par (D,E), tako da u registar (E) stavljamo rezultat, a u
registar (D) bit prenosa.
KOMENTAR ZADATKA
LXI H,0900h; u registarski par (H,L) postavljamo adresu prvog
podatka.
MOV B,M; u registar (B) prenosimo podatak sa memorijske
lokacije M(H,L), tj. prvi broj. Kao to smo rekli u
napomeni prvi broj u registru (B) koristiemo kao
broja jer drugi broj sabiremo sa samim sobom
onoliko puta kolika je vrijednost ovog broja.
LXI H,0905h; u registarski par (H,L) postavljamo adresu drugog
podatka.
MOV A,M; u akumulator prenosimo podatak sa memorijske
lokacije M(H,L), tj. drugi broj.
MOV C,A; drugi broj prenosimo u registar (C).
MVI E,00h; registar (E) punimo sa 00h i on e nam sluiti za
smjetanje rezultata.
L1: MOV A,E; prenosimo u akumulator trenutni rezultat iz registra
(E).
7. Zadaci 89
31. Zadatak
Napisati program koji vri preuzimanje podataka sa ulaznog porta ija je adresa A0h, i formira
niz u memoriji od preuzetih podataka. Poetna adresa niza podataka u memoriji treba biti 0800h.
Sa preuzimanjem podataka sa ulaznog porta treba prestati kada se pojavi podatak FFh. Program
treba da poinje od adrese 0B00h. Podatak o broju elemenata niza smjestiti na adresu1000h u
memoriji.
Rjeenje:
NAME ZAD31
ORG 0B00H
LXI H, 0800H; 0800H(H,L)
MVI C,00H; 00H(C)
L1: IN A0H;
MOV M, A; M(H,L) A
INX H; (H,L)+1(H,L)
INR C; (C) +1(C)
CPI FFH; (A)-FFH(A)
JNZ L1;
HLT;
END;
KOMENTAR ZADATKA
LXI H, 0800H; registarski par (H,L) punimo neposredno sa 0800h,
to predstavlja poetnu adresu prvog podatka.
MVI C, 00H; registar (C) koristimo kao broja podataka koji
dolaze na port A0H
90 Praktikum za auditorne vjebe iz mikroprocesorskih sistema
32. Zadatak
Data su dva pakovana etvorocifrena NBCD broja X i Y. Ova dva broja se nalaze na
memorijskim lokacijama ije su adrese 0800h i 0810h (nii bajt podatka), respektivno. Napisati
program koji sabira ova dva broja, a rezultat smjeta na mjesto podatka X.
Rjeenje:
NAME ZAD32
ORG 0000H
LXI H, 0800H; 0800H(H,L)
LXI D, 0810H; 0810H(D,E)
LDAX D;
ADD M; A+M(H,L)A
DAA;
MOV M, A; AM(H,L)
INX H; (H,L)+1(H,L)
INX D; (D,E)+1(D,E)
LDAX D;
ADC M;
DAA;
MOV M,A; AM(H,L)
HLT;
END;
KOMENTAR ZADATKA
LXI H, 0800H; registarski par (H,L) punimo neposredno sa 0800h,
to predstavlja adresu nieg bajta podatka za broj X
LXI D, 0810H; registarski par (D,E) punimo neposredno sa 0810h,
to predstavlja adresu nieg bajta podatka za broj Y
LDAX D; uitavamo nii bajt Y koji je odreen registarskim
parom (D,E) u Akumulator
ADD M; dodajemo sadraju Akumulatora nii bajt X koji je
odreen registarskim parom (H,L)
DAA; vrimo decimalno podeavanje sadraja
Akumulatora
MOV M, A; smjetamo rezultat na mjesto podatka X
7. Zadaci 91
33. Zadatak
Nai najvei broj u nizu podataka koji je smjeten poevi od adrese 0800h. Podaci su
predstavljeni kao cjelobrojni, neoznaeni brojevi duine jednog bajta. Podatak o broju elemenata
ovog niza nalazi se na memorijskoj lokaciji ija je adresa 0A00h. Program treba da poinje od
adrese 0B00h.
Rjeenje:
NAME ZAD33
ORG 0B00H
LXI H, 0800H; 0800H(H,L)
LDA 0A00H; 0A00H(A)
MOV C, A; (A) (C)
L1: MOV A, M; M(H,L) (A)
L2: DCR C; (C)-1(C)
JZ L3;
INX H; (H,L)+1(H,L)
CMP M; (A)-M(H,L)
JC L1;
JMP L2;
L3: NOP;
HLT;
END;
KOMENTAR ZADATKA
LXI H, 0800H; registarski par (H,L) punimo neposredno sa 0800h,
to predstavlja poetnu adresa od koje su smjeteni
elementi niza
LDA 0A00H; smjetamo u Akulumator podatak o broju elemenata
niza,
MOV C, A; zatim taj podatak kopiramo u registar (C) koji nam
slui kao broja
MOV A, M; akumulator nam slui za uvanje maksimalnog
elementa niza
DCR C; umanjujemo broja
JZ L3; ukoliko je nula zavravamo program
INX H; ukoliko broja nije nula prelazimo na sljedei
element niza
CMP M; poredi se podatak na memorijskoj lokaciji odreenoj
registarskim parom (H,L) sa sadrajem akumulatora
u kome je trenutno najvei broj.
JC L1; ukoliko je podatak na adresi M(H,L) vei od (A)
pojavie se prenos i taj podataka postavljamo ka
maksimalni elemenat
JMP L2; ako podatak nije veci prelazimo na sledeci elemenat
niza.
92 Praktikum za auditorne vjebe iz mikroprocesorskih sistema
34. Zadatak
Niz od 300 ASCII podataka smjeten je u memoriji poevi od adrese 0200h. Napisati program
koji iz ovog niza izdvaja cifre, a zatim ih konvertuje u binarni oblik i alje na izlazni port sa
adresom 20h. Kodovi za cifre u ASCII kodu su u opsegu 30h 39h. Program treba da poinje od
adrese 1000h.
Rjeenje:
NAME ZAD34
ORG 1000H
LXI H, 0200H; 0200H(H,L)
LXI B, 012CH; 012CH(B,C)
L0: MOV A, M; M(H,L) (A)
CPI 30H; (A)30H(A)
JC L1;
CPI 40H; (A)40H(A)
JNC L1;
SUI 30H; (A)-30H(A)
OUT 20H; (A) 20H
L1: INX H; (H,L)+1(H,L)
DCX B; (B,C) (B,C)
MOV A,C; (C) (A)
ORA B; (A)+(B) (A)
JNZ L0;
HLT;
END;
KOMENTAR ZADATKA
LXI H, 0200H; registarski par (H,L) punimo neposredno sa 0200h,
to predstavlja poetnu adresa od koje su smjeteni
elementi niza
LXI B, 012CH; registarski par (B,C) punimo neposredno sa 012Ch,
inicijalizujemo broja tj registarski par (B,C)
koristiemo kaok broja
MOV A, M; prebacujemo elemenat niza ija je adrsa u memoriji
odreena registarskim parom (H,L) u Akumulator
CPI 30H; ispitujemo da li je element manji od 30H
JC L1; ukoliko je elemenat manji preskacemo taj elemenat
CPI 40H; ispistujemo da li je elemenat veci od je vei od 39H
JNC L1; ako je vei od 39H preskaemo ga jer nije cifra
SUI 30H; ukoliko element jeste cifra pretvaramo ga u binarni
oblik
OUT 20H; aljemo elemenat niza na izlazni port sa adresom 20H
INX H; poveavamo registarski par (H,L) za 1 i prelazimo
na sljedei element niza u memoriji
DCX B; registarski par (B,C) smanjujemo za 1, tj broja
smanjujemo za jedan
JNZ L0; ispitujemo da li je zadnji elemenat niza ako jeste
zavravamo program ako nije prelazimo na sledei
elemnat
7. Zadaci 93
35. Zadatak
U memoriji mikroraunara, poevi od lokacije 1000h, nalazi se niz od 100 dvobajtnih podataka.
Napisati program koji u zadanom nizu pronalazi elemente koji imaju osobinu da im je vii bajt
dva puta vei od nieg bajta. Takve elemente smjestiti u memoriju poevi od lokacije2000h, a
podatak o veliini novog niza upisati na lokaciju 3000h. Pretpostaviti da se na nioj adresi nalazi
vii bajt podatka.
Rjeenje:
NAME ZAD35
ORG 0000H
LXI H, 1000H; 1000H(H,L)
LXI D, 2000H; 2000H(D,E)
MVI C, 64H; 64H(C)
MVI B, 00H; 00H(B)
L1: MOV A, M; M(H,L) (A)
STC; CY=1
CMC; CY=0
RAR;
INX H; (H,L)+1 (H,L)
CMP M; (A)-M(H,L)
JNZ L0;
DCX H; (H,L)-1 (H,L)
MOV A, M; M(H,L) (A)
STAX D;
INX H; (H,L)+1 (H,L)
INX D; (D,E)+1 (D,E)
MOV A, M; M(H,L) (A)
STAX D;
INR B; (B)+1(B)
INX D; (D,E)+1 (D,E)
L0: INX H; (H,L)+1 (H,L)
DCR C; (C)-1(C)
JNZ L1;
MOV A, B; (B)(A)
STA 3000H;
HLT;
END;
KOMENTAR ZADATKA
LXI H, 1000H; registarski par (H,L) punimo neposredno sa 1000h,
to predstavlja poetnu adresa od koje su smjeteni
elementi niza
LXI D, 2000H; registarski par (D,E) punimo neposredno sa 2000h,
to predstavlja poetnu adresa niza koji treba da
formiramo
MVI C, 64H; registar (C) punimo sa 64h(100) to predstavlja broj
elemenata, pa registar (C) koristimo kao broja
MVI B, 00H; registar (B) punio sa 00h inicijalizacija brojaa
elemenata novoformiranog niza
MOV A, M; kopiramo vii bajt podatka u akumulator
94 Praktikum za auditorne vjebe iz mikroprocesorskih sistema
36. Zadatak
Zadan je niz od 100 elemenata koji se nalaze u memoriji poevi od adrese 0900h. Podaci su
predstavljeni kao cijeli brojevi bez znaka. Napisati program koji izraunava vrijednost izraza
MAX/2, gdje je MAX najvei broj u nizu. Rezultat treba poslati na izlazni port sa adresom 23h.
Program treba da poinje od adrese 0B00h.
Rjeenje:
NAME ZAD36
ORG 0B00H
LXI H, 0900H; 0900H(H,L)
MVI C, 64H; 64H(C)
L0: MOV A, M; M(H,L) (A)
L1: DCR C; (C)-1(C)
JZ L3;
INX H; (H,L)+1(H,L)
CMP M; (A)-M(H,L)
JC L0;
JMP L1;
L3: STC; CY=1
CMC; CY=0
RAR;
OUT 23H; (A) 20H
HLT;
END;
KOMENTAR ZADATKA
LXI H, 0900H; registarski par (H,L) punimo neposredno sa
0900h,to predstavlja poetna adresa niza
7. Zadaci 95
37. Zadatak
U registarskom paru (B, C) mikroprocesora 8085 smjeteni su elementi x1 i y1, a u paru (D, E)
elementi x2 i y2. Pri tome, (x1, y1) predstavlja koordinatu donje lijeve, a (x2, y2) koordinatugornje
desne take jednog pravougaonika. Napisati program koji izraunava povrinu (P)
pravougaonika, smatrajui da su stranice pravougaonika paralelne sa koordinatnim
sama.Povrina pravougaonika je jednaka proizvodu duina stranica tog pravougaonika, tj.
P=ab. Duine stranica su odreene koordinatama pravougaonika, a=x2 x1 i b=y2 y1. Ovo je
prikazano na slici.1.
Rjeenje:
NAME ZAD37
ORG 0000H
MOV A, D; (D) (A)
SUB B; (A)-(B) (A)
MOV B, A; (A) (B)
MOV A, E; (E) (A)
SUB C; (A)-(C) (A)
MOV D, A; (A) (D)
MVI C, 00H; 00H(C)
MVI A, 00H; 00H(A)
STC; CY=1
CMC; CY=0
L0: ADD D; (A)+(D) (A)
JNC L1;
INR C; (C)+1(C)
L1: DCR B; (B)-1(B)
JNZ L0;
MOV B, A; (A) (B)
HLT;
END;
KOMENTAR ZADATKA
MOV A, D;
SUB B; izraunavamo duinu stranice a
MOV B, A; i rezultat smjetamo u registar B
MOV A, E;
SUB C; izraunavamo duinu stranice b
96 Praktikum za auditorne vjebe iz mikroprocesorskih sistema
ADD D;
JNC L1; formiramo petlju koja obavlja mnoenje dva 8-bitna
INR C; broja pri emu uzimamo u obzir eventualni prenos
DCR B;
JNZ L0;
38. Zadatak
Dat je niz od 100 cjelobrojnih neoznaenih brojeva koji se nalaze u memoriji poevi od adrese
0800h. Napisati program koji iz tog niza izdvaja parne brojeve i smjeta ih u novi niz u memoriji
poevi od adrese 0B00h. Podatak o veliini novog niza treba poslati na izlazni port sa adresom
33h. Program treba da poinje od adrese 0100h. Kod parnih brojeva bit na najnioj poziciji je
jednak 0, dok je kod neparnih jednak 1. Ispitivanjem najnieg bita elemenata niza moemo da
utvrdimo da li se radi o parnom ili neparnom broju.Ispitivanje vrijednosti ovog bita moemo da
vrimo rotacijom preko bita prenosa (RAR),
Rjeenje:
NAME ZAD38
ORG 0100H
LXI H, 0800H; 0800H(H,L)
LXI D, 0B00H; 0B00H(D,E)
MVI C, 64H; 64H(C)
MVI B, 00H; 00H(C)
L0: MOV A, M; M(H,L) (A)
STC; CY=1
CMC; CY=0
RAR;
JC L1;
RAL;
STAX D;
INR B; (B)+1(B)
INX D; (D,E)+1(D,E)
L1: INX H; (H,L)+1(H,L)
DCR C; (C)-1(C)
JNZ L0;
MOV A, B; (B) (A)
OUT 33H;
HLT;
END;
7. Zadaci 97
KOMENTAR ZADATKA
LXI H, 0800H; registarski par (H,L) punimo neposredno sa
0800h,to predstavlja poetnu adresa niza
LXI D, 0B00H; registarski par (D,E) punimo neposredno sa
0B00h,to predstavlja poetna adresa niza kojeg
trabamo da formiramo
MVI C, 64H; inicijalizacija brojaa elemenata zadanog niza tj
registar (C) koristimo kao broja
MVI B, 00H; inicijalizacija brojaa elemenata novog niza tj
registar (B) koristimo kao broja elemenata novog
niza
MOV A, M; kopiramo elemenat niza u Akumulator
STC; resetujemo bit prenosa
CMC;
RAR; izvrimo rotiranje preko bita prenosa tj ispitujemo da
li je broj paran ili neparan
JC L1; ako je broj neparan prelazimo na sledei elemenat
niza
RAL; ako je paran vraamo mu stvarnu vrijednost
STAX D; smjetamo podatak u novi niz ija je adresa odreena
registarskim parom (D,E)
INR B; inkrementiramo broja elemenata novog niza
INX D; prelazimo na novu lokaciju novog niza
INX H; prelazimo na sljedei element zadanog niza
DCR C; umanjujemo broja elemenata zadanog niza
JNZ L0; ukoliko broja nije nula ispitujemo sljedei element
MOV A, B; u Akumulator prebacujemo broj elemenata novog
niza
OUT 33H; i taj podatak aljemo na port sa adresom 33H
HLT; zavravamo program
39. Zadatak
U memoriji mikroraunara nalazi se niz od 400 binarnih podataka poev od adrese 0200h.
Napisati program koji modifikuje podatke po principu B0-B7, B1-B6, B2-B5, B3-B4, a zatim ih
smjeta na nove lokacije poev od adrese 0500h.
Rjeenje:
NAME ZAD39
ORG 0020h
LXI D, 0190h; 0190h(D,E)
LXI H, 0200h; 0200h(H,L)
L1: MOV B,M; M(H,L) (B)
MOV A,M; M(H,L) (A)
ANI AAh; (A)AAh
RRC;
MOV C,A; (A)(C)
MOV A,B; (B)(A)
ANI 55h; (A)55h
RLC;
ADD C; (A)+(C) (A)
MOV B,A; (A) (B)
98 Praktikum za auditorne vjebe iz mikroprocesorskih sistema
8.1. Izvriti operacije sabiranja i oduzimanja decimalnih brojeva u binarnom brojnom sistemu:
a) x+y x=52 y=23
b) x-y x=83 y=35
Rezultate provjeriti u decimalnom brojnom sistemu.
8.4. Koji su decimalni brojevi predstavljeni datim brojevima u binarnom brojnom sistemu:
a) 111010011
b) 111.01101
c) 10.0011
102 Praktikum za auditorne vjebe iz mikroprocesorskih sistema
8.5. Koji su decimalni brojevi predstavljeni datim brojevima u oktalnom brojnom sistemu:
a) 12345
b) 0.246
c) 24.135
8.6. Koji su decimalni brojevi predstavljeni datim brojevima u oktalnom brojnom sistemu:
a) ABCDE
b) 0.BD8
c) 2A4.C8
8. Predispitni test 103
8.10. Prevesti zadate brojeve iz brojnog sistema sa osnovom x u brojni sistem sa osnovom y:
a) 10110110011.11011 x=2 y=8
b) 10001100111.101011 x=2 y=16
c) 643.742 x=8 y=2
d) AB3.CD2 x=16 y=2
e) 4DA.62 x=16 y=82
8. Predispitni test 107
8.12. Izraziti brojne vrijednosti 135 i -10 kao 8-bitne binarne brojeve u obliku drugog
(potpunog) komplementa. Koristei dobijene rezultate prikazati razliku 135-10 u obliku 8-bitnog
zapisa.
108 Praktikum za auditorne vjebe iz mikroprocesorskih sistema
112
A. Prilog 113
113
114 Praktikum za auditorne vjebe iz mikroprocesorskih sistema
114
LITERATURA
[1] M. Stojev, RISC, CISC i DSP procesori, Elektronski fakultet Ni, 1997.
[2] M. Stojev, Savremeni 16-bitni mikroprocesori II, Nauna knjiga, Beograd,
august 1999.
[3] M. Stojev, Arhitekture i programiranje mikroraunarskih sistema zasnovanih
na familiji procesora 80x86, Elektronski fakultet Ni, 1999.
[4] M. Stoji, Digitalni sistemi upravljanja, ETF Beograd, novembar 2001.
[5] V. Malbaa, Mikroprocesorska elektronika, predavanja, FTN Novi Sad,
novembar 2001.
[6] Z. Bundalo, Arhitektura raunara, predavanja, VT Doboj, februar 2000.
[7] V. Manojlovi, Osnovi raunarske tehnike, Akademska misao, Beograd, 2003.
[8] Z. Bundalo, Mikroraunarski sistemi, predavanja, VT Doboj, februar 2000.
[9] http://www.elfak.ni.ac.rs/phptest/new/index.php
[10] http://www.microe.com/pdf/easy pic5_manual.pdf
115