jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/files/addresssim.doc · web view6)...

88
UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET KATEDRA ZA ELEKTRONIKU MIKROPROCESORSKI SISTEMI AdressSim Mentor: Prof. dr Mile Stojčev Na projektu radili: Vesić Dejan 10112 Mitov Vladan 10737 1

Upload: others

Post on 24-Jan-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET

KATEDRA ZA ELEKTRONIKU

MIKROPROCESORSKI SISTEMI

AdressSim

Mentor:Prof. dr Mile Stojčev

Na projektu radili:

Vesić Dejan 10112Mitov Vladan 10737 Jakovljević Predrag 9930Božić Vladan 9865Milenović Darko 9990

MAJ 2006Sadržaj

1

Page 2: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

Uvod ………………………………………………………………………………………..3

1.1 Definicija skupa instrukcija .......................................................................................... 61.1.1 Format mašinske instrukcije................................................................................ 61.1.2 Skup instrukcija .................................................................................................. 7

1.1.2.1 Instrukcije sabiranja ..................................................................................... 71.1.2.2 Instrukcije oduzimanja ................................................................................. 81.1.2.3 Logičke instrukcije ....................................................................................... 91.1.2.4 Instrukcije za manipulaciju magacinom (stack) ………………………….. 101.1.2.5 Instrukcije za manipulaciju mem lokacijama …………………………….. 101.1.2.6 Instrukcije grananja....................................................................................... 11

1.1.2.6.1 Instrukcija bezuslovnog grananja………………………………... 111.1.2.6.2 Instrukcije uslovnog grananja ……………………………………11

1.1.2.7 Instrukcija za manipulaciju flegom ……………………………………….. 13

1.1.3 Faze izvršavanja instrukcije................................................................................. 14

1.1.3.1 Instrukcije kod kojih faza izvršenja EX traje jedan taktni interval............. 151.1.3.2 Instrukcije kod kojih faza izvršenja EX traje dva taktna intervala.............. 161.1.3.3 Instrukcije kod kojih faza izvršenja EX traje tri taktna intervala……........ 22

1.2 Struktura AdressSima-a……………………………………………………………… 23

1.3 Adresni načini rada........................................................................................................251.3.1 Direktno adresiranje............................................................................................. 251.3.2 Neposredno adresiranje........................................................................................ 271.3.3 Registarsko adresiranje.........................................................................................291.3.4 Implicitno adresiranje.......................................................................................... 311.3.5 Indirektni načini adresiranja................................................................................ 32

1.3.5.1 Indirektno memorijsko adresiranje preko registra............................ 321.3.5.2 Indirektno memorijsko adresiranje preko memorije......................... 34

1.3.6 PC relativno......................................................................................................... 371.3.7 Indeksno................................................................................................................391.3.8 Magacinsko.......................................................................................................... 42

2 Instalacija i pokretanje programa…………………………………………………………442.1 Text Eitor…………………………………………………………………….. 442.2. Asembliranje………………………………………………………………….. 462.3 Praćenje toka izvršavanja programa…………………………………............... 48

2.3.1 Processor Graph prozor……………………………………………… 482.3.2 Register prozor i Register Edit prozor………………………………. 502.3.3 Memory i Memory Edit prozor…………………………………...... 512.3.4 Trace Prozor…………………………………………………………..51

3 Priprema za laboratorijsku vežbu…………………………………………………………533.1 Pokazni primer …………………………………………………………………533.2 Test sekvence sa odovarajućim zadacima ……………………………………. 603.3 Pitanja …………………………………………………………………………. 64

4 Literatura ………………………………………………………………………………....65Uvod

2

Page 3: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

Istorija procesora opšte namene

1950 Rani dizajni

Svaki od dizajna kompjutera u ranim 50-im bio je priča za sebe. Programi pisani na jednoj mašini nisu se izvršavali na drugoj, nebitno da li su proizašli iz iste kompanije. U to vreme to nije predstavljalo značajan nedostatak jer je bilo malo softvera a jos manje ljudi koji su ga pisali.

Sloboda dizajna bila je vrlo značajna u to vreme jer su dizajneri bili vrlo ograničeni elektronskim komponentama koje su postojale u to vreme. Neke od značajnih inovacija u to vreme su indeksni registri (Ferranti Mark I - jednoadresna) , instrukcija čuvanja povratne adrese (UNIVAC I), trenutni operandi (IBM 704) i detekcija netačnih operacija (IBM 650- troadresna mašina).

Kako se bližio kraj 50-ih proizvodjači su na tržište izbacivali fabrički proizvedene kompjutere koji su mogli da se isporučuju putem kamiona i prikolica. Najprodavaniji kompjuter tog doba definitvno je IBM 650 koji je koristio bubanj memoriju (papirna traka i kartice na bušenje). Neke mašine posedovale su i operativnu memoriju koja je znatno ubrzavala rad tih mašina. Takođe su počeli da se prave i hard diskovi.

U to vreme kompjuteri su bili ne više od automatskih mašina za računanje. Uglavnom su se pravili za specifične namene i uglavnom su koristili decimalni kod za razliku od današnjih koji koriste binarni. U principu, te mašine su imale 10 cevi po cifri u svakom registru. Ruski naučnici u to vreme su razvijali tehnologiju koja je koristila 3 cifre 1,0,-1.Takodje, paralelno sa Rusima, američka avijacija je razvijala binarni kod za potrebe ultra- malih (za to vreme) kompjutera.

Kod nula adresnih mašina praktično 'ne postoje' operandi, već samo operatori. To znači da su operandi negde ipak smešteni. Najčešće se oni nalaze na steku. Primer nulaadresnih mašina su FP procesori (procesori za rad u pokretnom zarezu) i digitroni  (džepni kalkulatori).

U vreme 50-ih, Groshov zakon je dominirao kompjuterskim dizajnom. Cena kompjutera se povećavala na kvadrat u zavisnosti od brzine.

1960 Kompjuterska revolucija i CISC

Jedan od glavnih problema sa ranim kompjuterima, kao sto smo već gore rekli, je da programi pisani na jednom nisu radili na drugom iz raznih razloga. Kompjuterske kompanije su uvidele da kupci neće ostati verni proizvodjaču ukoliko na tržište izadje bolji i brži kompjuter druge marke. U ovo vreme cena i performanse su bila jedina dva faktora pri odluci koji kompjuter kupiti.

IBM je 1962. zato probao novi prilaz dizajnu kompjutera. Plan je bio da cela familija kompjutera može da radi na istom softveru a da svaki kompjuter ima razlicite performanse i cenu.Da bi uradili ovako nešto dizajnirali su System 360 (single reference computer). IBM je izabrao da set instrukcija bude vrlo kompleksan i vrlo veliki da bi se pokrilo što je moguće više operacija. Iako je kompjuter bio vrlo kompleksan, kontrolna jedinica koja je sadržala mikroprocesor ostala bi vrlo mala i mogla bi se praviti sa vrlo brzom memorijom. Još jedna bitna činjenica je da je jedna instrukcija mogla da opiše vrlo kompleksnu sekvencu operacija.

3

Page 4: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

S360 je bio naslednik mašina kao što su 7090 i 1401 koje su uglavnom korišćene u naučne svrhe. S obzirom da je set instrukcija bio dizajniran da radi ne samo proste binarne operacije, već je mogao da obradjuje tekst, i binarnu decimalnu aritmetiku mogao je da se primeni i kod računovodstva.

Skoro svi kompjuteri, kasnije izašli, sadržali su ove inovacije u nekom obliku. Osnovni set instrukcija sada se zove COMPLEX INSTRUCTION SET ili CISC.

U mnogim CISC procesorima instrukcija je mogla da ili pristupi registru ili memoriji na nekoliko načina. Ovo je načinilo CISC procesore lakšim za programiranje, jer je programer mogao da popamti od 30 do 100 instrukcija i set od 3 do 10 tipa adresiranja, a ne 1000 različitih instrukcija kao ranije. Ovo se zove ortogonalni set instrukcija. PDP 11 i Motorola 68000 arhitektura su klasični primeri skoro ortogonalnog seta instrukcija.U to vreme i BUNCH je dominirao sa IBM-om .

Burrougs Corporacija (kasnije Unisys) ponudila je alternativu S360 sa njihovom serijom B5000. B5000 je imala virtuelnu memoriju, multi-programibilni operativni sistem (MCP pisan u ALGOL 60) i prvi industrijski kompajler 1963 godine.

1970 Velika skala integracije.

Na pocetku 70-ih godina prvi čip za kalkulator i sat pokazali su da je proizvodnja vrlo malih kompjutera moguća. Prvi mikroprocesor bio je 4004 dizaniran 1971. za potrebe kalkulatora od strane kompanije Buscom. 4004 je direktni potomak Intel-ove serije 80386 procesora. Nekoliko godina kasnije dužina reči 4004 bila je duplirana i proizašao je 8008.

Već sredinom 70-ih upotreba integrisanih kola u proizvodnji kompjutera bila je uobičajena pojava. Cela decenija bila je posvećena smanjivanju cene tranzsistora iz ovih potreba.

Minikompjuteri uglavnom sa 16-bitnom reči i sa 4K do 64K memorije postali su normalna pojava posle uspeha da se ceo CPU smesti na jednu stampanu ploču.

CISC kompjuteri su u to vreme smatrani za najjače kompjutere zbog njihovog mikrokoda koji je bio mali i mogao se smestiti u memoriju velike brzine. U ovo vreme pravili su se i specifično namenski čipovi kao npr. AMD 2900 sa specifičnim mikrokodom.

U ranim 1970-im je razvijen PDP 11 i u to vreme definitivno je predstavljao jedan od najjačih kompjutera. Odmah posle toga su predstavljeni 32-bitni VAX i 36-bitni PDP 10. Takođe za kontrolu krstarećih projektila srednjeg dometa Intel je razvio najjaču verziju 8008 procesora, 8080.

IBM 370 bio je verzija 360 samo modifikovana da radi sa virtuelnim okruženjem. Virtuelno okruženje služilo je za detekciju softverske greške.

Definitvno najprodavaniji kompjuter u to vreme bio je Burroughs B5000. B6000 I B7000 serija bila je najprodavanija. Programiranje se vršilo u dialektu Algola. Koristili su 64- bitnu fiksnu aritmetiku, a ne floating point.

1980. Počeci RISC-a

Istraživači u UC Berkliju u ranim 1980-im i IBM-ovi istraživači otkrili su da uglavnom svi kompajleri koriste mali podset instrukcija CISC procesora. Veći deo snage CPU je prosto stajao neiskorišćen u realnom radu. Shvatili su da pravljenje prostijeg i manje ortogonalnog procesora rezultira da kompjuteri mogu da rade brže i da budu jeftiniji.

4

Page 5: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

U isto vreme razni proizvodjači eksperimentisali su sa velikim setom internih registara. Ideja je bila da se “keširaju” trenutni rezultati koje kontroliše kompajler. Ovo bi takođe smanjilo broj adresiranja i smanjilo ortogonalnost procesora. Kompjuteri bazirani na ovoj teoriji zvali su se Reduced Instruction Set Computers (kompjuteri sa smanjenim setom instrukcija) ili RISC. RISC su uglavnom imali veliki broj registara kojima su pristupale prostije instrukcije. Odredjeni broj instrukcija služio je da se podaci direktno učitavaju i stoje u memoriji. Rezultat je bio procesor sa vrlo ogoljenim jezgrom koji je radio na velikoj brzini i podržavao odredjen broj operacija koje je podržavao kompajler.

Jedan od nedostataka RISC dizajna bio je taj da su programi koji su se izvršavali na njima bili veliki. Ovo je posledica kompajlera koji su morali da generišu duže sekvence od prostijih instrukcija da postignu iste rezultate kao CISC. Današnji računari su prividno (interno) dvoadresni, a eksterno jednoadresni, jer asemblerske instrukcije imaju samo jedan memorijski argument, a ostalo su konstante i lokalni registri. Kada nemate troadresnu mašinu, treba vam puno registara! To je imperativ kom se povinuju svi današnji 64 RISC procesori, ali kod CISC-a je ovo bio problem. AMD je ovo prevazišao uz zadržavanje kompatibilnosti sa postojećom bazom programa.

Pošto ove instrukcije uglavnom treba učitati iz memorije potrebno je bilo dizajnirati brže upravljanje memorijom.

5

Page 6: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

1.1 Definicija skupa instrukcija

AdressSim je jednoadresna 16-bitna mašina koja podržava osam načina adresiranja. Obim adresne magistrale je 16 bitova (može da se adresira do 216 memorijskih lokacija) s tim što polje operanda ima 9 bitova pa se direktnim adresiranjem može pokriti 512 memorijskih lokacija.

1.1.1 Format mašinske instrukcije

Format mašinske instrukcije AdressSim-a je prikazan na Slici 1:

opkod modifikator operandX X X X Y Y Y A A A A A A A A Ad15 d12 d11 d10 d9 8 d0

Slika 1. Format instrukcije

gde su: d15 ÷ d12 – četiri bita koja označavaju kôd instrukcije ( opkôd ) d11 ÷ d9 – tri bita koja se odnose na načine adesiranja ( modifikator M ) d8 ÷ d0 – devet bitova koji predstavljaju polje operand

instrukcija opkôd polje opis instrukcije

NOP 0000 No OperationJMP 0001 bezuslovno grananje (skok)JX 0010 uslovno grananje

PUSH 0011 stavi u magacinPOP 0100 izvadi iz magacinaST 0101 smesti na lokacijuLD 0110 pribaci sa lokacije

CLC 0111 obriši keriINC 1000 inkremetntiranje akumulatoraDEC 1001 dekrementitanje akumulatoraNOT 1010 logička ne operacijaNEG 1011 komplementiranjeOR 1100 logička or operacija

AND 1101 logička AND operacijaADD 1110 aritmetička operacija sabiranjaSUB 1111 aritmetička operacija oduzimanja

Tabela 1. Instrukcije procesora sa definisanim opkôd poljem

Tabela 2. se odnosi na definiciju polja modifikatora M.

6

Page 7: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

Modifikator M Način adresiranja000 direktno001 neposredno010 registarsko011 implicitno100 indirektno adresiranje101 PC relativno110 indeksno111 magacinsko

Tabela 2. Značenje polja modifikatora M

1.1.2. Skup instrukcija

NOP

Opkod – 0000Operacija – nema operacije

NOP je operacija bez efekta, inkrementira se sadržaj programskog brojača, a program nastavlja sa izvršenjem.

Izvršenje ove instrukcije nema efekat na postavljanje statusnih markera.

1.1.2.1 Instrukcije sabiranja

ADD D (eng. add - saberi) 

Opkod – 1110Operacija – operand + akumulator → akumulator

Instrukcija Način adresiranja tokADD 5 Direktno AC←AC+MEM[5]ADD #22 Neposredno AC←AC+22ADD R6 Registarsko AC←AC+R6ADD @R1 Indirektno preko registara AC←AC+MEM[R1]ADD @12 Indirektno preko memorije AC←AC+MEM[12]ADD $15h PC relativno AC←AC+MEM[PC+21]ADD %20 Indeksno AC←AC+MEM[IND+20]

INC D (eng. inerement - inkrementiraj, uvećaj za 1)  - D+1 D

7

Page 8: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

Opkod – 1000Operacija – akumulator + 1 → akumulator

Instrukcijom INC inkrementiramo sadržaj akumulatora. CARRY – postavlja se na 1 ako se nakon izvršavanja operacije javio bit prenosa,SIGN – postavlja se na 1 ako je MS bit rezultata jednak 1, inače ako je MS bit

rezultata operacije OR jednak 0 ovaj marker se postavlja na vrednost 0.ZERO – postavlja se na 1 ako je rezultat 0, inače se postavlja na 0.

1.1.2.2 Instrukcije oduzimanja

SUB D (eng. subtract - oduzmi) 

Opkod – 1111Operacija –akumulator - operand → akumulator

Instrukcija Način adresiranja tokSUB 5 Direktno AC←AC-MEM[5]SUB #22 Neposredno AC←AC-22SUB R6 Registarsko AC←AC-R6SUB @R1 Indirektno preko registara AC←AC-MEM[R1]SUB @15 Indirektno preko memorije AC←AC-MEM[15]SUB $15h PC relativno AC←AC-MEM[PC+21]SUB %20 Indeksno AC←AC-MEM[IND+20]

DEC  (eng. decrement - dekrementiraj, umanji za 1) 

Opkod – 1001Operacija – akumulator - 1 → akumulator

Instrukcijom DEC dekrementiramo sadržaj akumulatora. CARRY – postavlja se na 1 ako se nakon izvršavanja operacije javio bit prenosa,SIGN – postavlja se na 1 ako je MS bit rezultata jednak 1, inače ako je MS bit

rezultata operacije OR jednak 0 ovaj marker se postavlja na vrednost 0.ZERO – postavlja se na 1 ako je rezultat 0, inače se postavlja na 0.

NEG D (eng. negate - negiraj, promeni znak) -

Opkod – 1011

Intrukcija NEG vrši promenu znaka operanda. Instrukcija u odredišni operand smešta potpuni komplement broja.

8

Page 9: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

Početno stanje:al: 0 0 0 0 0 1 0 1 = 5

NEG ALal: 1 1 1 1 1 0 1 0 = -5

1.1.2.3 Logičke instrukcije

Ova grupa instrukcija izvodi logičke operacije nad parovima odgovarajućih bitova operanada, a rezultat se smešta u odredišni operand.

AND D (eng. and - i) 

Opkod – 1100 Operacija – operand i akumulator → akumulator

Instrukcijom AND se izvršava logička I operacija nad izvorišnim operandom specificiranim instrukcijom i odredišnim operandom AC, a rezultat se smešta u AC. U zavisnosti od načina adresiranja sreću se sledeće varijante:

Instrukcija Način adresiranja TokAND 5 Direktno AC←AC and MEM[5]AND #22 Neposredno AC←AC and 22AND R6 Registarsko AC←AC and R6AND @R1 Indirektno preko reg. AC←AC and MEM[R1]AND @24 Indirektno preko mem. AC←AC and MEM[24]AND $15h PC relativno AC←AC and MEM[PC+21]AND %20 Indeksno AC←AC and MEM[IND+20]

OR D, (eng. or - ili) .

Opkod – 1100 Operacija – operand ili akumulator → akumulator

Instrukcijom OR se izvršava logička ILI operacija nad izvorišnim operandom specificiranim instrukcijom i odredišnim operandom AC, a rezultat se smešta u AC. U zavisnosti od načina adresiranja sreću se sledeće varijante:

Instrukcija Način adresiranja TokOR 5 Direktno AC←AC or MEM [5]OR #1Fh Neposredno AC←AC or 31OR R3 Registarsko AC←AC or R3OR @R7 Indirektno preko reg. AC←AC or MEM[R7]OR @4 Indirektno preko mem. AC←AC or MEM[4]OR $15h PC relativno AC←AC or MEM[PC+21]OR %20 Indeksno AC←AC or MEM[IND+20]

9

Page 10: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

NOT D (eng. not - ne) 

Opkod – 1010Operacija – akumulator → akumulator

Instrukcijom NOT se izvršava logička operacija negacije nad sadržajem AC, a rezultat se smešta u AC.

1.1.2.4 Instrukcije za manipulaciju sa magacinom (stack)

PUSH S (eng. push - gurni) - S stek. Izvorni operand se smešta na stek.

Opkod – 0011Operacija – akumulator → Memorija

POP D (eng. pop - skini) - stek D. Vrednost sa vrha steka se smešta u odredišni operand.

Opkod – 0100Operacija – Memorija → akumulator

1.1.2.5 Instrukcije za manipulaciju memorijskim lokacijama

ST D (eng. store- smesti). Instrukcijom za prenos podataka ST se izvršava operacija učitavanja sadržaja akumulatora u memorijsku lokaciju specificiranu instrukcijom. Izvršenje ove instrukcije nema uticaj na postavaljanje statusnih markera.

Opkod – 0101Operacija – akumulator → Memorija

LD D (eng. load – učitaj). Instrukcijom za prenos podataka LD se izvršava operacija upisivanja sadržaja izvorišnog operanda specificiranog instrukcijom u akumulator .

Instrukcija Način adresiranja TokST 1 Direktno AC→MEM[1]ST R0 Registarsko AC→R0ST @R0 Indirektno preko reg. AC→MEM[R0]ST @65 Indirektno preko mem. AC→MEM[65]ST $1 PC relativno AC→MEM[PC+1]ST %0Ch Indeksno AC→MEM[IND+12]

10

Page 11: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

Opkod – 0110Operacija – Memorija → akumulator

U zavisnosti od načina adresiranja srećemo sledeće varijante:

1.1.2.6 Instrukcije grananja

Instrukcije grananja omogućavaju grananje toka izvršenja programa u zavisnosti od uslova koji je postavljen u samoj naredbi. Postoje naredbe bezuslovnog i uslovnog skoka.

1.1.2.6.1 Instrukcija bezuslovnog skoka

JMP D (eng. jump - skok) - Instrukcijom JMP se izvršava operacija bezuslovnog grananja (skoka) na memorijsku lokaciju speificiranu operandom.

Izvršenje ove instrukcije nema efekat na postavljanje statusnih markera.

Opkod – 0001

1.1.2.6.2 Instrukcije uslovnog skoka

JX predstavlja naredbe uslovnog skoka. U zavisnosti od operanda moguće je realizovati sledeće naredbe:

Naredba Opkod ModifikatorJZ (jump if zero) 0010 000JNZ (jump if not zero) 0010 001JC (jump if carry) 0010 010JNC (jump if not carry) 0010 011JS (jump if sign) 0010 100JNS (jump if not sign) 0010 101

JZ (jump if zero)

Instrukcija Način adresiranja TokLD 0Ah Direktno MEM[10]→ACLD #12 Neposredno 12→ACLD R4 Registarsko R4→ACLD @R4 Indirektno preko reg. MEM[R4]→ACLD @556 Indirektno preko mem. MEM[556]→ACLD $20 PC relativno MEM[PC+20]→ACLD %12 Indeksno MEM[IND+12]→AC

11

Page 12: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

Opkod – 0010Modifikator - 000 if ZERO = {1} then (operand) → PC else continue

Instrukcijom JZ se izvršava operacija uslovnog grananja (skoka) na memorijsku lokaciju specificiranu instrukcijom ako je marker ZERO postavljen na {1}.

Izvršenje ove instrukcije nema efekat na postavljanje statusnih markera.

JNZ (jump if not zero)

Opkod – 0010Modifikator - 001 if ZERO = {0} then (operand) → PC else continue

Instrukcijom JNZ se izvršava operacija uslovnog grananja (skoka) na memorijsku lokaciju specificiranu instrukcijom ako je marker ZERO postavljen na {0}.

Izvršenje ove instrukcije nema efekat na postavljanje statusnih markera.

JC (jump if carry)

Opkod – 0010Modifikator - 010 if CARRY = {1} then (operand) → PC else continue

Instrukcijom JC se izvršava operacija uslovnog grananja (skoka) na memorijsku lokaciju specificiranu instrukcijom ako je marker CARRY postavljen na {1}.

Izvršenje ove instrukcije nema efekat na postavljanje statusnih markera.

JNC (jump if not carry)

Opkod – 0010Modifikator - 011 if CARRY = {0} then (operand) → PC else continue

Instrukcijom JNC se izvršava operacija uslovnog grananja (skoka) na memorijsku lokaciju specificiranu instrukcijom ako je marker CARRY postavljen na {0}.

Izvršenje ove instrukcije nema efekat na postavljanje statusnih markera.

JS (jump sign)

Opkod – 0010Modifikator - 100 if SIGN = {1} then (operand) → PC else continue

12

Page 13: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

Instrukcijom JS se izvršava operacija uslovnog grananja (skoka) na memorijsku lokaciju specificiranu instrukcijom ako je marker SIGN postavljen na {1}.

Izvršenje ove instrukcije nema efekat na postavljanje statusnih markera.

JNS (jump not sign)

Opkod – 0010Modifikator - 101 if SIGN = {0} then (operand) → PC else continue

Instrukcijom JNS se izvršava operacija uslovnog grananja (skoka) na memorijsku lokaciju specificiranu instrukcijom ako je marker SIGN postavljen na {0}.

Izvršenje ove instrukcije nema efekat na postavljanje statusnih markera.

1.1.2.7 Instrukcija za manipulaciju flegom

Opkod - 0111

CLC (eng. Clear carry – poništi carry fleg) - Instrukcijom za manipulaciju sa flegovima se fleg prenosa (carry flag) postavlja na 0.

13

Page 14: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

1.1.3 Faze izvršavanja instrukcije

Kao što je prikazano na Slici 2 program koji izvršava procesor čini skup instrukcija (1 < I < N). U opštem slučaju izvršenje instrukcije može se podeliti na dve faze, fazu pribavljanja, FETCH, koja uključuje ciklus pribavljanja i dekodiranja instrukcije, i fazu izvršenja, EX. Svaku od faza čini veći broj koraka koji mogu da uključe paralelno izvršenje većeg broja mikrooperacija. Mikrooperacije su atomizirane akcije, tj. elementarne operacije koje se ne mogu dalje razbijati.

Faza pribavljanja, FETCH, je identična za sve instrukcije. Faza dekodiranja se odnosi na određivanje tipa instrukcije i smatra se da je to aktivnost tipa višestruko-grananje (multi-way branch), i obavlja se trenutno (zbog toga je na Slici 1 njeno vreme trajanja nula). Faza EX je različita za sve tipove instrukcija.

Slika 2. Nivoi izvršavanja programa

U konkretnom slučaju fazu FETCH čine sledeća tri koraka:

FETCH1 : MAR ← PCFETCH2 : MDR ← M , PC ← PC + 1FETCH3 : IR ← MDR[15:10] , MAR ← MDR[9:0]

gde su FETCH1, FETCH2 i FETCH3 koraci, a aktivnosti tipa MAR ← PC , PC ← PC + 1, itd. predstavljaju mikrooperacije.

U koraku FETCH1 sadržaj programskog brojača, PC, se upisuje u memorijsko adresni registar, MAR. Adresira se memorija MEM i generiše signal Read .

U koraku FETCH2 čita se sadržaj adresirane memorijske lokacije i upisuje u registar MDR. Istovremeno se sadržaj PC-a inkrementira sa ciljem da ukaže na narednu lokaciju u memoriji kojoj treba pristupiti.

PROGRAM

INSTRUKCIJA NINSTRUKCIJA 2INSTRUKCIJA 1nivo

instrukcija

nivoprograma

nivofaze FETCH EX FETCH EX FETCH EX

nivomikrooperacija

14

Page 15: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

U koraku FETCH3 delimični sadržaj registra MDR, bitovi d15 ÷ d10 se upisuju u instrukcioni registar, IR, dok se LS bitovi d9 ÷ d0 registra MDR upisuju u MAR.

Radi pojednostavljenja usvaja se da se svaki od koraka FETCH1, FETCH2 i FETCH3 obavlja za jedan taktni interval što znači da se faza pribavljanja izvršava za tri taktna intervala.

Aktivnost dekodiranje instrukcije smatraćemo da se za sve instrukcije izvršava trenutno.

Broj mikrooperacija u fazi izvršenja, EX, zavisi od tipa instrukcija i adresnog načina rada.

Radi bolje ilustracije principa rada procesora, u daljem tekstu, slikovito ćemo ukazati na načine izvršenja različitih tipova instrukcija polazeći od broja taktnih intervala potrebnih da se obavi faza izvršenja instrukcije EX.

1.1.3.1 Instrukcije kod kojih faza izvršenja EX traje jedan taktni interval

Skup instrukcija kod kojih faza izvršenja EX traje jedan taktni interval (jedan korak) prikazan je na Slici 3 a). Broj mikrooperacija u okviru faze EX u zavisnosti od tipa instrukcije može biti različit (vidi Sliku 3 b)).

a) Aktivnosti kod izvršenja instrukcija

NOT AC ← not AC NEG AC ← - AC JMP PC ← MAR JX if (zero, sign, carry) = (0,1) then PC ← MAR else

continue INC AC ← AC + 1 ST M[MAR] ← AC NOP no operation

b) Mikrooperacije kod različitih tipova instrukcija

Slika 3. Aktivnosti u toku faza FETCH i EX kod instrukcija kada faza EX traje jedan korak

JX INCJMPNOT ST

FETCH2

FETCH1

IR = 0010 IR = 0110 IR = 0111 IR = 0010 IR = 1000 IR = 0101 IR = 0000

NEG

cikluspribavljanja

ciklusdekodiranja

ciklusizvršenja EX!

NOP

FETCH3

15

Page 16: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

1.1.3.2 Instrukcije kod kojih faza izvršenja EX traje dva taktna intervala

Na Slici 4 prikazana je grupa instrukcija čija faza izvršenja traje dva taktna intervala. Slika 4 a) se odnosi na aktivnosti instrukcija koje koriste neposredni način adresiranja, a Slika 4 b) na mikrooperacije u fazi EX za ovaj način adresiranja.

a) Aktivnosti kod izvršenja instrukcija

OR1# MAR ← PC OR2# AC ← AC or MDR AND1# MAR ← PC AND2# AC ← AC and MDR ADD1# MDR ← PC ADD2# AC ← AC + MDR SUB1# MDR ← PC SUB2# AC ← AC - MDR LD1# MDR ← PC LD2# AC ← MDR

b) Mikrooperacije kod različitih tipova instrukcija

Slika 4. Aktivnosti u toku faza FETCH i EX kod instrukcija kada faza EX traje dva koraka

FETCH 3

ADD1# SUB1#AND1# LD1#

FETCH 2

FETCH 1

IR = 1100 IR = 1101 IR = 1110 IR = 1111 IR = 0110

OR1#

cikluspribavljanja

ciklusdekodiranja

ciklusizvršenjaOR2# AND2# ADD2# SUB2# LD2#

16

Page 17: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

Slika 5 a) se odnosi na aktivnosti instrukcija koje koriste direktni način adresiranja, a Slika 5 b) na mikrooperacije u fazi EX za direktno memorijski način adresiranja.

a) Aktivnosti kod izvršenja instrukcija

OR1 MDR ← M[operand] OR2 AC ← AC or MDR AND1 MDR ← M[operand] AND2 AC ← AC and MDR ADD1 MDR ← M[operand] ADD2 AC ← AC + MDR SUB1 MDR ← M[operand] SUB2 AC ← AC - MDR LD1 MDR ← M[operand] LD2 AC ← MDR

b) Mikrooperacije kod različitih tipova instrukcija

Slika 5. Aktivnosti u toku faza FETCH i EX kod instrukcija kada faza EX traje dva koraka

FETCH 3

ADD1 SUB1AND1 LD1

FETCH 2

FETCH 1

IR = 1100 IR = 1101 IR = 1110 IR = 1111 IR = 0110

OR1

cikluspribavljanja

ciklusdekodiranja

ciklusizvršenjaOR2 AND2 ADD2 SUB2 LD2

17

Page 18: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

Slika 6 a) se odnosi na aktivnosti instrukcija koje koriste registarski način adresiranja, a Slika 6 b) na mikrooperacije u fazi EX za registarski način adresiranja.

a) Aktivnosti kod izvršenja instrukcija

OR1R MDR ← REG[operand[1:0]] OR2R AC ← AC or MDR AND1R MDR ← REG[operand[1:0]] AND2R AC ← AC and MDR ADD1R MDR ← REG[operand[1:0]] ADD2R AC ← AC + MDR SUB1R MDR ← REG[operand[1:0]] SUB2R AC ← AC - MDR LD1R MDR ← REG[operand[1:0]] LD2R AC ← MDR

b) Mikrooperacije kod različitih tipova instrukcija

Slika 6. Aktivnosti u toku faza FETCH i EX kod instrukcija kada faza EX traje dva koraka

Na Slici 7 prikazana je grupa instrukcija čija faza izvršenja traje dva taktna intervala. Slika 7 a) se odnosi na aktivnosti instrukcija koje koriste PC relativan način adresiranja, a Slika 7 b) na mikrooperacije u fazi EX za ovaj način adresiranja.

FETCH 3

ADD1R SUB1RAND1R LD1R

FETCH 2

FETCH 1

IR = 1100 IR = 1101 IR = 1110 IR = 1111 IR = 0110

OR1R

cikluspribavljanja

ciklusdekodiranja

ciklusizvršenjaOR2R AND2R ADD2R SUB2R LD2R

18

Page 19: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

a) Aktivnosti kod izvršenja instrukcija

OR1$ MAR ← PC + IR[9:0] OR2$ AC ← AC or M[MAR] AND1$ MAR ← PC + IR[9:0] AND2$ AC ← AC and M[MAR] ADD1$ MAR ← PC + IR[9:0] ADD2$ AC ← AC + M[MAR] SUB1$ MAR ← PC + IR[9:0] SUB2$ AC ← AC - M[MAR] LD1$ MAR ← PC + IR[9:0] LD2$ AC ← M[MAR]

b) Mikrooperacije kod različitih tipova instrukcija

Slika 7. Aktivnosti u toku faza FETCH i EX kod instrukcija kada faza EX traje dva koraka

Na Slici 8 prikazana je grupa instrukcija čija faza izvršenja traje dva taktna intervala. Slika 8 a) se odnosi na aktivnosti instrukcija koje koriste indeksni način adresiranja, a Slika 8 b) na mikrooperacije u fazi EX za ovaj način adresiranja.

FETCH 3

ADD2$ SUB2$AND2$ LD2$

FETCH 2

FETCH 1

IR = 1100 IR = 1101 IR = 1110 IR = 1111 IR = 0110

OR2$

cikluspribavljanja

ciklusdekodiranja

ciklusizvršenja

OR1$ AND1$ ADD1$ SUB1$ LD1$

19

Page 20: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

a) Aktivnosti kod izvršenja instrukcija

OR1% : MAR ← IND + IR[9:0] OR2% : AC ← AC or M[MAR] AND1% : MAR ← IND + IR[9:0] AND2% : AC ← AC and M[MAR] ADD1% : MAR ← IND + IR[9:0] ADD2% : AC ← AC + M[MAR] SUB1% : MAR ← IND + IR[9:0] SUB2% : AC ← AC - M[MAR] LD1% : MAR ← PC + IR[9:0]

LD2% : AC ← M[MAR]

b) Mikrooperacije kod različitih tipova instrukcija

Slika 8. Aktivnosti u toku faza FETCH i EX kod instrukcija kada faza EX traje dva koraka

Na Slici 9 prikazana je grupa instrukcija čija faza izvršenja traje tri taktna intervala. Slika 9 a) se odnosi na aktivnosti instrukcija koje koriste indirektno memorijski način adresiranja preko registra, a Slika 9 b) na mikrooperacije u fazi EX za ovaj način adresiranja.

FETCH 3

ADD2% SUB2%AND2% LD2%

FETCH 2

FETCH 1

IR = 1100 IR = 1101 IR = 1110 IR = 1111 IR = 0110

OR2%

cikluspribavljanja

ciklusdekodiranja

ciklusizvršenja

OR1% AND1% ADD1% SUB1% LD1%

20

Page 21: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

a) Aktivnosti kod izvršenja instrukcija

OR1@R MAR ← R[operand[1:0]] OR2@R AC ← AC or MDR AND1@R MAR ← R[operand[1:0]] AND2@R AC ← AC and MDR ADD1@R MAR ← R[operand[1:0]] ADD2@R AC ← AC + MDR SUB1@R MAR ← R[operand[1:0]] SUB2@R AC ← AC - MDR LD1@R MAR ← R[operand[1:0]] LD2@R AC ← MDR

b) Mikrooperacije kod različitih tipova instrukciji

Slika 9. Aktivnosti u toku faza FETCH i EX kod instrukcija kada faza EX traje dva koraka

FETCH 3

ADD2@R SUB2@RAND2@R LD2@R

FETCH 2

FETCH 1

IR = 1100 IR = 1101 IR = 1110 IR = 1111 IR = 0110

OR2@R

cikluspribavljanja

ciklusdekodiranja

ciklusizvršenja

OR1@R AND1@R ADD1@R SUB1@R LD1@R

21

Page 22: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

1.1.3.3 Instrukcije kod kojih faza izvršenja EX traje tri taktna intervala

Na Slici 10 prikazana je grupa instrukcija čija faza izvršenja traje tri taktna intervala. Slika 10 a) se odnosi na aktivnosti instrukcija koje koriste indirektno memorijski način adresiranja preko memorije, a Slika 10 b) na mikrooperacije u fazi EX za ovaj način adresiranja.

a) Aktivnosti kod izvršenja instrukcija

OR1@M MAR ← R[operand[1:0]] OR2@M MDR ← MEM[MAR] OR3@M AC ← AC or MDR AND1@M MAR ← R[operand[1:0]] AND2@M MDR ← MEM[MAR] AND3@M AC ← AC and MDR

ADD1@M MAR ← R[operand[1:0]] ADD2@M MDR ← MEM[MAR] ADD3@M AC ← AC + MDR SUB1@M MAR ← R[operand[1:0]] SUB2@M MDR ← MEM[MAR] SUB3@M AC ← AC - MDR LD1@M MAR ← R[operand[1:0]] LD2@M MDR ← MEM[MAR] LD3@M AC ← MDR

b) Mikrooperacije kod različitih tipova instrukciji

Slika 10. Aktivnosti u toku faza FETCH i EX kod instrukcija kada faza EX traje tri koraka

FETCH 3

ADD2@M SUB2@MAND2@M LD2@M

FETCH 2

FETCH 1

IR = 1100 IR = 1101 IR = 1110 IR = 1111 IR = 0110

OR2@M

cikluspribavljanja

ciklusdekodiranja

ciklusizvršenja

OR3@M AND3@M ADD3@M SUB3@M LD3@M

OR1@M AND1@M ADD1@M SUB1@M LD1@M

22

Page 23: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

1.2 Struktura AdressSima-a

Struktura sistema AdressSim prikazana je na Slici 11. Kao što se vidi sa slike šema predstavlja jednoadresni procesor sa neophodnim registrima. Ceo sistem je povezan 16-bitnim magistralama (A i B).

Slika 11

Registri su sastavni delovi AdressSim -a. U zavisnosti od namene mogu se podeliti u sledeće dve grupe:

1) Korisničko vidljivi registri, u ovu grupu spadaju sledeći registri:AC – 16-bitni registar nazvan akumulator (Accumulator – AC),

R0, R1, … R7 – osam 16-bitnih registara opšte namene (General Purpose Registers - Rx)

IND - 16-bitni indeksni registar

SP – Stek pointer ili pokazivač magacina

2) Upravljački i statusni registri, u ovu grupu spadaju sledeći registri:

23

Page 24: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

PC – 16-bitni programski brojač (Program Counter – PC): čuva adresu naredne instrukcije koja treba da se pribavi iz memorije;

MAR – 16-bitni adresni registar (Memory Address Register – MAR): predaje adrese memoriji preko adresnih linija;

MDR – 16-bitni registar podataka (Memory Data Register – MDR): predstavlja privremeni dvosmerni bafer podataka preko koga se prenose svi podaci iz/ka MEM ka/iz AdressSim -a.

PSW – trobitni statusni registar (Program Status Word – PSW): čine ga sledeći markeri koji se uvek postavljaju na logičku {0} ili {1}, nakon izvršenja aritmetičkih ili logičkih operacija:

CARRY (prenos) – postavlja se na logičku {1} ako se izvršenjem operacije javio prenos kod operacije sabiranja, ili je došlo do pozajmljivanja kod operacije oduzimanja, na mestu bita najveće težine,

SIGN (znak) – odgovara bitu znaka rezultata dobijen zadnjom operacijom,

ZERO (nula) – postavlja se na logičku {1} kada je rezultat operacije jednak 0,

IR – 16-bitni instrukcioni registar (Instruction Register – IR): čuva opkôd polje koje je deo kôda instrukcije, kao i polje modifikator M koji ukazuje na način adresiranja.

24

Page 25: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

1.3 Adresni načini rada

Svakom operandu instrukcije pridružuje se podatak. Podatak može biti lociran u memoriji, AdressSim-ovim registrima (R0, .. R7) ili da predstavlja deo instrukcije (neposredni operand). Da bi izvršio instrukciju, procesor treba da pribavi tekuću vrednost podatka. Lokacija na kojoj se nalazi podatak može se specifirati na nekoliko načina. Specifikaciju lokacije operanda nazivamo način adresiranja. U zavisnosti od toga na koji način se obavlja specifikacija kažemo da postoje nekoliko različitih načina adresiranja. Za konkretni slučaj, AdressSim podržava sledeće načine adresiranja:

1. direktno;2. neposredno;3. implicitno;4. registarsko;5. indrektno memorijsko (preko registara i preko memorije);6. PC relativno;7. indeksno;8. magacinsko.

1.3.1 Direktno adresiranje

Kod direktnog načina adresiranja polje operand (vidi Sliku.12) specificira adresu memorijske lokacije koja odgovara podatku kome se pristupa. Naime, adresni deo instrukcije predstavlja adresu na osnovu koje se vrši obraćanje memoriji, pa se zbog toga ova adresa naziva direktna adresa. U konkretnom slučaju polje operanda je 9-bitno što znači da se može adresirati memorija kapaciteta 512 lokacija.

Prednost ovakvog načina adresiranja je jednostavnost izvođenja, a nedostatak ograničeni adresni opseg.

Kod direktnog adresiranja modifikator M ima vrednost 000.

opkod M operandX X X X 0 0 0 A A A A A A A A A

Slika 12. Format instrukcije kod direktnog adresiranja

Primenljivo je na operacije LD, ST, ADD, SUB, AND, OR.

Primeri: Ako je početna vrednost akumulatora AC = 10, memorijske lokacije M[12] = 25, sadržaj akumulatora AC i markera statusa (CARRY, SIGN, ZERO) nakon pojedinačnog izvršenja svake od sledećih instrukcija je:

LD 12

M[12] → AC

M[12] = (25)dec = (0000 0000 0001 1001)bin

AC = (10)dec = (0000 0000 0000 1010)bin

25

Page 26: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

AC = 0000 0000 0001 1001CARRY = 0 SIGN = 0ZERO = 0

ST 12

AC → M[12]

M[12] = (25)dec = (0000 0000 0001 1001)bin

AC = (10)dec = (0000 0000 0000 1010)bin

M[12] = 0000 0000 0000 1010CARRY = 0 SIGN = 0ZERO = 0

ADD 12

AC + M[12] → AC

M[12] = (25)dec = (0000 0000 0001 1001)bin

AC = (10)dec = (0000 0000 0000 1010)bin

0000 0000 0000 1010 + 0000 0000 0001 1001 = 0000 0000 0010 0011

AC = 0000 0000 0010 0011CARRY = 0 SIGN = 0ZERO = 0

SUB 12

AC - M[12] → AC

M[12] = (25)dec = (0000 0000 0001 1001)bin

AC = (10)dec = (0000 0000 0000 1010)bin

0000 0000 0000 1010 - 0000 0000 0001 1001 = 1111 1111 1111 0001

AC = 1111 1111 1111 0001CARRY = 1 SIGN = 1ZERO = 0

AND 12

AC M[12] → AC

M[12] = (25)dec = (0000 0000 0001 1001)bin

26

Page 27: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

AC = (10)dec = (0000 0000 0000 1010)bin

0000 0000 0000 1010 0000 0000 0001 1001 = 0000 0000 0000 1000

AC = 0000 0000 0000 1000CARRY = 0SIGN = 0ZERO = 0

OR 12

AC M[12] → AC

M[12] = (25)dec = (0000 0000 0001 1001)bin

AC = (10)dec = (0000 0000 0000 1010)bin

0000 0000 0000 1010 0000 0000 0001 1001 = 0000 0000 0001 1011

AC = 0000 0000 0001 1011CARRY = 0SIGN = 0ZERO = 0

1.3.2 Neposredno adresiranje

Kod neposrednog adresiranja adresni deo instrukcije (polje operand – vidi Sliku 13) specificira vrednost operanda, tj. operand je konstanta i sastavni je deo instrukcije. Osnovne karakteristike neposrednog načina adresiranja su:

Koristi se da definiše konstante, ili da postavi na inicijalne vrednosti promenljive u programu. Obično, brojevi se memorišu u prezentaciji dvoičnog komplementa. Bit najveće težine u polju operanda se koristi kao bit znaka. Kada se operand puni u registar, vrši se znakovno proširenje do obima koji odgovara punoj reči.

Operand se pribavlja u CPU u trenutku kada se pribavlja i instrukcija; na ovaj način se štedi jedan memorijski ili keš ciklus po instrukciji.

Kod neposrednog adresiranja polje modifikator M ima vrednost 001.

opkod M operandX X X X 0 0 1 A A A A A A A A A

Slika 13. Format instrukcije kod neposrednog adresiranja

Primenljivo je na operacijama: LD, OR, AND, ADD, SUB,

Primeri: Ako je početna vrednost akumulatora AC = 10, sadržaj akumulatora AC i markera statusa (CARRY, SIGN, ZERO) nakon pojedinačnog izvršenja svake od sledećih instrukcija je:

27

Page 28: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

LD #15

15 → AC

(15)dec = (0000 0000 0000 1111)bin

AC: (10)dec = (0000 0000 0000 1010)bin

AC = 0000 0000 0000 1111CARRY = 0 SIGN = 0ZERO = 0

OR #15

15 AC → AC

(15)dec = (0000 0000 0000 1111)bin

AC: (10)dec = (0000 0000 0000 1010)bin

0000 0000 0000 1111 0000 0000 0000 1010 = 0000 0000 0000 1111

AC = 0000 0000 0000 1111CARRY = 0 SIGN = 0ZERO = 0

AND #15

15 AC → AC

(15)dec = (0000 0000 0000 1111)bin

AC: (10)dec = (0000 0000 0000 1010)bin

0000 0000 0000 1111 0000 0000 0000 1010 = 0000 0000 0001 1001

AC = 0000 0000 0001 1001CARRY = 0 SIGN = 0ZERO = 0

ADD #15

15 + AC → AC

(15)dec = (0000 0000 0000 1111)bin

AC: (10)dec = (0000 0000 0000 1010)bin

0000 0000 0000 1111 + 0000 0000 0000 1010 = 0000 0000 0001 1001

AC = 0000 0000 0001 1001CARRY = 0 SIGN = 0

28

Page 29: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

ZERO = 0

SUB #15

AC - 15 → AC

(15)dec = (0000 0000 0000 1111)bin

AC: (10)dec = (0000 0000 0000 1010)bin

0000 0000 0000 1010 - 0000 0000 0000 1111 = 1111 1111 1111 1011

AC = 1111 1111 1111 1011CARRY = 1 SIGN = 1ZERO = 0

1.3.3 Registarsko adresiranje

Kod registarskog adresiranja, odgovarajućim poljem operanda (vidi Sliku 14 ) se specificira registar u kome je smešten operand.

Prednosti registarskog adresiranja su: Adresno polje instrukcije kojim se specificira registar je malo i obima je nekoliko

bitova. U konkretnom slučaju u polju operand od važnosti su samo tri (četiri) LS bita. Bitovi polja operand označeni sa “-“ nisu od važnosti. Dekodiranjem zadnja tri LS bita vrši se selekcija registara shodno sledećoj tabeli:

AAA Selekcija registra000 R0001 R1...

111 R7

1000 INDEKSNI REGISTAR

Tabela 3

Ne vrši se obraćanje memoriji; Instrukcije koje manipulišu sa sadržajem registra brzo se izvršavaju.

Kod registarskog adresiranja modifikator M ima vrednost 010.

Opkod M operandX X X X 0 1 0 - - - - - A A A A

29

Page 30: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

Slika 14

Primenljivo je na naredbe ST, LD, OR, AND, ADD, SUB

Primer: Ako je početna vrednost akumulatora AC = 30h, registra opšte namene R3 = 100, sadržaj akumulatora AC i markera statusa (CARRY, SIGN, ZERO) nakon pojedinačnog izvršenja svake od sledećih instrukcija je:

ST R3

AC → R3

AC: (30)hex = (0000 0000 0011 0000)bin

R3: (100)dec=(0000 0000 0110 0100)bin

AC = 0000 0000 0011 0000CARRY = 0SIGN = 0ZERO = 0

LD R3

R3 → ACAC: (30)hex = (0000 0000 0011 0000)bin

R3: (100)dec=(0000 0000 0110 0100)bin

AC = 0000 0000 0110 0100CARRY = 0SIGN = 0ZERO = 0

OR R3

R3 AC → AC

AC: (30)hex = (0000 0000 0011 0000)bin

R3: (100)dec = (0000 0000 0110 0100)bin

0000 0000 0011 0000 0000 0000 0110 0100 = 0000 0000 0111 0100

AC = 0000 0000 0111 0100CARRY = 0 SIGN = 0ZERO = 0

AND R3

R3 AC → AC

AC: (30)hex = (0000 0000 0011 0000)bin

R3: (100)dec = (0000 0000 0110 0100)bin

30

Page 31: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

0000 0000 0011 0000 0000 0000 0110 0100= 0000 0000 0010 0000

AC = 0000 0000 0010 0000CARRY = 0 SIGN = 0ZERO = 0

ADD R3

R3 + AC → AC

AC: (30)hex = (0000 0000 0011 0000)bin

R3: (100)dec = (0000 0000 0110 0100)bin

0000 0000 0011 0000 + 0000 0000 0110 0100= 0000 0000 1001 0100

AC = 0000 0000 1001 0100CARRY = 0 SIGN = 0ZERO = 0

SUB R3

AC – R3 → AC

AC: (30)hex = (0000 0000 0011 0000)bin

R3: (100)dec = (0000 0000 0110 0100)bin

0000 0000 0011 0000 - 0000 0000 0110 0100 = 1111 1111 1100 1100

AC = 1111 1111 1100 1100CARRY = 1 SIGN = 1ZERO = 0

1.3.4 Implicitno adresiranje

Kod implicitnog adresiranja imlicitna adresa se ne specifira posebno, mesto operanda je unapred poznato i zavisi samo od opkod polja naredbe (Slika 15).

opkod M operandX X X X 0 1 1 A A A A A A A A A

Slika 15

Primenljivo na neredbi CLC.

31

Page 32: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

1.3.5 Indirektni načini adresiranja

Kod indirektnog načina adresiranja polje modifikatora proširujemo za jos jedan bit na račun operanda. U zavisnosti da li je bit najmanje težine modifikatora postavljen na 0 ili 1 vrši se indirektno adresiranje preko registra ili memorije. U slučaju da je postavljena 0 vrši se adresiranje preko registra, a ako je postavljena 1 preko memorije.

1.3.5.1 Indirektno memorijsko adresiranje preko registra

Kod indirektnog adresiranja preko registra, odgovarajućim poljem operand (vidi Sliku 16) se specificira registar u kome se čuva adresa operanda.

Osnovna prednost ove tehnike adresiranja je mogućnost pristupa većem adresnom prostoru, a nedostatak veći broj obraćanja memoriji.

Kod indirektnog adresiranja modifikator M ima vrednost 1000.

Opkod M operandX X X X 1 0 0 0 A A A A A A A A

Slika 16. Format instrukcije kod indirektnog adresiranja

Primenljivo na naredbe ST, LD, OR, AND, ADD, SUB

Primeri: Ako je početna vrednost akumulatora AC = 20, memorijskih lokacija M[30] = 40 i registra opšte namene R1 = 30, sadržaj akumulatora AC i markera statusa (CARRY, SIGN, ZERO) nakon pojedinačnog izvršenja svake od sledećih instrukcija je:

ST @R1

R1 →AC → M[30]

AC: (20)dec = (0000 0000 0001 0100)bin

R1: (30)dec = (0000 0000 0001 1110)bin

M[30]: (40)dec = (0000 0000 0010 1000)bin

AC = 0000 0000 0011 0000CARRY = 0SIGN = 0ZERO = 0

LD @R1

M[R1[30]] → AC

AC: (20)dec = (0000 0000 0001 0100)bin

32

Page 33: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

R1: (30)dec = (0000 0000 0001 1110)bin

M[30]: (40)dec = (0000 0000 0010 1000)bin

AC = 0000 0000 0010 1000CARRY = 0SIGN = 0ZERO = 0

OR @R1

M[R1[30]] AC → AC

AC: (20)dec = (0000 0000 0001 0100)bin

R1: (30)dec = (0000 0000 0001 1110)bin

M[30]: (40)dec = (0000 0000 0010 1000)bin

0000 0000 0010 1000 0000 0000 0001 0100 = 0000 0000 0011 1100 AC = 0000 0000 0011 1100CARRY = 0SIGN = 0ZERO = 0

AND @R1

M[R1[30]] AC → AC

AC: (20)dec = (0000 0000 0001 0100)bin

R1: (30)dec = (0000 0000 0001 1110)bin

M[30]: (40)dec = (0000 0000 0010 1000)bin

0000 0000 0010 1000 0000 0000 0001 0100 = 0000 0000 0000 0000 AC = 0000 0000 0000 0000CARRY = 0SIGN = 0ZERO = 1

ADD @R1

M[R1[30]] + AC → AC

AC: (20)dec = (0000 0000 0001 0100)bin

R1: (30)dec = (0000 0000 0001 1110)bin

M[30]: (40)dec = (0000 0000 0010 1000)bin

0000 0000 0010 1000 + 0000 0000 0001 0100 = 0000 0000 0011 1100 AC = 0000 0000 0011 1100CARRY = 0SIGN = 0ZERO = 0

SUB @R1

AC - M[R1[30]] → AC

AC: (20)dec = (0000 0000 0001 0100)bin

33

Page 34: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

R1: (30)dec = (0000 0000 0001 1110)bin

M[30]: (40)dec = (0000 0000 0010 1000)bin

0000 0000 0001 0100 - 0000 0000 0010 1000 = 1111 1111 1110 1100 AC = 0000 0000 0000 0000CARRY =1SIGN = 1ZERO = 0

1.3.5.1 Indirektno memorijsko adresiranje preko memorije

Kod indirektnog adresiranja preko memorije, odgovarajućim poljem operand (vidi Sliku 17) se specificira memorijska lokacija u kojoj se čuva adresa operanda.

Kod indirektnog adresiranja modifikator M ima vrednost 1001.

Opkod M operandX X X X 1 0 0 1 A A A A A A A A

Slika 17. Format instrukcije kod indirektnog adresiranja

Primenljivo na naredbe ST, LD, OR, AND, ADD, SUB

Primeri: Ako je početna vrednost akumulatora AC = 20, memorijskih lokacija M[30] = 40 i operanda 30, sadržaj akumulatora AC i markera statusa (CARRY, SIGN, ZERO) nakon pojedinačnog izvršenja svake od sledećih instrukcija je:

ST @30

AC → M[30]

AC: (20)dec = (0000 0000 0001 0100)bin

oper: (30)dec = (0000 0000 0001 1110)bin

M[30]: (40)dec = (0000 0000 0010 1000)bin

AC = 0000 0000 0011 0000CARRY = 0SIGN = 0ZERO = 0

LD @30

M[30]] → AC

AC: (20)dec = (0000 0000 0001 0100)bin

oper: (30)dec = (0000 0000 0001 1110)bin

M[30]: (40)dec = (0000 0000 0010 1000)bin

AC = 0000 0000 0010 1000CARRY = 0SIGN = 0ZERO = 0

34

Page 35: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

OR @30

M[30]] AC → AC

AC: (20)dec = (0000 0000 0001 0100)bin

oper: (30)dec = (0000 0000 0001 1110)bin

M[30]: (40)dec = (0000 0000 0010 1000)bin

0000 0000 0010 1000 0000 0000 0001 0100 = 0000 0000 0011 1100 AC = 0000 0000 0011 1100CARRY = 0SIGN = 0ZERO = 0

AND @30

M[30]] AC → AC

AC: (20)dec = (0000 0000 0001 0100)bin

oper: (30)dec = (0000 0000 0001 1110)bin

M[30]: (40)dec = (0000 0000 0010 1000)bin

0000 0000 0010 1000 0000 0000 0001 0100 = 0000 0000 0000 0000 AC = 0000 0000 0000 0000CARRY = 0SIGN = 0ZERO = 1

ADD @30

M[30]] + AC → AC

AC: (20)dec = (0000 0000 0001 0100)bin

oper: (30)dec = (0000 0000 0001 1110)bin

M[30]: (40)dec = (0000 0000 0010 1000)bin

0000 0000 0010 1000 + 0000 0000 0001 0100 = 0000 0000 0011 1100 AC = 0000 0000 0011 1100CARRY = 0SIGN = 0ZERO = 0

SUB @R1

AC - M[30]] → AC

AC: (20)dec = (0000 0000 0001 0100)bin

oper: (30)dec = (0000 0000 0001 1110)bin

M[30]: (40)dec = (0000 0000 0010 1000)bin

0000 0000 0001 0100 - 0000 0000 0010 1000 = 1111 1111 1110 1100 AC = 0000 0000 0000 0000CARRY =1SIGN = 1ZERO = 0

35

Page 36: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

36

Page 37: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

1.3.6 PC relativno

Kod ovog adresiranja registar kome se implicitno obraćamo je programski brojač (PC- program counter). To znači da se tekuća adresa instrukcije sabira sa operandom i na taj način formira efektivna adresa (EA). (slika 18)

EA = PC + operand – predstavlja relativni razmestaj u odnosu na adresu instrukcije.

Najveći broj obraćanja memoriji je relativno blizu instrukciji koja se tekuće izvršava, što znači da se ovim načinom adresiranja štede bitovi u instrukciji.

Opkod M operandX X X X 1 0 1 A A A A A A A A A

Slika 18 Format instrukcije kod PC relativnog adresiranja

Primenljivo je na naredbe ST, LD, OR, AND, ADD, SUB.

Primeri: Ako je početna vrednost akumulatora AC = 18h, memorijske lokacije M[9] = 4, sadržaj akumulatora AC i markera statusa (CARRY, SIGN, ZERO) nakon pojedinačnog izvršenja svake od sledećih instrukcija je:

ST $8h

Operand + PC = EA AC → M[EA]

PC: (1)dec= (0000 0000 0000 0001)bin

AC: (18)hex = (0000 0000 0001 1000)bin

op: (8)hex = (0000 0000 0000 1000)bin

0000 0000 0000 1000 + 0000 0000 0000 0001 = 0000 0000 0000 1001 = EAAC = 0000 0000 0001 1000M[9] = 0000 0000 0001 1000

CARRY = 0SIGN = 0ZERO = 0

LD $8h

Operand + PC = EA M[EA] → AC

PC: (1)dec = (0000 0000 0000 0001)bin

M[9]: (4)dec = (0000 0000 0000 0100)bin

op: (8)hex = (0000 0000 0000 1000)bin

EA = 0000 0000 0000 1000 + 0000 0000 0000 0001 = 0000 0000 0000 1001

37

Page 38: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

M[9] = 0000 0000 0001 1000AC= 0000 0000 0000 0100

CARRY = 0SIGN = 0ZERO = 0

OR $8h

Operand + PC = EA M[EA] AC → AC

AC: (18)hex= (0000 0000 0001 1000)bin

PC: (1)dec = (0000 0000 0000 0001)bin

M[9]: (4)dec = (0000 0000 0000 0100)bin

op: (8)hex = (0000 0000 0000 1000)bin

EA = 0000 0000 0000 1000 + 0000 0000 0000 0001 = 0000 0000 0000 1001M[9] = 0000 0000 0000 0100

0000 0000 0000 0100 0000 0000 0001 1000 = 0000 0000 0001 1100

AC = 0000 0000 0001 1100CARRY = 0SIGN = 0ZERO = 0

AND $8h

Operand + PC = EA M[EA] AC → AC

AC: (18)hex= (0000 0000 0001 1000)bin

PC: (1)dec = (0000 0000 0000 0001)bin

M[9]: (4)dec = (0000 0000 0000 0100)bin

op: (8)hex = (0000 0000 0000 1000)bin

EA = 0000 0000 0000 1000 + 0000 0000 0000 0001 = 0000 0000 0000 1001M[9] = 0000 0000 0000 0100

0000 0000 0000 0100 0000 0000 0001 1000 = 0000 0000 0000 0000

AC = 0000 0000 0000 0000CARRY = 0SIGN = 0ZERO = 1

ADD $8h

Operand + PC = EA M[EA] + AC → AC

AC: (18)hex= (0000 0000 0001 1000)bin

38

Page 39: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

PC: (1)dec = (0000 0000 0000 0001)bin

M[9]: (4)dec = (0000 0000 0000 0100)bin

op: (8)hex = (0000 0000 0000 1000)bin

EA = 0000 0000 0000 1000 + 0000 0000 0000 0001 = 0000 0000 0000 1001M[9] = 0000 0000 0000 0100

0000 0000 0000 0100 + 0000 0000 0001 1000 = 0000 0000 0001 1100

AC = 0000 0000 0001 1100CARRY = 0SIGN = 0ZERO = 0

SUB $8h

Operand + PC = EA AC - M[EA] → AC

AC: (18)hex= (0000 0000 0001 1000)bin

PC: (1)dec = (0000 0000 0000 0001)bin

M[9]: (4)dec = (0000 0000 0000 0100)bin

op: (8)hex = (0000 0000 0000 1000)bin

EA = 0000 0000 0000 1000 + 0000 0000 0000 0001 = 0000 0000 0000 1001M[9] = 0000 0000 0000 0100

0000 0000 0001 1000 - 0000 0000 0000 0100 = 0000 0000 0001 0100

AC = 0000 0000 0001 0100CARRY = 0SIGN = 0ZERO = 0

1.3.7 Indeksno

Kod ovog adresiranja polje operanda predstavlja memorijsku lokaciju glavne memorije slika 19, dok je u indeksnom registru IND smešten pozitivan razmeštaj u odnosu na tu adresu. Efektivna adresa se formira kao zbir razmeštaja (vrednosti) iz indeksnog registra (IND) i vrednosti operanda (tj. rednog broja memorijske lokacije glavne memorije).

EA = R + IND

Opkod M operandX X X X 1 1 0 A A A A A A A A A

Slika 19. Format instrukcije kod indeksnog adresiranja

Primenljivo je na naredbe ST, LD, OR, AND, ADD, SUB.

39

Page 40: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

Primeri: Ako je početna vrednost akumulatora AC = 37, memorijskih lokacija M[3] = 20, M[10] = 56, indeksnog registra IND = 7, sadržaj akumulatora AC i markera statusa (CARRY, SIGN, ZERO) nakon pojedinačnog izvršenja svake od sledećih instrukcija je:

ST %3

Operand + IND = EA AC → M[EA]

IND: (7)dec= (0000 0000 0000 0111)bin

AC: (37)dec = (0000 0000 0010 0101)bin

op: (3)dec = (0000 0000 0000 0011)bin

M[3]: (20)dec = (0000 0000 0001 0100)bin

M[10]: (56)dec = (0000 0000 0011 1000)bin 0000 0000 0000 0011 + 0000 0000 0000 0111 = 0000 0000 0000 1010 = EAAC = 0000 0000 0010 0101M[10] = 0000 0000 0010 0101

CARRY = 0SIGN = 0ZERO = 0

LD %3

Operand + IND = EA M[EA] → AC

IND: (7)dec= (0000 0000 0000 0111)bin

AC: (37)dec = (0000 0000 0010 0101)bin

op: (3)dec = (0000 0000 0000 0011)bin

M[3]: (20)dec = (0000 0000 0001 0100)bin

M[10]: (56)dec = (0000 0000 0011 1000)bin 0000 0000 0000 0011 + 0000 0000 0000 0111 = 0000 0000 0000 1010 = EA

M[10] = 0000 0000 0011 1000AC = 0000 0000 0011 1000

CARRY = 0SIGN = 0ZERO = 0

OR %3

Operand + IND = EA M[EA] AC → AC

IND: (7)dec= (0000 0000 0000 0111)bin

AC: (37)dec = (0000 0000 0010 0101)bin

op: (3)dec = (0000 0000 0000 0011)bin

40

Page 41: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

M[3]: (20)dec = (0000 0000 0001 0100)bin

M[10]: (56)dec = (0000 0000 0011 1000)bin 0000 0000 0000 0011 + 0000 0000 0000 0111 = 0000 0000 0000 1010 = EA0000 0000 0011 1000 0000 0000 0010 0101 = 0000 0000 0011 1101

AC = 0000 0000 0011 1101

CARRY = 0SIGN = 0ZERO = 0

AND %3

Operand + IND = EA M[EA] AC → AC

IND: (7)dec= (0000 0000 0000 0111)bin

AC: (37)dec = (0000 0000 0010 0101)bin

op: (3)dec = (0000 0000 0000 0011)bin

M[3]: (20)dec = (0000 0000 0001 0100)bin

M[10]: (56)dec = (0000 0000 0011 1000)bin 0000 0000 0000 0011 + 0000 0000 0000 0111 = 0000 0000 0000 1010 = EA0000 0000 0011 1000 0000 0000 0010 0101 = 0000 0000 0010 0000

AC = 0000 0000 0010 0000

CARRY = 0SIGN = 0ZERO = 0

ADD %3

Operand + IND = EA M[EA] + AC → AC

IND: (7)dec= (0000 0000 0000 0111)bin

AC: (37)dec = (0000 0000 0010 0101)bin

op: (3)dec = (0000 0000 0000 0011)bin

M[3]: (20)dec = (0000 0000 0001 0100)bin

M[10]: (56)dec = (0000 0000 0011 1000)bin 0000 0000 0000 0011 + 0000 0000 0000 0111 = 0000 0000 0000 1010 = EA0000 0000 0011 1000 + 0000 0000 0010 0101 = 0000 0000 0101 1101

AC = 0000 0000 0101 1101

CARRY = 0SIGN = 0ZERO = 0

SUB %3

41

Page 42: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

Operand + IND = EA AC - M[EA] → AC

IND: (7)dec= (0000 0000 0000 0111)bin

AC: (37)dec = (0000 0000 0010 0101)bin

op: (3)dec = (0000 0000 0000 0011)bin

M[3]: (20)dec = (0000 0000 0001 0100)bin

M[10]: (56)dec = (0000 0000 0011 1000)bin 0000 0000 0000 0011 + 0000 0000 0000 0111 = 0000 0000 0000 1010 = EA0000 0000 0010 0101 - 0000 0000 0011 1000 = 1111 1111 1110 1101

AC = 1111 1111 1110 1101

CARRY = 1SIGN = 1ZERO = 0

1.3.8 Magacinsko

Magacin (stack) je linearno polje lokacija (rezervisan blok lokacija glavne memorije). Magacinu je moguće pristupiti samo sa jedne strane koja se naziva vrh magacina (stack).

Operacija upisivanja u magacin se obavlja naredbom PUSH, tako što se stavka postavlja na vrh magacina (Slika 20).

Opkod M operand0 0 1 1 1 1 1 A A A A A A A A A

Slika 20. Format PUSH instrukcije kod magacinskog adresiranja

Čitanje iz magacina realizuje se naredbom POP, tako što se stavka izbavlja sa vrha magacina (Slika 21).

Opkod M operand0 1 1 0 1 1 1 A A A A A A A A A

Slika 21. Format POP instrukcije kod magacinskog adresiranja

Položaj vrha magacina menja se operacijama PUSI i POP za odgovarajuću dužinu operanda koji se smešta/izbavlja u/iz magacina. Pristup magacinu reguliše se pokazivačem magacina (stack pointer) SP. U SP se čuva adresa zadnjeg operanda koji je smešten u magacin. Adresa na koju pokazuje SP se automatski reguliše posle svake PUSH ili POP naredbe tako da uvek pokazuje na vrh magacina.

Autoindeksiranje se može uspešno primeniti kod adresiranja magacina. Većina procesora ima ugradjen specijalni autoindeksirani adresni registar SP koji se koristi kao pokazivač.

42

Page 43: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

2. Instalacija i pokretanje programa

Postupak pokretanja programa AdressSim je sledeći:

1. Izabrati programsku ikonu AdressSim for Windows lociranu na Desktop-u.

43

Page 44: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

2. Aktivirati AdressSim – aktiviranje se izvodi dvostrukim klikom levim tasterom miša na odabranu ikonu AdressSim

3. Startovanjem AdressSim -a na ekranu se pojavljuje aplikacioni prozor pod nazivom AdressSim – untiled.asm (vidi Sliku 1)

4. U oblasti aktivne površine Editor-a pozicionirati kursor u krajnje gornjoj levoj poziciji. Kada je kursor pozicioniran u krajnje gornjoj levoj poziciji, vrednost linijskog brojača je 0, tj. prikazuje se broj linije 0.

5. U svakoj liniji aktivne površine unosi se po jedna instrukcija. Prelazak na novu liniju se vrši pritiskom na dirku Enter. Nakon svakog unosa instrukcije vrednost linijskog brojača inkrementira se za 1.

2.1 Text Eitor Nakon pokretanja programa AMSim pojavljuje se glavni aplikacioni prozor koji predstavlja Text Editor u kome se pripremaju sekvence programa. On se satoji iz 3 dela prikazanih na slici 1.

1. Menu-bar2. Text editor3. Pokazivač linije u kojoj se nalazi kursor

Slika 1 – Prozor text editora

1. Sekcija na vrhu se odnosi na polje Menu-bar. Menu-bar omogućava selekciju File, Edit, View, Assemble i Help operacije.

File – selekcijom ove operacije otvara se padajući meni koji sadrži sledeće opcije (vidi Sliku 2):

■ New – (selekcijom ove operacije) kreira se nova programska sekvenca ■ Open – učitava se fajl izvornog programa nazvan ime-prezime.asm■ Save – pamti fajl koji se tekuće koriguje ili ažurira na mestu gde je bio prethodno zapamćen■ Save as... – dodeljuje ime fajlu (ime-prezime.asm) koji se tekuće kreira, bira lokaciju gde će se taj fajl zapamtiti

44

Page 45: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

■ Exit - izlazak iz Text editora.

Slika 2

Edit – selekcijom ove operacije otvara se padajući meni (vidi Sliku 3) koji sadrži sledeće opcije:

■ Cut – kopiranje selektovanog sadržaja. Kopiranjem, selektovani sadržaj se briše iz izvornog fajla.■ Copy - kopiranje selektovanog sadržaja. Kopiranjem, selektovani sadržaj se ne briše iz izvornog fajla.■ Paste – lepljenje prethodno kopiranog selektovanog sadržaja iz izvornog fajla.■ Delete – brisanje selektovanog sadržaja iz izvornog fajla.■ Select All – selektovanje celokupnog (integralnog) sadržaja izvornog fajla.

Slika 3Assemble – koristi se za asembliranje sadržaja izvornog programa izvornog fajla sa

ekstenzijom .asm koji se unosi preko Text-editor-a. Aktiviranje izvršenja programa na displeju prati generisanje prozora Assembler.

Ovaj prozor biće opisan kasnije.

Help – opcija služi za dobijanje pomoćnih informacija o programu.

45

Page 46: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

2. Sekcija Text editor aktivira se klikom levog tastera miša. Kao efekat pojavljuje se kursor pozicioniran na krajnje gornjoj levoj poziciji aktivne površine Editor-a koja se koristi za unos izvornog programa.

Unešeni tekst se u realnom vremenu (odmah po unosu) "boji" u odgovarujuću boju kao što je to prikazano u sledećem primeru:

Primer:

Ako nema teksta koji je obojen u crvenu boju znači da je unešeni tekst sintaksno ispravan i da se može asemblirati u protivnom je potrebno ispraviti crveno obojeni tekst jer postoji sitaksna greška.

3. Sekcija Pokazivač kursora – predstavlja linijski brojač, brojna vrednost ukazuje na liniju u kojoj se unosi asemblerski kôd i broj karaktera u tekućoj liniji.

2.2. Asembliranje

Izborom opcije Assemble iz glavnog menija tekst editora otvra se prozor Assembler prikazan na Slici 4

Slika 4 – Prozor Assembler

46

lsc - nepravilano napisan tekst (crveno); komentar - komentar počinje sa znakom ;

(plavo)add 0ah ;komentar u liniji koda - pravilno napisana komanda add 12 - pravilno napisan numerički

operand (zeleno)sub ah - pravilno napisan operand registar (teget)and r0 - pravilno napisan specijalni zank (braon)add #23

Page 47: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

U ovom prozoru se može videti izveštaj o toku procesa asembliranja kao i izveštaj o eventualnim greškama. U donjem delu se nalazi poruka o tome kako je završen proces asembliranja da li uspešno ili koliko grešaka postoji.

Izveštaj o procesu asembliranja ima seledeću formu:

Memory[0]=1110000000001010: ADD AHMemory[1]=1110000000001100: ADD 12Memory[2]=1111000000001010: SUB 0AHMemory[3]=1101010000000000: AND R0Memory[4]=1110001000000000: ADD #23Memory[5]=0000000000010111

U izveštaju za svaku uspešno asembliranu instrukciju imamo označenu memorijsku lokaciju na koju se upisuje mašinski kod te instrukcije, mašinski kod je prikazan sa označenim delom za opkod (plava boja) modifikator (zelena boja) i operand, i na kraju asemblerski kod instrukcije.

U slučaju da postoji greška, prikazuje se poruka o grešci koja se satoji iz broja linije u kojoj se greška nalazi, koda greške i objašnjenja greške. Asembeler ume da prepozna sledeće tipove grešaka:

kod greške Objašnenje

0 nepostojeća naredba2 neprhvatljiv način adresiranje za tu naredbu4 postoji nešto iza operanda u liniji5 naredba ne treba da ima operand6 prekoračena vrednost operanda

7 registar SP se ne koristi za aritmetičke i logičke operacije

Tabela – greške koje asembler prepoznaje

Nakon uspešnog asembliranja mogu se izabrati dve opcije OK ili Start CPU. Izborom opcije OK zatvara se prozor asembelra otvaraju se tri nova prozora Processor Graph, Memory i Register prozor ali se ne startuje izvršavanje programa dok se izborom opcije Start CPU otvaraju ova tri nova prozora i počinje izvršavanje programa.

2.3 Praćenje toka izvršavanja programa

Processor Graph, Register, Memory i Trace prozori

Posle asembliranja programa otvaraju nam se tri nova prozora koja treba da posluže za praćenje toka izvršavanja programa i to su Processor Graph (slika 5) na kome je prikazana blok šema procesora, Register prozor (slika 6) u kome su date tekuće vrednosti registara procesora i Memory prozor (slika 7) u kome su prikazane tekuće vrednosti u meoriji koja je grupisana po memorijskim lokacijama dužine mašinske reči od 2 bajta (16 bita). Pored ovih postoji i prozor Trace (slika 8) u kome se mogu pratiti vrednosti registara PC, AC, IR, IND posle svake faze izvršenja instrikcije.

47

Page 48: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

2.3.1 Processor Graph prozor

Slika 5 – Processor Graph prozor

U ovom prozoru prikazna je blok-šema procesora na kojoj se prikazuje tok izvršavanja isntrukcija. U okviru blok šeme prikazani su registri procesora, Aritmetičko-logička jedinica, Memorija, magistrale koje ih povezuju i kontrolni signali koji kontrolišu rad procesora.

Registri su na blok šemi prikazani pravougaonikom u kome se nalazi ime registra, a sa strane su prikazani konrolni ulazi koji su označeni kontrolnim signalima i to mogu biti sledeći signali:

- En – enabale signal dozvole upisa u registar;- Inc – signal inkrementrianja sadržaja registra;- Dec – signal dekrementrianja sadržaja registra;- S0, S1, S2 – selektorsku ulazi za registre opšte namena R0 ... R7.Signali su označeni crnim slovima kada su neaktivni, a crvenim kada su aktivni.

Na blok-šemi označeni su sledeći registri- PC – program counter – 16 bitni registar programskog brojača. Ima dva kontrolna

ulza En i Inc;

48

Page 49: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

- AC – akumulator – 16 bitni registar akumulator. Ima tri kontrolna ulaza En, Inc i Dec;

- IR – Instruction Register – 16-bitni instrukcioni registar koji ima tri izlaza i to 9-bitni izlaz za operand, ovaj izlaz se priključuje na 16-bitnu magistralu, 3-bitni izlaz za modifikator i 4-bitni izlaz za opcode;

- IND - index register – 16-bitni indesni registar;- SP – Stack Pointer – 16-bitni registar pokazivač steka;- R0..R7 – 16-bitni registri opšte namene;- Leč A, Leč B pomoćni registri za držanje vrednosti;- MAR, MDR – pomoćni registri za pristup memoriji;- PSW – program status word – je trobitni registar koji sadrži bitove kojima se oči-

tava stanje tri markera CARRY, SIGN i ZERO.

Crnim linijama na blok-šemi prikazana je 16-bitna magistrala, a stelicama je prikazan smer toka signala kroz magistralu. Aktivni deo magistrale u toku izvršenja instrukcije označava se plavom bojom.

Za kontrolu rada magistrale koriščeni su 16-bitni trostatički baferi koji su prikazani simbolom:

Kada je ovaj simbol prikazan crnom bojom bafer je neaktivan, a na njegovom izlazu je stanje visoke impendanse. Kada je simbol prikazan crvenom bojom, bafer se nalazi u aktivnom stanju i na njegovom izlazu se preslikava stanje sa ulaza.

Pored trostatičkih bafera za kontrolu rada magistale koriste se i dva multipleksera koja su na šemi označena simbolom:

i u zavisnosti od kontorolnog signala multipleksera na izlazu se propušta odgovarajući ulazni signal multipleksera.

Na vrhu prozora nalazi se Menu bar u kome se nalaze opcije za konrolu rada procesora i to su sledeće opcije:

- Start CPU - ovom opcijom pokreće se rad procesora, počinje animacija kojom se prikazje protok informacije crvenim tačkama koje se kreću duž magistrale i aktivni kontrolni signali se prikazini crvenom bojom.

- STOP – ovom opcijom se zaustavlja rad procesora. Po izboru ove opcije treba sačekati da se završi animacija kojom se prikazuje tekuća faza izvršavanja instrukcije.

- Reset - ovom opcijom procesor se dovodi u početno stanje, vrednost registara se postavlja na 0.

- STEP_FWD – kada je procesor zaustavljen opcijom STOP ovom opcijom se može narediti izvršenje sledeće faze izvršenja instrukcije posle čega se procesor ponovo zaustavlja.

Pored opcija za kontrolu rada procesora u Menu bar-u nalazi se još i podmeni View u kome se mogu izbrai sledeće opcije:

- Register - Register Edit- Memory- Memory Edit

49

Page 50: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

- Trace

2.3.2 Register prozor i Register Edit prozor

Slika 6 – Registers i Register Edit prozor

Prozor Register se otvara istovremno sa prozorom Processor Graph i u njemu se prikazuju trenutne vrednosti registara procesora u binarnom brojnom sitemu. Ovom prozoru se može pristupiti i iz menija przora Processor Graph izborom opcije View| Register.

Na vrhu ovog prozora nalazi se Menu bar u kome se nalazi opcija Reister Edit kojom se poziva istoimeni prozor u kome se mogu psotaviti vrednosti registara. Vrednosti registara se unose u decimalnom brojnom sitemu. Ovom prozoru se može pristupiti i iz menija prozora Processor Graph izborom opcije View| Register Edit.

2.3.3 Memory i Memory Editor prozor

50

Page 51: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

Slika 7 – Memory i Memory Edit prozor

Prozor Memory se otvara istovremeno sa prozorom Processor Grpah i služi za prikaz sadržaja memorije. Ovom prozoru se može pristupiti i iz menija prozora Processor Graph izborom opcije View| Memory.

Sadržaj memorije prikazan je u formi tabele sa dve kolone prva kolona označava memorijsku lokaciju a druga vrednost koja je upisana na toj memorijskoj lokaciji u binarnom brojnom sitemu. Žuto označeno polje predstavlja memorijsku lokaciju koja je trenutno selektovana na adresnom ulazu memorije. Crvenom bojom označene su memorijske lokacije na kojima su upisne instrukcije programa koji se izvršava.

Na vrhu ovog prozora nalazi se Menu bar koji ima opciju Memory Edit kojom se poziva prozor Memory Edit.

U prozoru Memory Edit se nalazi slična tabela ali se u njoj mogu uneti vrednosti na odgovarajućim memorijskim lokacijama u memoriji u decimalnom brojnom sistemu. Ovom prozoru se može pristupiti i iz menija prozora Processor Graph izborom opcije View| Memory Edit.

2.3.4 Trace Prozor

Slika 8 - Trace prozor

Trace prozoru se pristupa iz menija prozora Processor Graph izborom opcije View| Trace. U prozoru Trace u formi liste prkazana je aktivnost procesora po fazama izvršavanja instrukcija kao i vrednosti registara PC, IR, AC i IND posle svake izvršene faze.

51

Page 52: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

3. Lab. Vežba AdressSim

52

Page 53: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

Za pokretanje programa AdressSim za Windows potrebno je preduzeti aktivnosti koje su opisane u koraku 2 ove laboratorijske vežbe.

Postupak pokretanja programa AdressSim je sledeći:

1. Izabrati programsku ikonu AdressSim for Windows lociranu na Desktop-u.2. Aktivirati AdressSim – aktiviranje se izvodi dvostrukim klikom levim tasterom

miša na odabranu ikonu AdressSim

3. Startovanjem AdressSim -a na ekranu se pojavljuje aplikacioni prozor pod nazivom AdressSim – untiled.asm (vidi Sliku 1)

4. U oblasti aktivne površine Editor-a pozicionirati kursor u krajnje gornjoj levoj poziciji. Kada je kursor pozicioniran u krajnje gornjoj levoj poziciji, vrednost linijskog brojača je 0, tj. prikazuje se broj linije 0.

5. U svakoj liniji aktivne površine unosi se po jedna instrukcija. Prelazak na novu liniju se vrši pritiskom na dirku Enter. Nakon svakog unosa instrukcije vred-nost linijskog brojača inkrementira se za 1.

Slika 1 – Prozor Text editora

3.1. Pokazni primer

Kroz reprezentativni primer od četiri naredbe prikazaćemo sve korake izvršenja test sekvence.

Primer: ADD 23LD R2SUB #23 AND $15

U Text editor se unosi sledeca sekvenca :

53

Page 54: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

ADD 23LD R2SUB #23 AND $15

Prelazak na sledeću liniju test sekvence se vrši pritiskom na taster Enter.Klikom levog tastera miša na polje Assemble (1) vrši se asembliranje unete sekvence.

(slika 2).

Slika 2

Otvara se prozor Assembler u kome možemo da vidimo da li je asembliranje uspešno (3) i izgled instrukcije u asemblerskom jeziku (Slika 3). Sadržaji memorijskih lokacija koje je asembler dodelio instukcijama su:

Memory[0]=1110000000010111: ADD 23Memory[1]=0110010000000010: LD R2Memory[2]=1111001000000000: SUB #23Memory[3]=0000000000010111Memory[4]=1101101000001111: AND $15

54

1

Page 55: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

3 Slika. 3 2

Asemblerska instrukcija se sastoji od 16 bitova od kojih prva četiri predstavljaju instrukciju (bitovi plave boje), naredna tri bita, način adresiranja ( bitovi zelene boje), a ostalih devet bitova operand, koji u ovom slučaju, predstavlja memorijsku lokaciju na kojoj se nalazi podatak nad kojim se izvršava zadata instrukcija (bitovi ljubičaste boje).

Startujemo AdressSim, klikom levog tastera miša na polje OK (2), program počinje sa izvršavanjem. Da bismo uočili pravilan rad programa i proverili ispravnost pratićemo izvršenje unete test sekvence tako što ćemo uneti u AC i R2 neku proizvoljnu vrednost klikom na Register edit (Slika 4) (npr. 5 u AC i 30 u R2, ukucamo broj zatim kliknemo na ) (Slika. 6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika 5) (u našem slučaju u 19-tu memorijsku lokaciju npr.11 i u 23 memorijsku lokaciju vrednost npr.12 (slika 7) ) .

U oba editora unose se isključivo decimalne vrendosti.

Slika. 4 Slika. 5

55

Page 56: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

Slika. 6 Slika.7

Klikom levog tastera miša na polje Start počinje izvršavanje simulacije.

Početne vrednosti registara i memorijskih lokacija su:

PC = 0000000000000000 IR = 0000000000000000

AC = 0000000000000000 IND = 0000000000000000

R2 = 0000000000011110 M[23] =0000000000001100

M[19] = 0000000000001011 Početak testne sekvence:

Prva instrukcija

ADD 23 Fetch 1: PC -> MAR

PC= 0000000000000000 IR= 0000000000000000 AC= 0000000000000101 IND= 0000000000000000

Fetch 2: M[MAR] -> IR

PC= 0000000000000000 IR= 1110000000010111 AC= 0000000000000101 IND= 0000000000000000

56

Page 57: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

Fetch 3: INC PC - Decoding Instr.

PC= 0000000000000001 IR= 1110000000010111 AC= 0000000000000101 IND= 0000000000000000

F1: IR[operand] -> MAR

PC= 0000000000000001 IR= 1110000000010111 AC= 0000000000000101 IND= 0000000000000000

Flags carry=0 zero=0 sign=0

F2: AC + M[MAR] -> AC

PC= 0000000000000001 IR= 1110000000010111 AC= 0000000000010001 IND= 0000000000000000

Druga instrukcija LD R2 Fetch 1: PC -> MAR

PC= 0000000000000001 IR= 1110000000010111 AC= 0000000000010001 IND= 0000000000000000

Fetch 2: M[MAR] -> IR

PC= 0000000000000001 IR= 0110010000000010 AC= 0000000000010001 IND= 0000000000000000

Fetch 3: INC PC - Decoding Instr.

PC= 0000000000000010 IR= 0110010000000010 AC= 0000000000010001 IND= 0000000000000000

R2 -> AC

PC= 0000000000000010 IR= 0110010000000010 AC= 0000000000011110 IND= 0000000000000000

Treća instrukcija: SUB #23 Fetch 1: PC -> MAR

57

Page 58: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

PC= 0000000000000010 IR= 0110010000000010 AC= 0000000000011110 IND= 0000000000000000

Fetch 2: M[MAR] -> IR

PC= 0000000000000010 IR= 1111001000000000 AC= 0000000000011110 IND= 0000000000000000

Fetch 3: INC PC - Decoding Instr.

PC= 0000000000000011 IR= 1111001000000000 AC= 0000000000011110 IND= 0000000000000000

F1: PC -> MAR

PC= 0000000000000011 IR= 1111001000000000 AC= 0000000000011110 IND= 0000000000000000

Flags carry=0 zero=0 sign=0

F2: AC - M[PC] -> AC INC PC

PC= 0000000000000100 IR= 1111001000000000 AC= 0000000000000111 IND= 0000000000000000

Četvrta instrukcija:

AND $15 Fetch 1: PC -> MAR

PC= 0000000000000011 IR= 1111001000010111 AC= 0000000000000111 IND= 0000000000000000

Fetch 2: M[MAR] -> IR

PC= 0000000000000011 IR= 1101101000001111 AC= 0000000000000111 IND= 0000000000000000

Fetch 3: INC PC - Decoding Instr.

PC= 0000000000000100 IR= 1101101000001111 AC= 0000000000000111 IND= 0000000000000000

F1: PC + IR[operand] -> MAR

PC= 0000000000000100 IR= 1101101000001111

58

Page 59: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

AC= 0000000000000111 IND= 0000000000000000

Flags carry=0 zero=0 sign=0

Tabela stanja test sekvence izgleda ovako:

59

Page 60: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

3.2 Test sekvence sa odovarajućim zadacima

Upoznati se sa načinaima adresiranja pomoću jednoadresnog simulatora AdressSim-a, koristeći test sekvence Grupa 1,..., Grupa 15.

Postupak čine sledeći koraci:a) Nakon unošenja test sekvence u TEXT editor prozora AMSim.untitled.asm klikom

levog tastera miša na opciju Assemble vrši se asembliranje unete instrukcije i otvara novi prozor Assembler kome se vidi asemblirana sekvenca. Nako toga se klikom levim tasterom miša na polje Start CPU pokreće se simulacija programa.

b) Pre startovanja programa se u memoriju i registre opšte namene unose se vrednosti zadate uz datu test sekvencu, klikom levim tasterom miša na polje Memory edit (ukoliko upisujemo podatak u memoriju), ili na polje Register edit (ukoliko upisujemo podatak u registre). Klikom levog tastera miša na polje podatak će biti upisan u memorijsku lokaciju ili registar na unetoj adresi, respektivno.

c) Nakon upisivanja podataka klikom levog tastera miša na polje Start pokrenuti simulator. Da bi se program izvršavao korak po korak kliknuti na polje STOP koje se nalazi u Meni bar-u, a u suprotnom, program će se izvršavati kontinualno od početka do kraja.

Uočiti i ispisati scenarij svih koraka navedenih instrucija u okviru test sekvence.Korake instrukcija test sekvence izvršavati pomoću opcije STEP FWD. Nakon svakog koraka upisati stanja odgovarajućih registara na naznačenim mestima u

tabeli .Dobijeni rezultat proveriti analitičkim putem. Student sam treba da se odluči koju ce

naredbu uslovnog skoka upotrebiti. Student sam treba da odredi u koji registar i na koju memorijsku lokaciju treba da unese proizvoljnu decimalnu vrednost, u zavisnosti od date test sekvence.

Grupa 1.

ADD 3 direktnoLD #15 neposrednoCLC implicitnoST R3 registarskoOR @R1 indirektno memorijsko preko registaraSUB $15h PC relativnoAND %20 indeksnoPUSH magacinskoJX neposredno

Grupa 2.

AND 6 direktnoSUB #4 neposrednoCLC implicitnoOR R1 registarskoJX neposrednoADD @23 indirektno memorijsko preko memorijeST $10h PC relativnoLD %7 indeksnoPOP magacinsko

60

Page 61: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

Grupa 3.

OR 9 direktnoADD #5 neposrednoCLC implicitnoLD R5 registarskoSUB @R2 indirektno memorijsko preko registaraJX neposrednoAND $9h PC relativnoADD %13 indeksnoPUSH magacinsko

Grupa 4.

SUB 10 direktnoOR #8 neposrednoCLC implicitnoAND R2 registarskoJX neposrednoST @23 indirektno memorijsko preko memorijeLD $6h PC relativnoSUB %7 indeksnoPOP magacinsko

Grupa 5.

ST 8 direktnoAND #6 neposrednoCLC implicitnoADD R5 registarskoLD @R1 indirektno memorijsko preko registaraOR $ 4h PC relativnoSUB %18 indeksnoJX neposrednoPUSH magacinsko

Grupa 6.

LD 12 direktnoAND #7 neposrednoCLC implicitnoSUB R2 registaarskoAND @23 indirektno memorijsko preko memorijeJX neposrednoADD $11h PC relativnoOR %11 indeksnoPOP magacinsko

61

Page 62: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

Grupa 7.

ADD 45 direktnoSUB #4 neposrednoCLC implicitnoST R1 registarskoOR @R6 indirektno memorijsko preko registaraJX neposrednoLD $23h PC relativnoAND %14 indeksnoPUSH magacinsko

Grupa 8.

SUB 34 direktnoAND #11 neposrednoJX neposrednoCLC implicitnoLD R5 registarskoST @23 indirektno memorijsko preko memorijeOR $11 PC relativnoADD %10 indeksnoPOP magacinsko

Grupa 9.

AND 8 direktnoOR #6 neposrednoCLC implicitnoADD R2 registarskoJX neposrednoSUB @R4 indirektno memorijsko preko registaraST $10 PC relativnoLD %22 indeksnoPUSH magacinsko

Grupa 10.

OR 11 direktnoLD #11 neposrednoCLC implicitnoAND R5 registarskoADD @12 indirektno memorijsko preko memorijeSUB $2 PC relativnoJX neposrednoST %13 indeksnoPOP magacinsko

62

Page 63: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

Grupa 11.

ST 11 direktnoADD #15 neposrednoCLC implicitnoSUB R5 registarskoLD @R6 indirektno memorijsko preko registaraAND $4 PC relativnoJX neposrednoSUB %1 indeksnoPUSH magacinsko

Grupa 12.

LD 7 direktnoSUB #22 neposrednoCLC implicitnoJX neposrednoOR R4 registarskoAND @10 indirektno memorijsko preko memorijeADD $32 PC relativnoOR %12 indeksnoPOP magacinsko

Grupa 13.

OR 9 direktnoAND #16 neposrednoCLC implicitnoADD R6 registarskoST @R1 indirektno memorijsko preko registaraLD $12 PC relativnoJX neposrednoADD %43 indeksnoPOP magacinsko

Grupa 14.

ADD 21 direktnoOR #8 neposrednoCLC imlicitnoST R3 registarskoJX neposrednoOR @15 indirektno memorijsko preko memorijeAND $6 PC relativnoAND %16 indeksnoPUSH magacinsko

63

Page 64: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

Grupa 15.

SUB 18 direktnoADD #5 neposrednoCLC implicitnoLD R4 registarskoAND @R2 indirektno memorijsko preko registaraJX neposrednoST $2 PC relativnoLD %23 indeksnoPOP magacinsko

Grupa 16.

ADD 43 direktnoSUB #4 neposrednoCLC implicitnoOR R3 registarskoLD @3 indirektno memorijsko preko memorije SUB $44 PC relativnoOR%11 indeksnoPUSH magacinskoJX neposredno

3.3 Pitanja:

1. Koja je razlika između direktnog i registarskog načina adresiranja?2. Koja je razlika između neposrednog i PC relativnog načina adresiranja?3. Koje su mikrooperacije potpuno iste za sve načine adresiranja?4. Koliko bitova ima na raspolaganju operand u zavisnosti od načina adresiranja?5. Gde se smešta rezultat nakon izvršenja instrukcije OR?6. Koji načini adresiranja su mogući za instrukciju SUB,JZ,POP,LD?

64

Page 65: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

Literatura

Dr. Prof. Mile Stojčev RISC, CISC i DSP Procesori

65

Page 66: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

Instruk-cija

TokMikro-operacije PC AC IR IND MAR R__ R__ M[__] M[__]

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

66

Page 67: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

____________________________________________________________

67

Page 68: Jednostavna sekvencijalna procesorska jedinicaes.elfak.ni.ac.rs/Files/AddressSim.doc · Web view6) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit (Slika

68