SEMINARSKI RAD TEMA: Razlika između mikroprocesora 8085 i mikroprocesora 8086
ppaallee@hotmail.com
SADRŽAJ: Sadržaj..............................................................................................................2 Uvod.................................................................................................................3 1. Istorija mikroprocesora..........................................................................4 2. Hardverska struktura mikroprocesora....................................................5 2.1 Hardverska organizacija mikroprocesora intel 8085......7 2.2 Hardverska organizacija mikroprocesora intel 8086..... 9 3. Programski model mikroprocesora.......................................................11 3.1 Programski model mikroprocesora intel 8085..............12 3.2 Programski model mikroprocesora intel 8086..............14 4. Registri mikroprocesora.......................................................................15 4.1.1. Registar instrukcija............................................15 4.1.2. Privremeni registar............................................15 4.1.3. Akumulator........................................................15 4.1.4. Adresni registri..................................................16 4.1.5. Blok registara opšte namjene............................17 4.1.6. Registri adresa...................................................18 4.1.7. Registri podataka...............................................18 4.1.8. Registar bita stanja............................................18 4.2. Registri mikroprocesora intel 8085..............................20 4.3. Registri mikroprocesora intel 8086..............................23 5. Instrukcije mikroprocesora........................................................... ........24 5.1. Instrukcije mikroprocesora intel 8085...........................24 5.1.1. Tipovi instrukcija mikroprocesora intel 8085...24 5.2. Insrukcije mikroprocesora intel 8086........................... 27 5.2.1. Nove instrukcije za mikroprocesor intel 8086..29 6. Načini adresiranja kod mikroprocesora.................................................31 6.1. Načini adresiranja kod mikroprocesora intel 8085......31 6.2. Načini adresiranja kod mikroprocesora intel 8086......32 Zaključak................................................................................................... .....34 Literatura.........................................................................................................35
2
UVOD Zadatak ovog seminarskog rada jeste da uoči i prestavi razliku između intelovih mikroprocesora 8085 i 8086. Mikroprocesori su univerzalni programski elementi, od kojih je moguća konstrukcija mikroračunara, odnosno mikroprocesorskih sistema, sa strukturom i algoritmom klesičnih računara. Mikroprocesor je glavni upravljački sklop računara. To je silikonski čip koji je u stanju da provodi i izvodi instrukcije. Mikroprocesore dijelimo prema dužini njihovih regirtara (to je jedna od podjela) pa tako jedna od glavnih razlika između mikroprocesora 8085 i mikroprocesora 8086 jeste dužina registara. Mikroprocesor 8085 je 8-bitni procesor a mikroprocesor 8086 je 16-bitni procesor, ali o tome čemo kasnije. Što se toče primjene mikroračunara (a samim tim i mikroprocesira 8085 i 8086) možemo je podjeliti u tri djela: • periferne jedinice • personalni računari • snažni računarski sistemi sa više procesora. Da bi uočili razliku između ova dva pricesora moramo iz posmatrati u više segmenta i porediti ih u svakom od tih segmenata.
3
1. ISTORIJA MIKROPROCESORA Istorija procesora počinje 1971. godine, kada je mala i nepoznata kompanija, Intel, prvi put kombinovala više tranzistora da bi napravila jedinicu centralnog procesora (CPU -central processing unit) - čip nazvan Intel 4004. Međutim, to je bilo 8 godina pre nego što je prvi PC konstruisan. PC-ji su projektovani sa više generacija procesora. Intel nije jedina kompanija koja proizvodi procesore, ali je tržišni lider. Sledeća tabela prikazuje generacije procesora. U početku je dominirao Intel, ali od 5-te generacije pojavljuju se alternative. PC
CPU
Godina
Broj tranzistora u čipu
I generacija
8086 i 8088
1978 - 81
29.000
II generacija
80286
1984
134.000
III generacija
80386DX i 80386SX
1987 - 88
275.000
IV generacija
80486SX, 80486DX, 80486DX2 i 80486DX4
1990 - 92
1.200.000
V generacija
Pentium Cyrix 6X86 AMD K5 IDT WinChip C6
1993 - 95 1996 1996 1997
3.100.000 3.100.000 3.100.000 3.500.000
Poboljšana V generacija
Pentium MMX IBM/Cyrix 6X86MX IDT WinChip2 3D
1997 1997 1998
4.500.000 6.000.000 6.000.000
VI generacija
Pentium Pro AMD K6 Pentium II AMD K6-2
1995 1997 1997 1998
5.500.000 8.800.000 7.500.000 9.300.000
VII generacija
AMD Athlon
1999/2000
22.000.000
Slika 1. Tabela prikaza procesora po generacijama
1964.godine su se pojavili prvi sklopovi malog stepena integracije SSI. 1968.godine pojavljuje se LSI. Tada se pojavio i prvi intelov mp 4004. On je kalkulatorskog tipa. 1972.godine se pojavio mikroprocesor opšteg tipa INTEL 8008(osmobitni). 1973-1977.godine se pojavio INEL 8080 i 8085. 1978-1980.godine pojavljuje se 16-bitni procesor INTEL 8086 i prvi mikrokontroleri. Od 1980.godine pojavljuju se 32-bitni mikroprocesori.
4
2. HARDVERSKA STRUKTURA MIKROPROCESORA Pri postupku projektovanja uvjek se polazi od početnih zahtjeva. Drugi korak je izbor načina realizacije (mikroprocesorska organizacija ili ne). Ako mikroprocesor ne zadovoljavatraženu brzinu rada onda koristimo standardna digitalna kola. Sve to utiče na hardversku struktuta mikroprocesora i samog izbora mikroprocesora. Da bismo objasnili kako procesor radi pogledajmo kako on izgleda iznutra. U principu procesor sadrži skup registara koji predstavljaju njegovu internu memoriju. Slika 1 prikazuje dva takva registra. MAR (Memory Address Register) se naziva adresni registar memorije a MDR (Memory Data Register) se naziva registar podataka. Svaki bit adresnog registra vezuje se za adresnu sabirnicu. Svaki bit registra podataka vezuje se za sabirnicu podataka. Preko ova dva registra procesor "vidi" svet oko sebe. Programeru ovi registri nisu dostupni. Slika 2 nešto detaljnije prikazuje unutrašnju "arhitekturu" procesora. R0, R1 ... nazivaju se internim registrima opšte namene i njih programer može da koristi. Ovdje je rječ o programiranju na bazi mašinskog jezika kao osnovnog jezika to jes na prvom nivou. Dakle, u navedene registre smeštaju se podaci uzeti iz memorije. Ovi registri postoje bar iz dva razloga. Prvi je sporost memorije. Naime, svako obraćanje memoriji dovodi do gubitka procesorskog vremena, jer ona nije u stanju da prati brze zahteve procesora, pa on mora da je čeka. Obično se program piše tako da se podaci prvo prikupe iz memorije a zatim obrađuju u registrima. Drugi razlog postojanja registara je njihovo korišćenje kao internih registara, brojača itd.
Slika 2. Registri za komunikaciju sa vanjskim svjetom kod mikroprocesora.
5
Slika 3. Blok šema miroprocesora.
Pogledajmo sada šta se događa u trenutku uključivanja računara. U registar PC (Program Counter - programski brojač) upisuje se 0. Kako mu i ime govori, PC sadrži adresu instrukcije koju treba izvršiti. Sadržaj registra PC prebacuje se u MAR i adresa izlazi na adresnu magistralu. Generiše se signal za učitavanje iz memorije, podatak preko magistrale podataka dolazi u MDR. Sledeći korak je kopiranje njegovog sadržaja u IR (Instruction Register instrukcijski registar). Ovim se završava prihvat instrukcije iz memorije ili takozvana fetch faza. Sledi faza izvršavanja instrukcije. Prvo se analizira sadržaj registra IR, da bi se prepoznalo o kojoj je instrukciji reč. Recimo da se u memoriji nalazio kod instrukcije ADD R0,R1. To bi značilo da treba sabrati sadržaje registara R0 i R1 i rezultat smestiti u registar R0. Sadržaji registara R0 i R1 idu u ALU, aritmetičko-logičku jedinicu, gde se izvršava sabiranje. Rezultat se smešta u R0, sadržaj registra PC se povećava za 1 i ciklus se ponavlja. Ceo tok je pod kontrolom signala iz upravljačke jedinice. Na kraju, pogledajmo sliku 3 koja prikazuje šta se događa u ALU jedinici. Pretpostavili smo da na njene ulaze dolaze podaci iz R0 i R1. U blokovima označenim sa + , -, AND, OR i XOR vrše se operacije na koje ukazuju navedeni operatori. Jedan od četiri moguća rezultata, koji će se preneti u R0, bira se upravljačkim signalom.
6
Slika 4. Struktuta aritmetičko logičke jedinice kod mikroprocesora.
2.1 HARDVERSKA ORGANIZACIJA MIKROPROCESORA intel 8085 Intel 8085 je 8-bitni mikroprocesos proizveden u Intelu sredinom 1970-ih. Kompatibilan je sa 8080 i zahtevao je manje eksternog hardvera što je omogućavalo izgradnju jednostavnijih i jeftinijih računarskih sistema. Zahtevao je samo jedan napon od +5V za razliku od 8080 koji je zahtevao 3 vrste napona: +5V, -5V i +12V. Korišćen je i kao mikrokontroler zbog osobine da nije zahtevao puno dodatnog hardvera. Arhitektura: • •
•
Address Bus ( adresna magistrala ) - širine 16 bita = mogućnost adresiranja do 64KB memorije. Data Bus - ( magistrala za podatke ) - širine 8 bita = mogućnost pristupa podacima širine 8 bita u jednom koraku, odavde potiče naziv 8-bitni mikroprocesor. Control bus ( kontrolna magistrala ) - prenosi kontrolne (upravljačke) signale 7
8085 može da pristupi 65.536 memoriskim 8-bitnim lokacijama (64KB) i ima odvojeni adresni prostor od 256 8-bitnih memoriskih lokacija za ulazno/izlazne operacije (I/O ports). Takođe sadrži i registre A, B, C, D, E, H, L - univerzalni, 16-bitne Program Counter (PC) i Stack Pointer (SP), i 8-bitni fleg registar F za tri maskirajuća prekida (RTS), jednim nemaskirajućim (TRAP) i jednim spoljašnjim prekidom (INTR).
Slika 5. Fizički izgled mikroprocesora 8085
Izveden je u čipu dimenzija 6 * 6 mm i smješten u kučištu s 40 vanjskih stezaljki. Napaja se istosmjernim naponom od +5 V. Unutarnju arhitekturu mikroprocesora Intel 8085 prikazuje slika 6. (blok šema mikroprocesora 8086). Mikroprocesor je sastavljen od aritmetičko-logičke jedinice (ALU- Arithmetic-Logic Unit), upravljačke jedinice (CUControl Unit), registra instrukcija (IR- Instruction Register) i slijedećih registara kojima se može pristupiti naredbama strojnog jezika: 16-bitnog programskog brojila (PC - program counter), 16-bitnog kazala složnika (SP - stack pointer), 8-bitnog registra stanja programa (PSW - program status word), šest 8-bitnih registara opće namjene (B, C, D, E, H i L) i 8bitnog registra akumulatora (A - accumulator). Prethodno navedeni registri predstavljaju i programski model mikroprocesora 8085.
8
Slika 6. Blok šema mikroprocesora intel 8086.
2.2 HARDVERSKA ORGANIZACIJA MIKROPROCESORA intel 8086 Intel 8086 predstavlja 16-bitni mikroprocesor realizovan u jednom integrisanom sklopu sa 40 nožica (pinova). Na slici 4 prikazane su osnovne linije sabirnica (magistrala) mikroprocesora. Odmah se zapaža da je radi uštede broja spoljnih nožica izvršeno tzv. multipleksiranje sabirnice podataka i donjih 16 bitova adresne sabirnice. To znači da je neophodno i kod projektovanja jednostavnih sklopova, kod kojih ovaj mikroprocesor radi u
9
režimu minimalne konfiguracije, izvršiti njihovo razdvajanje posebnim spoljnim kolima. Inače, mikroprocesor obezbeđuje ukupno 20 adresnih linija koje dozvoljavaju logičko adresiranje memorijskog prostora do 1 megabajta, kao niza organizovanih memorijskih lokacija. Organizovanje pristupa memoriji preko internih segmentnih registara dozvoljava dalju podelu memorije na segmente, koji nisu veći od 64 kilobajta (KB) za smeštanje programskog koda, podataka i steka. Fizički memorija je organizovana u dva dela: prvom se pristupa preko linija podataka D0 - D7, a drugom preko D8 - D15. Svakom ovom delu se pristupa korišćenjem adresnih linija A1 - A19, dok linija A0 određuje deo kome se pristupa (kada je A0 = 0 pristupa se parnim, a pri A0 = 1 neparnim lokacijama).
Slika 7. Raspored nožca(pinova) kod mikroprocesora intel 8086.
Deo adresnog prostora memorije koristi se za posebne svrhe, kako je to ilustrovano na slici 5. Gornjih 16 bajtova se koristi za smeštanje informacije o inicijalnom automatskom puniocu, kao i informacije o adresi na kojoj započinje izvršavanje, nakon pojave RESET signala. Donji 1 KB se podeli u 4-bajtne pokazivače (pointere) na rutine za obradu 256 mogućih tipova prekida. Od ukupno 32 bita ovih pokazivača, 16 se koristi za adresu segmenta, a 16 predstavljaju odsečak unutar segmenta. Svi ovi pokazivači moraju da budu inicijalizovani pre nego što se prekidi pojave. 10
Intel 8086 je arhitektonski rešen tako da realizuje izdvojeni ulaz/izlaz, iako nema smetnje da se koristi i memorijski preslikani ulaz/izlaz. Adrese registara ulazno/izlaznih uređaja pojavljuju se isto kao i adrese memorijskih lokacija na adresnim linijama A0 - A15, a prilikom ulazno/izlaznih operacija, vrednost adresnih linija A16 - A19 je nula. Ovo omogućava adresiranje do 64 KB 8bitnih registara ulazno/izlaznih uređaja. Spoljni hardverski prekidi, koje dozvoljava mikroprocesor 8086, dele se na one koji se mogu maskirati (INT) i one koji se ne mogu maskirati (NMI). Rezultat pojave zahteva za prekidom je automatski skok na jednu od 256 mogućih rutina za obradu prekida, čije su početne lokacije sadržane u donjih 1 KB memorijskih lokacija. Slika8. Adresni prostor memorije mikroprocesora intel 8086
Kako postoje samo 2 linije ulaza zahteva za prekidom, uređaj koji generiše prekid mora da obezbedi 8-bitni broj tipa prekida, u toku ciklusa odobrenja prekida. Ovaj broj se koristi kao vektor na odgovarajući pokazivač na početak rutine za obradu prekida. Prekid sa linije INT moguće je maskirati na dva načina: programskim putem i kao odziv na zahtev za prekidom. Bit maske prekida se automatski resetuje i time onemogućava dalje prekide nakon
11
pojave zahteva za prekidom. Njegovo staro stanje ostaje sačuvano na steku i restaurira se nakon povratka iz rutine za obradu prekida.
3. PROGRAMSKI MODEL PROCESORA Programski model procesora čine oni registri procesora koji su dostupni programeru, tj. čiji se sadržaj mijenja izvršavanjem instrukcija programa ili se može stopirati pomoću instrukcija programa. U te registre spadaju: • • • •
umulator adresni registru registri opće namjene registri bita stanjaak
Osim tih registara koji su dostupni programeru, procesor posjeduje još neke registre koji se koriste i čiji se sadržaj mijenja u toku izvrpavanja programa li im se ne može pristupiti programski, tj. ne može programer da utiče na njih programski. To su:
• • • •
registar instrukcije privremeni registar registar adrese i registar podataka
Prikaz programskog modela procesora: A k u m u la to r R e g istri opće n a m je n e A d re sn i re g is tri
R e g is ta r b it-a s ta n ja P riv re m e n i re g is ta r R e g is ta r in s tru k c ije R e g is ta r ad rese R e g ista r p o d a tk a
Slika 9. Blok šema registara mikroprocesora.
12
3.1 PRODGAMSKI MODEL MIKROPROCESORA intel 8085 Unutarnju arhitekturu mikroprocesora Intel 8085 prikazuje slika 10. Mikroprocesor je sastavljen od aritmetičko-logičke jedinice (ALUArithmetic-Logic Unit), upravljačke jedinice (CU- Control Unit), registra instrukcija (IR- Instruction Register) i slijedećih registara kojima se može pristupiti naredbama strojnog jezika: 16-bitnog programskog brojila (PC program counter), 16-bitnog kazala složnika (SP - stack pointer), 8-bitnog registra stanja programa (PSW - program status word), šest 8-bitnih registara opće namjene (B, C, D, E, H i L) i 8-bitnog registra akumulatora (A - accumulator). Prethodno navedeni registri predstavljaju i programski model mikroprocesora 8085. Registri programskog brojila PC i kazala složnika SP duljine 16 bita dozvoljavaju adresiranje u području od 0 do (2 16-1), tj. ukupno 65536 lokacija. Stoga je moguće izravno adresirati 64K (2 16) memorijskih lokacija. Registar stanja programa kao zastavice stanja koristi samo 5 od 8 raspoloživih bita. To su zastavica prijenosa binarne znamenke na težinski više mjesto (CY - carry), zastavica pomoćnog prijenosa (AC - auxiliary carry), zastavica pariteta (P - parity), zastavica predznaka (S - sign) i zastavica nule (Z - zero), prikazanih na slici 11.
13
Slika 10. Unutrašnja arhitektura mikroproceosra intel 8085.
Slika 11. Format registara stanja mikroprocesora intel 8085.
Zastavice se postavljaju u stanje logičke nule ili jedinice zavisno o rezultatu izvođenja aritmetičkih i logičkih operacija i pomažu kod donošenja odluka i izvođenja grananja pod nadzorom programa. Šest registara opće namjene se koristi za pohranu podataka i adresa unutar mikroprocesora. Osim toga pojedine naredbe prilikom izvođenje 16-bitnih operacija koriste registre opće namjene u parovima. Registarski parovi HL, BC i DE služe i kao adresna kazala. Akumulator je registar najšire primjene. Većina aritmetičkih i logičkih operacija zahtjeva da se jedan od operanada prilikom izvođenja naredbe nalazi u akumulatoru. Isto tako i rezultat operacije se privremeno pohranjuje u akumulator. Kod izvođenja ulazno/izlaznih operacija između mikroprocesora i ulazno/izlaznih jedinica, akumulator služi za privremenu pohranu podataka u postupku njihovog prijema s ulazne jedinice odnosno predaje izlaznoj jedinici.
14
3.2 PROGRAMSKI MODEL MIKROPROCESORA intel 8086 Intel 8086 je registarski orijentisan mikroprocesor. Većina operacija se obavlja nad sadržajem registara. Programski model mikroprocesora predstavljen je na slici 6. Ukupno su na raspolaganju tri skupa registara: registri opšte namene, pokazivači, indeksni registri i segmentni registri. Pored njih, postoji i pokazivač instrukcija, ali se njemu programski ne može eksplicitno pristupiti.
Slika 12. Programski model mikroprocesora intel 8086.
Kako je već ranije istaknuto, adresni prostor memorije deli se na segmente dužine po 64 KB, a oni se mogu dodeliti kodu, podacima i steku. Donja četiri bita segmentnih registara imaju vrednost nula, tako da početak svakog segmenta može da bude samo na adresama koje su umnošci broja 16. Segmenti se mogu preklapati. Fizička adresa se formira sabiranjem odsečka sa vrednošću izabranog segmentnog registra. Na slici 8 prikazan je način formiranja 20-bitne fizičke memorijske adrese. Iako se za pristup podacima iz instrukcije normalno koristi registar segmenta koda, ovo može da se uradi i sa drugim segmentnim registrima. Prilikom adresiranja ulaza/izlaza, segmentni registri ne učestvuju u formiranju efektivne adrese. U tom slučaju, fizička adresa jednaka je vrednosti odsečka odgovarajućeg registra iz grupe pokazivača i indeksnih registara.
15
4. REGISTRI MIKROPROCESORA U registre procesora spadaju: • • • • • • • •
registar instrukcije privremeni registar akumulator adresni registri blok registara opšte namjene registar adrese registar podataka registar bita stanja
4.1.1. Regirtar instrukcija Služi zato da se u njega upiše instrukcija nakon njenog očitavanja iz operativne memorije. Instrukcija se onda dovodi na upravljačku jedinicu koja generiše potrebne upravljačke signale za izvršavanje te instrukcije. Registar instrukcija ima onoliko bit-a koliko bit-a ima u operacionom kodu instrukcije. Svaka instrukcija je određena operacionim kodom, a broj bit-a operacionog koda zavisi od ukupnog broja instrukcija.
4.1.2. Privremeni registar Ovaj registar se koristi za dovođenje jednog podatka odnosno operanda koji se koristi pri izvršavanju neke aritmetičke ili logičke instrukcije. Njegov izlaz je spojen na jedan od ulaza aritmetičko-logičkog sklopa. Drugi operand se uvijek nalazi u akumulatoru. Upisivanje podataka u privremeni registar se vrši automatski u toku izvršavanja instrukcije u skladu sa konkretnom instrukcijom što znaći da ne postoje posebne instrukcije za upisivanje u taj registar već se kako smo rekli to radi automatski. Broj bita privremenog registra je jednak broju bita koji se paralelno obrađuju u aritmetičko-logičkoj jedinici, tj. jednak je kao i broj bita u akumulatoru.
4.1.3. Akumulator
16
Registar u kojem se uvijek nalazi jedan podatak, odnosno operand koji se koristi pri realizovanju aritmetičke ili logičke operacije u aritmetičkologičkom sklopu. Takođe se rezultat izvršavanja aritmetičke ili logičke operacije upisuje u akumulator. Zbog takve specifične primjene ovaj registar ima poseban naziv. Broj bita u akumulatoru je jednak broju bita koje procesor paralelno obrađuje i na osnovu tog broja bita obično se definiše bit procesora. Tako imamo 8bitni, 16-bitni, 32-bitni procesor, te se kaže da imamo n-bitni procesor gdje je n broj bita akumulatora. Sadržaj akumulatora se može promijeniti, prepisati ili provjeriti korištenjem određenih instrukcija procesora, tj. programski. Zato se kaže da je taj registar dostupan programeru.
4.1.4. Adresni registri Adresni registri su registri čiji se sadržaj koristi za adresiranje memorijskih lokacija u operativnoj memoriji ili za adresiranje ulaznih i izlaznih sklopova. Pri izvršavanju instrukcija procesor postavlja na svoje adresne linije sadržaj nekog od adresnih registara. To se preko adresne magistrale vodi direktno na memorijske i U/I sklopove i tako vrši adresiranje. Osnovni adresni registri u zavisnosti od njihove funkcije su: a) b) c) d)
programski brojač pokazivač steka pokazivač podatka i indeksni registar
a) Programski brojač (PC) je adresni registar u kojem se uvijek nalazi adresa sljedeće instrukcije koju će procesor izvršavati. Taj registar se koristi za adresiranje instrukcija programa koji se izvršava a nalazi u operativnoj memoriji. Pri izvršavanju određene instrukcije procesor prvo očitava (pribavlja) instrukciju iz operativne memorije sa lokacije koju adresira sadržaj programskog brojača. U toku izvršavanja instrukcije sadržaj programskog brojača se automatski mijenja tako da adresira onu instrukciju koja će sljedeća biti očitana i izvršena. Pri izvršavanju programa onim redoslijedom kako slijedi u programu sadržaj programskog brojača se uvećava najčešće za 1, što bi značilo da ide na sljedeću instrukciju. Pri realizovanju instrukcija skokova i grananja u programu sadržaj programskog brojača se mijenja na drugi način ali opet tako da adresira onu instrukciju koju treba sljedeću pribaviti i izvršiti. Broj bita programskog brojača zavisi od toga koliki je adresni prostor procesora, tj. koliko lokacija operativne memorije procesor može direktno da adresira. Ako je broj bita programskog brojača n tada on može adresirati 2 n 17
memorijskih lokacija što znaći da on kod npr. procesora 8085 čiji računari imaju 64 Kb operativne memorije ima 16 bita jer je 64 Kb = 216. b) Pokazivač steka (SP), stek je memorijska struktura LIFO tipa (last in, first out) što znaći da se onaj podatak koji je posljednji upisan prvi očitava. Ta struktura se koristi kod procesora i računara da bi se omogućilo korištenje potprograma i prekida, jer pri korištenju potprograma i prekida se mijenja redoslijed izvršavanja instrukcija tako što procesor prelazi na izvršavanje potprograma ili programa za obradu prekida. Da bi se po završetku tih programa moglo nastaviti daljnje izvršavanje prethodnog programa u steku se memoriše tzv. povratna adresa, a takođe i oni međurezultati koji mogu biti promijenjeni pri izvršavanju potprograma ili programa za obradu prekida. Po završetku tih programa iz steka se vraćaju memorisani sadržaji i procesor nastavlja izvršavanje prethodnog programa po normalnom redoslijedu. c) Pokazivač podatka (DP) je adresni registar u kojem se nalazi adresa
podatka koji će se koristiti pri izvršavanju instrukcije. Da bi se omogućilo adresiranju u čitavom adresnom prostoru taj registar obično ima onoliko bita koliko i programski brojač. Kod procesora 8085 ne postoji poseban registar pokazivač podatka već se za adresiranje podatka koristi neki od registara iz bloka registara opće namjene, H i L npr. d) Indeksni registar (IR) se koristi za adresiranje podataka koji će se koristiti pri izvršavanju instrukcije ali u slučaju da procesor koristi tzv. indeksno adresiranje. Takvo adresiranje se koristi pri radu sa nizovima podataka u operativnoj memoriji za adresiranje pojedinačnih podataka. Indeksni registar tada pokazuje osnovu, tj. početni podatak u takvom nizu a promjenom njegovog sadržaja lako se pristupa svakom podatku. Da bi se moglo pristupiti podacima u cijelom adresnom prostoru indeksni registar (IR) obično ima onoliko bita koliko i programski brojač.
4.1.5. Blok regstara opšte namjene Skup registara koji se mogu koristiti za trenutno čuvanje podataka, međurezultata, rezultata i adresa. Njihova svrha je povećanje brzine rada procesora jer se sa podacima koji se nalaze u tom bloku registara mnogo brže operiše jer su oni u procesoru, nego sa podacima u adresama koje su u operativnoj memoriji. Poželjno je da procesor ima što je moguće više ovih registara li to povećava složenost i cijenu procesora. Ovakav blok registara se može realizovati na dva načina:
18
Korištenjem određenog skupa registara od kojih je svaki vezan direktno na magistralu procesora ili, korištenjem jedne male unutrašnje (interne) memorije.
4.1.6. Registar adresa Ovaj registar je direktno vezan za vanjske adresne linije procesora. U njemu se uvijek nalazi adresa memorijske lokacije ili U/I sklopa iz koga se očitavaju ili upisuju podaci pri izvršavanju instrukcije. Obično ima onoliko bita koliko i programski brojač. Kod procesora 8085 pošto se adresa prenosi u dva dijela, jedan dio preko adresnih linija a drugi preko linija podataka, ovaj registar ima 8 bita i u njemu se uvijek nalazi viši bajt adrese. Niži bajt adrese se prenosi preko linija podataka, tj. preko registra podatka ali samo u prvom takt-ciklusu mašinskog ciklusa instrukcije.
4.1.7. Registar podataka Direktno je vezan na vanjske linije podataka na procesoru i preko njega se prenose podaci iz procesora ili u procesor. Preko njega se prenosi i niži bajt adrese kod procesora 8085. Taj registar ima onoliko bita koliko i akumulator.
4.1.8. Registar bita stanja Registar bita stanja spada u sastavni dio aritmetičko-logičke jedinice i daje informacije o stanju rezultata nakon izvršavanja aritmetičke ili logičke instrukcije. U njemu se nalazi bit čije se stanje mijenja u zavisnosti od rezultata realizovanja aritmetičke ili logičke instrukcije. Procesor posjeduje instrukcije za ispitivanje stanja tih bita, tako da se u programima realizuju skokovi ili grananja nakon ispitivanja stanja pojedinih od tih bita. Uobičajeni biti stanja koji postoje kod procesora su: a) Bit prenosa (Cy) koji pokazuje da li je pri realizovanju prethodne operacije došlo do pojave prenosa ili pozajmice bita. Prenos se pojavljuje kod sabiranja ako rezultat ima više bita nego što je broj bita akumulatora. Dakle, ono što u takvim slučajevima ne može da stane u akumulator ide u bit prenosa Cy. Npr. najveći broj koji može da stane u akumulator je 255 (Slika 14.).
19
+ Cy
Slika 14. Pozicija bita penosa.
Pri oduzimanju se pojavljuje pozajmica ako se oduzima veći broj od manjeg. Ovaj bit prenosa (Cy) se koristi i pri pomijeranju bita pri čemu bit koji izlazi ili ulazi se upisuje u bit prenosa. b) Bit znaka rezultata (S) se koristi pri radu sa podacima sa predznakom (+, -). Tada se najviši bit u akumulatoru koriti kao bit predznaka (S). Ako je S=1 onda je podatak negativan a ako je S=0 onda je pozitivan. c) Bit nule rezultata (N ili Z) pokazuje da je rezultat nula ili ako su u akumulatoru nule onda i ovaj bit pokazuje nulu. d) Bit prekoračenja (OV) pokazuje da je došlo do prekoračenja opsega u kojem se predstavlja podatak. Koristi se pri radu sa podacima sa predznakom i on se pojavljuje ako dođe do prenosa ili u bit predznaka ili iz bita predznaka (Slika 15.), C y
a
p o d a ta k A
Slika 15. Bit prekoračenja
e) bit poluprenosa (AC) pokazuje da li postoji prenos iz niže u višu polovinu bajta.
Slika 16. Bit poluprenosa
Koristi se pri radu sa BCD-podacima gdje se jedan BCD-podatak predstavlja sa 4 bita, tj. u jednom bajtu možemo prikazati dva podatka. f) Bit parnosti (P) pokazje da li je u rezultatu u akumulatoru paran ili neparan broj jedinica. Ako je paran onda na njegovom mjestu je upisan broj 1. Koristi se za generisanje bita parnosti ili bita neparnosti koji se primjenjuju za kontrolu
20
ispravnosti kodovanja i ispravnosti prenosa podataka. On je kod 8-bitnih podataka deviti bit, tzv. parity bit. g) Bit maske prekida (IE) služi da se omogući (1) ili zabrani (0) prihvatanje zahtjeva za prekid. On se može postaviti i programski ali se to dešava automatski pri radu procesora. Kad prihvati jedan zahtjev za prekid procesor zabrani akutomatski prihvatanje drugih zahtjeva za prekid dok ne završi obradu prihvaćenog zahtjeva za prekid. Tek tada je mogućen prihvat novog zahtjeva za prekid.
4.2 REGISTRI MIKROPROCESORA intel 8085 Programski model mikroprocesora 8085 uključuje šest registara, akumulator, i registar flegova, kako je prikazano na slici. Pored toga, ima dva 16-bitna registra: stek pointer i programski brojač. Ukratko ćemo opisati ove registre.
Slika 17. Registri mikroprocesora intel 8085.
Mikroprocesor 8085 ima šest registara opšte namjene za čuvanje 8-bitnih podataka; oni se identifikuju sa slovima B, C, D, E, H i L kao što je prikazano na slici. Ovi registri se mogu kombinovati kao registarski parovi – BC, DE, i HL – da bi mogli vršiti operacije sa 16-bitnim podacima. Programer može
21
koristiti ove registre za čuvanje ili kopiranje podataka u registre upotrebom instrukcija za kopiranje. Akumulator je 8-bitni registar koji je dio aritmetičko-logičke jedinice (ALU). Ovaj registar se koristi za čuvanje 8-bitnih podataka i za izvođenje aritmetičkih i logičkih operacija. Rezultat operacije čuva se u akumulatoru. Akumulator se identifikuje kao registar A. Aritmetičko-logička jedinica uključuje pet flip-flopova, koji se setuju ili resetuju poslije izvođenja operacija u zavisnosti od dobijenog rezultata u akumulatoru i ostalim registrima. Ovi flip-flopovi se nazivaju Zero (Z), Carry (CY), Sign (S), Parity (P) i Auxiliary Carry (AC) flegovi; njihove bit pozicije u fleg-registru prikazane su na sljedećoj slici. Najčešće korišćeni flegovi su Z, CY i S. Mikroprocesor koristi ove flegove za ispitivanje uslova podataka.
Slika 18. Flegovi mikroprocesora intel 8085.
Na primjer, nakon sabiranja dva broja, ukoliko je zbir u akumulatoru veći nego što se može predstaviti sa osam bita, flip-flop koji se koristi za indikaciju prenosa – koji zovemo Carry fleg (CY) – postavlja se na jedinicu. Kada je rezultat aritmetičke operacije jednak nuli, flip-flop koji nazivamo Zero (Z) fleg se postavlja na jedinicu. Prva slika prikazuje 8-bitni registar, koji se naziva fleg-registar, i koji se nalazi odmah uz akumulator. Međutim, on se ne koristi kao registar; pet bit pozicija od osam se koristi za čuvanje izlaza pet filp-flopova. Flegovi se čuvaju u 8-bitnom registru tako da programmer može da ispituje vrijednosti ovih flegova (uslovi podataka) pristupajući ovom registru upotrebom posebnih instrukcija. Ovi flegovi imaju posebnu važnost pri procesu donošenja odluka u mikroprocesoru. Uslovi (set ili reset) flegova se testiraju softverski pomoću odgovarajućih instrukcija. Na primjer, instrukcija JC (Jump on Carry) je implementirana tako da promijeni tok izvršavanja programa ukoliko je fleg CY postavljen. Razumijevanje funkcionisanja flegova predstavlja osnovu u pisanju programa u asemblerskim jezicima. Programski brojač(PC) je 16-bitni registar koji se koristi za upravljanje tokom izvršavanja instrukcija. To je usuštini registar koji služi kao pokazivač memorije. Memorijske lokacije imaju 16-bitneadrese, i upravo zbog toga je 22
PC 16-bitni registar.Uloga programskog brojača je da pokazuje na memorijsku adresu sa koje treba preuzetibajt sljedeće instrukcije. Kada se bajt (mašinski kod) preuzme, programski brojac seuvećava za jedan (inkrementira) i pokazuje na sljedeću memorijsku lokaciju. Poazivač steka SP (Stek pointer) je takođe 16-bitni registar koji služi kao pokazivač memorije. On pokazujena memorijsku lokaciju u R/W memoriji, koju nazivamo stek. Početak steka definisan jeupisivanjem 16-bitne adrese u stek pointer.
4.3. REGISRTI MIKROPROCESORA intel 8086 Mikroračunar intel 8086 ima 14 unutrašnjih registara, koji su svi veličine po 16 bita. Od toga su 4 opšte namjene, 2 pointera, 2 indeksna registra, programski brojač, 4 segmentna registra i jedan status registar.Oni se mogu podjeliti u funkciji : • registre podataka,(registri opšte namjene) • pokazivače indeksne registre, • segmentne registre, • pokazivač instrukcija, • registar bita stanja. Registri opšte namene koriste se za obavljanje aritmetičkih i logičkih operacija, a u nekim instrukcijama, kao što su one koje rade nad nizovima znakova, oni imaju fiksno značenje, kako je to prikazano na prethodnoj slici. Registri opšte namene razlikuju se od ostalih po tome što se mogu adresirati ili kao 4 16-bitna, ili 8 8-bitnih registara. Pokazivači i indeksni registri omogućavaju razne vrste adresiranja unutar segmenta. Iako se svi oni mogu koristiti za razne namene, najefikasnije ih je koristiti za namene prokazane na prethodnoj slici. Drugim rečima, sadržaj pokazivača se tretira kao odsečak u odnosu na tekuću vrednost pokazivača steka (SS), a sadržaj indeksnih registara kao odsečak unutar tekućeg segmenta podataka. Registar stanja svojim sadržajem odražava trenutno stanje računara. Na slici 7 dat je detaljan sadržaj FLAGS registara (koji čine registar stanja) u koje se smeštaju statusni indikatori, čija je uloga zapisivanje informacija o statusu procesora koje utiču na dalji tok izvršavanja programa. Indikatori AF, CF, PF, SF i ZF odražavaju stanje aritmetičke i logičke operacije. OF indikator odražava stanje premašaja kod notacije u znakovnoj aritmetici, a DF, IF i TF 23
se koriste za upravljanje određenim aspektima mikroprocesora.
Slika 19. Registar stanja.
Važnu ulogu ima treća grupa registara: segmentni registri. Ovi registri učestvuju u svim izračunavanjima adresa, pa se sve instrukcije uzimaju relativno u odnosu na sadržaj segmentnog registra koda. Sličnu ulogu imaju i ostali registri koji služe za rad sa podacima. Programi koji ne menjaju sadržaj segmentnog registra su dinamički relokatibilni, te se mogu se prekidati, premeštati na druge lokacije i ponovo startovati sa novom vrednošću segmentnogregistra. Ovde nećemo ulaziti detaljnije u instrukcijski skup mikroprocesora 8086. Sve instrukcije podeljene su u grupe koje učestvuju u prenosu podataka, aritmetičkim i logičkim operacijama, radu sa nizovima znakova, upravljanju tokom odvijanja programa i upravljanju mikroprocesorom. Kako je već ranije istaknuto, adresni prostor memorije deli se na segmente dužine po 64 KB, a oni se mogu dodeliti kodu, podacima i steku. Donja četiri bita segmentnih registara imaju vrednost nula, tako da početak svakog segmenta može da bude samo na adresama koje su umnošci broja 16. Segmenti se mogu preklapati. Fizička adresa se formira sabiranjem odsečka sa vrednošću izabranog segmentnog registra. Na slici 8 prikazan je način formiranja 20-bitne fizičke memorijske adrese. Iako se za pristup podacima iz instrukcije normalno koristi registar segmenta koda, ovo može da se uradi i sa drugim segmentnim registrima. Prilikom adresiranja ulaza/izlaza, segmentni registri ne učestvuju u formiranju efektivne adrese. U tom slučaju, fizička adresa jednaka je vrednosti odsečka odgovarajućeg registra iz grupe pokazivača i indeksnih registara.
24
Slika 20. Formiranje 20-bitne fizičke memorijske adrese
5. INSTRUKCIJE MIKROPROCESORA Instrukcija procesora definiše operaciju koji će procesor realizovati pri izvršavanju te instrukcije.Instrukcija je binarni digitalni podatak koji definiše operaciju koja će se izvršiti i podatke ili operande koji će biti korišteni i realizovani u toj operaciji. Koriste se još termini instrukciona riječ i mašinska instrukcija, koji označavaju isto.Instrukcija se sastoji iz dva dijela pa se kaže da je format instrukcije sastavljen od operacionog dijela i drugog dijela koji se naziva dio operanda. o p e ra c io n i kod
d io o p e ra n d a
U operacionom dijelu je definisana operacija koja se realizuje.Operacije se koduju i predstavljene su određenim kodom.Zato se ovaj dio instrukcije još naziva operacioni kod ili kod operacije. Broj bita u operacionom kodu zavisi od ukupnog broja operacija koje procesor može da realizuje, tj. od ukupnog broja različitih instrukcija procesora.(n – bita koduje 2n instrukcija).
5.1 INSTRIKCIJE MIKROPROCESORA intel 8085
25
Kod procesora 8085 operacioni kod je dužine 1B, tj. 8 bita što znači da on može imati do 256 instrukcija mada ima manje.Drugi dio instrukcije koji se naziva dio operanda definiše podatak, tj. operand koji će se koristiti pri realizovanju neke instrukcije.Taj dio može da bude sam operand ili može da bude adresni dio koji definiše adresu operanda, tj. gdje se operand nalazi.Da li će ovaj dio da bude operand ili adresni dio zavisi od konkretne instrukcije, odnosno od operacionog koda i zavisi od tzv. načina adresiranja . Adresni dio može da bude adresa operanda ili podatak na osnovu kojeg se određuje adresa.Dio operanda može da bude 1 B ili 2B ili da uopće ne postoji što zavisi od konkretne instrukcije.Kod procesora 8085 dio operanda u zavisnosti od instrukcije može biti 1B, 2B ili da ne postoji.
5.1.1. TIPOVI INSTRUKCIJA MIKROPROCESORA intel 8085 Svaki procesor može da realizuje određene operacije.Osnovni skup operacija koje može da realizuje procesor definisan je instrukcijama procesora.Svaki procesor posjeduje konačan skup instrukcija sa tačno poznatim operacijama.Skup instrukcija procesora se definiše pri projektovanju i izradi procesora. On se projektuje tako da zadovoljava sljedeća tri zahtjeva: - kompletnost - efikasnost - pojednostavljenje hardvera procesora i programiranja Kompletnost znači da skup instrukcija procesora mora biti tako definisan da se pomoću njega može napisati program za realizovanje bilo koje funkcije, odnosno posla koji se može izraziti preko određenog algoritma koji se u računaru može realizovati. Efikasnost znači da skup instrukcija treba da bude takav da se najčešće potrebne funkcije, odnosno poslovi mogu realizovati uz korištenje minimalnog broja instrukcija.Pojednostavljenje znači da skup instrukcija treba da bude takav da dovede do pojednostavljenja hardvera procesora i da olakša programiranje.Instrukcije procesora se obično dijele u sljedećih pet glavnih tipova: a) b) c) d) e)
instrukcije za prenos podataka aritmetičke instrukcije logičke instrukcije instrukcije za upravljanje i izvršavanje programa ulazno/izlazne instrukcije. 26
Instrukcije za prenos podataka se koriste za kopiranje podataka, odnosno prenošenje iz jedne memorijske lokacije u drugu memorijsku lokaciju, iz jednog registra u drugi registar u procesoru, između registara procesora i memorijskih lokacija, tj. za sve prenose unutar procesora i memorije i unutar memorije.Naredbe prijenosa podataka prenose podatke između memorije i registara kao i između samih registara. Tablica prikazuje mnemonike korištene u toj skupini naredbi. Mikroprocesor ne dozvoljava izravni prijenos podataka između memorijskih lokacija. Naredbe prijenosa podataka ne utječu na stanja zastavica registra stanja programa. Prenosne instrikcije - ova grupa instrukcija kopira podatke sa lokacije koju nazivamo izvor na drugu lokacijukoju nazivamo odredište, bez promjene sadržaja izvora. U tehničkim priručnicima, za ovufunkciju kopiranja koristi se termin data transfer. Međutim, termin transfer je pomalozbunjujući; stvara utisak da se sadržaj izvora uništava dok, u suštini, sadržaj zadržavasvoju vrijednost bez promjene. Različiti tipovi prenosa (kopiranja) podataka prikazani su u sljedećoj tabeli sa primjerima za svaki tip:
Slika 21. Tabela za prenocne instrukcije( tipove tih instrukcije).
Aritmetičke instrukcije - ove instrukcije izvode aritmetičke operacije kao što su sabiranje, oduzimanje,inkrementiranje, dekrementiranje. Sabiranje – Bilo koji 8-bitni broj, ili sadržaj registra ili sadržaj memorijske lokacijemože se dodati sadržaju akumulatora a zbir se pohranjuje u akumulator. Nijedna drugadva 8-bitna registra ne mogu se sabirati direktno (npr., sadržaj registra B ne može sedirektno sabrati sa sadržajem registra C). Instrukcija DAD je izuzetak; ona dodaje 16-bitni podatak direktno registarskom paru. 27
Oduzimanje – Bilo koji 8-bitni broj, ili sadržaj registra ili sadržaj memorijske lokacijemože se oduzeti od sadržaja akumulatora a rezultat se pohranjuje u akumulator.Oduzimanje se izvodi u drugom komplementu, a rezultat ukoliko je negativan, seizražava takođe u drugom komplementu. Nijedna druga dva registra ne mogu seoduzimati direktno. Inkrementiranje/dekrementiranje – 8-bitni sadržaj registra ili memorijske lokacijemože se inkrementirati ili dekrementirati za 1. Slično, 16-bitni sadržaj registarskog para(kao što je BC) može se inkrementirati ili dekrementirati za jedan. Ove operacije inkrementa idekrementa razlikuju se od sabiranja i oduzimanja u sljedećem: one se mogu izvoditi nadbilo kojim od registara ili nad memorijskom lokacijom. Logičke instrukcije - ove instrukcije vrše različite logičke operacije nad sadržajem akumulatora. Logičko I, ILI, isključivo-ILI – nad bilo kojim 8-bitnim brojem, ili sadržajem registra,ili memorijske lokacije i sadržajem akumulatora mogu da se izvode nabrojane logičkeoperacije. Rezultat se smješta u akumulator. Rotiranje – Svaki bit u akumulatoru može da se pomjera ulijevo ili udesno na sljedećupoziciju. Poređenje – Bilo koji 8-bitni broj, ili sadržaj registra, ili memorijske lokacije može seporediti sa sadržajem akumulatora. Komplement – Sadržaj akumulatora se može komplementirati. Sve nule postaju jedinicea sve jedinice postaju nule. Instrukcije granjanja - ova grupa instrukcija mijenja tok izvršavanja programa bilo uslovno ili bezuslovno. Jump – Uslovni skokovi predstavljaju važan aspekt pri procesu donošenja odluka uprogramiranju. Ove instrukcije ispituju određene uslove (npr., Zero ili Carry flegove) azatim mijenjaju tok izvršavanja programa ukoliko je neki od uslova ispunjen. Dodatno,set instrukcija uključuje i instrukciju koja se naziva bezuslovni skok. Call, Return, and Restart – Ove instrukcije mijenjaju tok programa bilo pozivom (Call)potprograma ili vraćanjem iz potprograma (Return). Uslovne instrukcije Call i Returntakođe mogu da ispituju vrijednost flegova.
5.2. INSTRUKCIJE MIKROPROCESORA intel 8086 Skup instrukcija ovog mikroprocesora može se posmatrati na dva nivoa: • Na asamblerskom • Na mašinskom Na asamblerskom nivou- ovaj mikroprocesor ima skup oko 100 instrukcija, međutim i neke od tih instrukcija se intrepetiraju na više načina na 28
mašinskom nivou tako da na mašinskom nivou postoji oko 300 instrukcija. Te instrukcije se dijele na: 1. instrukcije za prenos podataka 2. aritmetičke instrukcije 3. instrukcije za manipulaciju bitima- logičke instrukcije 4. instrukcije za rad sa nizovima podataka 5. instrukcije za upravljanje prenosom 6. instrukcije za upravljanje procesorom Sada ćemo dati neka objašnjenja za navedene instrukcije i to: 1. Instrukcije za prenos podataka – prenose bajtove ili riječi između memorije i registra, između registara, između registara i ulaznoizlaznih skolpova. Tu spadaju instrukcije za rad sa skupom instrukcija za prenos sadržaja bita stanja i za upisivanje u segmentne registre. Postoji 14 instrukcija za prenos podataka . Dijele se u 4 grupe: • Instrukcije za prenos podataka opšte namjene • Ulazno – izlazne instrukcije • Instrukcije za prenos adresa • Instrukcije za prenos bita stanja Instrukcije za prenos podataka opšte namjene su : MOV, PUSH, POP, XCHG,XLAT. Ulazno – izlazne instrukcije su: IN, OUT Instrukcije za prenos adresa su: LEA, LDS,LES Instrukcije za prenos bita stanja su: LAHF, SAHF, PUSHF, POPF 2. Aritmetičke instrukcije - realizuju aritmetičke operacije: «+«, «-«, «. « i «:«. Aritmetičke operacije mogu se realizovati nad četiri vrste podataka : binarne označene i binarne neoznačene , neoznačene pakovane decimalne i neoznačene nepakovane decimalne. Sve utiču na bite u registru bita stanja. Postoji 20 takvih različitih instrukcija za sabiranja: ADD, ADC, AAA, INC,DAA; Za oduzimanje: SUB, SBB,DEC,NEG, CMR,AAC, DAC ; Množenje ; MUL, IMUL, AAM; Za dijeljenje; DIV, IDIV, AAD, CBW, CWD. 3. Instrukcije za manipulaciju bitima- logičke instrukcije. Postoje tri grupe za manipulisanje bitima u bajtovima ili riječima. Dijele se na logičke instrukcije, instrukcije za pomjeranje i instrukcije za rotiranje. Sada ćemo navesti instrukcije za gore navedene tipove: • Logičke instrukcije: NOT, AND, OR, XOR, TEST • Instrukcije za pomjeranje: SHL/SAL, SHR, SAR • Instrukcije za rotiranje: ROL, ROR, RLC, RCR. 29
4. Insrukcije za rad sa nizovima podataka. Moguće je realizovati 5 osnovnih operacija sa nizovima podataka. Niz može biti maksimalno do 64KB. Osnovne operacije su: Prenosi ( instrukcije tipa MOVS ), poređenje (CMPS) i skeniranje za određenu vrijednost ( SCAS). Postoje takođe i instrukcije sa prefiksom REP što omogućava hardversko ponavljanje određenog niza instrukcija. Postoji ukupno 9 instrukcija ovog tipa, a to su: REP, REPE/ REPZ, MOVS, MOVS/MOVSW, CMPS, SCAS, LODS, STOS. 5. Instrukcije za prenos upravljanja u programu. To su instrukcije tipa skokova u programu , postoje uslovni i bezuslovni. Uslovni se izvršavaju u zavisnosti od bita stanja. Koriste se za promjenu redoslijeda u izvršavanju programa. Postoje 4 tipa mogućih prenosa i to: uslovni prenosni, bezuslovni, upravljanje interakcijama i rad sa prekidima, ovakvih instrukcija ima ukupno 28. Bezuslovni prenosi mogu da budu introsegmentni i u asamblerskom se označavaju sa NEAR i mogu da budu intersegmentni, au asamblerskom se označavaju sa FAR. Instrukcije tog tipa su: JMP; CALL; RET. Uslovni prenosi zavise od bita stanja u registru bita stanja, svi ti skokovi su takozvani "kratki skokovi" , a u asambleru se označavaju sa SHORT. To može da bude u okviru od – 128 do +127 bajtova u odnosu na prvi bajt sledeće instrukcije. Neke od tih instrukcija su: JA/JNBE, JAE/JNB,...., JC, JE/JZ, JG/JNLE, JNC, JNE/JNZ, JNO, JNP/JPO, JP/JPE, JS. Instrukcije za upravljanje interakcijama koriste se za regulisanje ponavljanja softverskih petlji. Registar CH se koristi kao brojač ponavljanja petlje. Kao i kod uslovnih skokova i kod ovih instrukcija se realizuju SHORT prenosi. Instrukcije tog tipa su LOOP, LOOPE/ LOOPZ, LOOPNE/LOOPNZ, JCXZ. Instrukcije za rad sa prekidima omogućavaju da se programi za obradu prekida aktiviraju programiranjem od strane programa kao i pomoću vanjskog hrdvera. Efekat softverskog prekida je sličan onom koji je izazvan hardverski. Tu spadaju INZ n , INT0, IRET. 6. Instrukcije za upravljanje procesorom. One omogućavaju da program upravlja raznim funkcijama mikroprocesora. Jedna grupa tih instrukcija se koristi za postavljanje bita stanja, a druga prvenstveno za sinhronizaciju mikroprocesora sa vanjskim uređajima i događajima. U tu grupu spada i instrukcija koja ne radi ništa tkz. Instrukcija "Nema rada" NOP. Postoji ukupno 12 instrukcija ovog tipa: a) Instrukcije koje operišu bitima stanja: SETC, CLC, CMC,STD,CLD,STI,CLI b) Instrukcije za vanjsku sinhronizaciju: HLT, WAIT, ESC,LOCK Instrukcija nema rada NOP ( samo protekne vrijeme). 30
5.2.1. NOVE INSTRUKCIJE MIKROPROCESORA intel 8086 Instrukcije za rukovanje nizovima, kao implicitni operand koriste indeksne registre SI i DI, čija se vrijednost nakon izvršavanja instrukcije mijenja zavisno od sadržaja bita D status registra. Sve instrukcije za rukovanje sa nizovima imaju dva oblika: jedan za rad sa nizovima bajtova, sa postfiksom B i drugi za rad sa nizovima riječi, sa postfiksom W. Instrukcija LODS služi za učitavanje elemenata niza u akumulator, smještanje u niz se vrši instrukciom STOS. Vrijednost se uzima iz akumulatora i smješta u elemenat na koji pokazuje DI indeksni registar. Za kopiranje elemenata nizova koristi se instrukcija MOVS. Kopiranje se vrši iz elemenata na koji pokazuje SI, u elemenat na koji pokazuje DI. Instrukcija SCAS omogućuje poređenje akumulatora sa elementima niza. Međusobno poređenje elemenata niza omogućuje instrukcija CMPS. Dodavanje prefiksa REP ispred imena instrukcije za rukovanje nizovima označava ponavljanje odgovarajuće instrukcije.Pri tome broj ponavljanja smještamo predhodno u CX registar. Nakon svakog ponavljanja vrijednost CX registra se umanjuje, a ponavljanje završi kada vrijednost ovog registra padne na nulu. Instrukcije za rukovanje status registrom- Postavljanje bita c status registra omogućuje instrukcija STC, njegovo poništenje instrukcija CLS. Izmjenu vrijednosti ovog bita omogućuje instrukcija CMC. Postavljanje bita D status registra omogućuje instrukcija STD, a njegovo poništavanje instrukcija CLD. Instrukcija STI postavlja bit I status registra, a instrukcija CLI poništava ovaj bit. Razne instrukcije- Instrukcija NOP troši procesorsko vrijeme pa omogućuje generisanje kratkih pauza, reda desetina taktova procesora. Instrukcija WAIT omogućuje usklađivanje rada procesora i numeričkog koprocesora, instrukcija HLT omogućuje zaustavljanje rada procesora.
31
6. NAČINI ADRESIRANJA KOD MIKROPROCESORA Instrukcija je komanda koja govori mikroprocesoru da izvede određeni zadatak naddatim podacima. Svaka instrukcija se sastoji iz dva dijela: prvi dio definiše koji zadataktreba da se izvrši, i naziva se operacioni kod (opcode), dok drugi predstavlja podatke nadkojima se vrši operacija, i naziva seoperand. Operand (ili podatak) se može specificiratina različite načine. To može biti 8bitni (ili 16-bitni) podatak, neki od internih registara,memorijska lokacija,ili8bitna(ili16-bitna)adresa.Kod nekih instrukcija operan djeimicitno određen.Dužina riječi instrukcije Skup instrukcija za mikroprocesor8085 podijeljen je u sljedeće tri grupe prema dužini riječi: 1. Instrukcije dužine jedne riječi ili jednobajtne instrukcije 2. Instrukcije dužine dvije riječi ili dvobajtne instrukcije 3. Instrukcije dužine tri riječi ili trobajtne instrukcije. Kod mikroprocesora 8085, "bajt" i "riječ" predstavljaju sinonime zato što je to 8-bitni mikroprocesor. Međutim, instrukcije se obično izražavaju brojem bajtova a ne brojem riječi.
6.1. NAČINI ADRESIRANJA KOD MIKROPROCESORA intel 8085
32
Instrukcije MOV B, A ili MVI A, 82H koriste se za kopiranje podataka iz izvora u odredište. Kod ovih instrukcija izvor može biti registar, ulazni port, ili 8-bitni broj (00H do FFH). Slično, odredište može biti registar ili izlazni port. Izvor i odredište su operandi. Različiti formati za specificiranje operanada nazivaju se NAČINI ADRESIRANJA. Za 8085, imamo sljedeće načine adresiranja: 1. Neposredno adresiranje (Immediate addressing). 2. Registarsko adresiranje (Register addressing). 3. Direktno adresiranje (Direct addressing). 4. Indirektno adresiranje (Indirect addressing). Implicitno adresiranje U instrukciji je implicitno sadržana informacija o tome gdje se nalazi operand. Primjer: ADD M Neposredno adresiranje Podatak se nalazi u okviru instrukcije. Obezbjeđeno je neposredno upisivanje podatka na mjesto odredišta. Primjer: MVI R, data Registarsko adresiranje Podatak se nalazi u nekom od registara. Primjer: MOV Rd, Rs Direktno adresiranje Koristi se za prihvatanje podataka od perifernih uređaja u akumulator ili za slanje poadataka koji se nalaze u akumulatoru perifernim uređajima. Npr., trebamo preuzeti podatak sa ulaznog porta 00H a zatim ga smjestiti u akumulator ili poslati podatak koji se nalazi u akumulatoru na izlazni port 01H. Primjer: IN 00H ili OUT 01H Indirektno adresiranje Ovo znači da se efektivna adresa računa od strane procesora. Adresa koja definiše gdje se u memoriji nalazi operand nalazi se u nekom od internih registara mikroprocesora. Primjer: STAX B.
6.2. NAČINI ADRESIRANJA KOD MIKROPROCESORA intel 8086 Procesor 8086 ne dozvoljava operacije između dvije memorijske lokacije. U primjerima s adresiranjem se koristi naredba MOV. MOV odredište, izvor 33
Napomena: MOV naredba se ne može koristiti da se postavi vrijednost CS ili IP Registra . Direkno adresiranja Postoji više načina direktnog adresiranja: a) preko imena varijable MOV ax, var1 MOV var2, bl b) preko vrijednosti MOV ax, 2Ch c) preko adrese varijable MOV ax, [2Ch] - u ovom slučaju se podrazumijeva da pristupamo adresi u DS. MOV ax, DS:[2Ch] MOV ax, ES:[2Ch] d) preko registara MOV ax, di MOV cl, dh Indirektno adresiranja Ovo adresiranje se naziva indirektno jer se vrijednosti pristupa preko njene adrese. a) registarski mod – adresa sa koje se podatak prebacuje nalazi se u "nekom" registru. MOV ah, [bx] -> prebacuje se byte s adrese DS:[BX] u ah MOV ah, [si] MOV ah, [di] MOV ah, [bp] -> vezan je uz SS b) indeksni mod – koristi se za pristupanje elementima polja. [SI|DI + konst.] MOV si, 0 MOV al, polje[si] c) bazni mod – koristi se kod pristupanja elementima strukture podataka. [BP|BX + konst.] d) bazno-indeksni mod – koristi se ukoliko nije poznato ime niza brojeva već samo adresa prvog elementa. MOV al, [bx][si] -> DS:[bx + si] MOV ax, polje 34
MOV bx, OFFSET polje e) bazno-indeksni mod s pomakom – koristi se za pristup elementima polja koji su članovi strukture. [BP|BX + SI|DI + konst.]
ZAKLJUČAK Mikroprocesor 8085 je 8- bitni i znači da se razlikuje od mikroprocesora 8086 koji je 16-bitni. Samim tim imamo i razliku u instrukcijama kojih u mikroprocesoru 8086 ima negdje oko 300 na mašinskom nivou. Postoje i razlike u načinu adresiranja i tipu instrukcija. Sada ću vam dati neke osobine za mikroprocesor 8085 i mikroprocesor8086. MP Intel 8085 izlazi 1977 godine i prestavlja nadograđenu verziju prcesora 8080. Ovaj procesor je posljedni 8-bitni razvijeni mikroprocesor razvijen od strane Intela. Evo nekih njegovih osobina: • Procesor 8085 je 30% brži od svoga prethodnika (8080). • Dodaju se i dvije nove instrukcije za obezbeđenje prekida. • Glavne prednosti 8085 su unutrašnji generator takta, interni sistemski kontroler i viša frekfencija rada. Skup instrukcija kod Mikroprocesora 8085 podjeljen je u sledeće tri grupe prema dužini riječi. 1. Instrukcije dužine jedne riječi ili jednobajtne instrukcije 2. instrukcije dužine dvije riječi ili dvobajtne instrukcije 3. Instrukcije dužine tri riječi ili trobajtne instrukcije Kod mikroprocesora 8085 „bajt“ i „riječ“ predstavljaju sinonime zato što je to 8-bitni mikroprocesor. 35
Jednobajtne instrukcije sadrže operacioni kod i operand u istom bajtu, operandi su interni registri i kodovani su unutar instrukcije. Kod dvobajtnih instrukcija prvi bajt definiše operacioni kod dok drugi bajt definiše operand. Izvorišni operand je bajt podataka koji se nalazi odmah iza bajta operacionog koda. Kod trobajtnih instrukcija prvi bajt predstavlja operacini kod, a sledeća dva bajta određenu 16- bitnu adresu, te drugi bajt predstavlja niži bajt adrese dok treći bajt predstavlja viši bajt adrese. Novi Intelov MP 8086 je bio 16-bitni procesor koji je sadržavao 29000 tranzistora i radio je na taktu od 5 MHz. Neke njegove osobine su: • 8086 je bio u stanju da adresira 1 MB memorije. • Imao je mali 4 ili 6 bajrni instrukcijski keš koji je dobavljao instrukcije prije nego što bi bile izvršene. • 16-bitni mikroprocesor je omogućavao veće interne registre.
36