You are on page 1of 6

Alati za arhitekturu raunara c

Mladen Nikoli c

1
1.1

SIM - simulator za mali mainski jezik s


Opis raunara c

Jednostavan, ktivni raunar za koji je mainski jezik sasatavljen, raspolae c s z jednostavnim procesorom i unutranjom memorijom. s

1.1.1

Memorija

Memorija sadri 256 8-bitnih memorijskih lokacija. z 1.1.2 Registri

Procesor sadri sledee registre: z c c 8-bitni akumulator koji uva rezultate operacija. Broja instrukcija koji sadri adresu instrukcije koja je na redu da bude c z izvrena. s z c 4-bitni ags registar koji sadri ag-ove koji signaliziraju razna znaajna stanja. 1.1.3 Flag-ovi

Flag-ovi imaju sledee skracenice i znaenja: c c V - Overow - Biva postavljen kad dodje do prekoraenja pri sabiranju c ako se brojevi smatraju oznaenim, ukoliko se komplementira najmanji c negativan broj i ako pomeranje ulevo promeni znak vrednosti akumulatora. S - Sign - Postavlja se ako je sadraj akumulatora, shvaen kao oznaen z c c broj, negativan. U suprotnom se ponitava. s Z - Zero - Postavlja se ako je sadraj akumulatora 0. U suprotnom se z ponitava. s

C - Carry - Postavlja se kad dodje do prekoraenja pri sabriranju ako c se brojevi shvate kao neoznaeni. Takodje, u njega se upisuje vrednost c poslednjeg istisnutog bita pri pomeranju vrednosti akumulatora. 1.1.4 Skup instrukcija

Za svaku instrukciju sledi skraenica, numerika vrednost i znaenje. Bitna inc c c formacija je i da li instrukcija zahteva argument. Njegovo znaenje je odredjeno c nainom adresiranja. Instrukcije koje zahtevaju argument su dvobajtne, dok su c instrukcije koje ne zahtevaju argument jednobajtne. MUA 0x0 - Upisuje broj u akumulator. Broj moe biti dat neposredno ili z se moe nalaziti u memoriji. Zahteva argument. z AUM 0x1 - Upisuje sadraj akumulatora na odredjenu memorijsku lokaciju. z Zahteva argument. Ne dozvoljava neposredno adresiranje. ADD 0x2 - Sabira sadraj akumulatora sa nekim brojem koji se, ponovo, z moe nalaziti u memoriji ili moe biti dat neposredno. Rezultat ostaje u z z akumulatoru. Zahteva argument. CPL 0x3 - Komplementira sadraj akumulatora u smislu potpunog komz plementa. Ne uzima argument. Nain adresiranja nije bitan. c AND 0x4 - Izraunava bitsku konjunkciju sadraja akumulatora i nekog c z broja koji moe biti zadat slino instrukcijama MUA, ADD... Rezultat, z c naravno, ostaje u akumulatoru. Zahteva argument. c z XOR 0x5 - Izraunava bitsku ekskluzivnu disjunkciju sadraja akumulatora i nekog broja. Zahteva argument. SHL 0x6 - Pomeranje sadraja akumulatora za odredjeni broj mesta ulevo. z Zahteva argument. SHR 0x7 - Aritmetiko pomeranje sadraja akumulatora udesno. Zahteva c z argument. HALT 0x8 - Zaustavlja izvravanje programa. Ne uzima argument. Nain s c adresiranja nije bitan. JZ 0x9 - Prenosi izvravanje programa na zadatu adresu ukoliko je postavls jen zero ag. Argument je upravo adresa na kojoj se nastavlja izvravanje. s ADDC 0xA - Sabira sadraj akumulatora sa datim brojem i sadrajem z z carry ag-a. Zahteva argument. FUA 0xB - Upisuje ags registar u akumulator u redosledu bitova: overow, sign, zero, carry.

1.1.5

Naini adresiranja c

Na raspolaganju su etiri naina adresiranja: c c Neposredno 0x1 - Argument je sadran u drugom bajtu insturkcije. z Direktno 0x0 - Argument se nalazi u memoriji na adresi koja je data u drugom bajtu instrukcije. Indirektno 0x2 - Drugi bajt instrukcije sadri memorijsku adresu na kojoj z se nalazi adresa na kojoj se nalazi argument. Relativno 0x3 - Drugi bajt sadri udaljenje (pozitivno ili negativno) u z odnosu na adresu tekue instukcije ijim se sabiranjem dobija adresa na c c kojoj se nalazi argument. 1.1.6 Format instrukcije

Instrukcije se sastoje od jednog ili dva bajta. Drugi bajt predstavlja podatak koji se tumai u zavisnosti od naina adresiranja i vezan je za argument instrukc c cije. Prvi bajt ima binarni oblik: IIII00AA, gde su sa I oznaeni bitovi pomou c c kojih se zapisuje operacioni kod instrukcije, a oni oznaeni sa A odredjuju nain c c adresiranja.

1.2

Opis korienja simulatora sc

Simulator se pokree iz komandne linije bez argumenata. Raspolae skupom c z interaktivnih komandi za punjenje memorije, pokretanje programa i jednostavno debagovanje. 1.2.1 Komande

Komande se simulatoru jednostavno zadaju. Komanda se sastoji od jednog slova i moe biti praena argumentom. Sledi spisak komandi uz kratke opise. Sve z c adrese koje se navode moraju biti zadate kao dvocifreni heksadekadni brojevi. q (quit) - Prekida rad simulatora. l (load) - Puni memodiju sadrajem fajla. Ime fajla je obavezan argument z ove komande. r (run) - Pokree izvravanje programa sa odredjene adrese koja je data c s kao obavezan argument. p (print) - Ispisuje sadraj memorije na zadatoj adresi ili u zadatom opsegu z adresa (npr. A1-FA). b (breakpoint) - Slui za manipulaciju breakpoint-ima koji omoguavaju z c prekid izvravanja programa na adresama na kojima su postavljeni. Ukos liko se ne navede argument, tampaju se sve adrese na kojima se nalaze s 3

breakpoint-i. Ukoliko je data adresa kao argument, breakpoint se postavlja na toj adresi, ako na njoj ve ne postoji, a uklanja se ako ve postoji. c c c (continue) - Nastavlja prekinuto izvravanje programa od adrese koja se s nalazi u instruction counter-u. n (next) - Izvrava instrukciju iju adresu sadri instruction counter koji s c z se uz to poveava. Omoguava korak po korak izvravanje i ekasno dec c s bagovanje. a (accumulator) - Ispisuje sadraj akumulatora. z i (instruction counter) - Ispisuje sadraj instruction counter-a. z f (ags) - Ispisuje sadraj ags registra u poretku VSZC. z 1.2.2 Format ulaznog fajla

Ulazni fajl se sastoji od niza linija. Svaka linija se sastoji od niza dvocifrenih heksadekadnih brojeva koji mogu biti razdvojeni radi itljivosti, ali to c nije neophodno. Prvi broj u liniji je uvek adresa memorijske lokacije od koje poinje punjenje sadrajem linije. Ostali brojevi se smetaju na uzastopne memc z s orijske lokacije poevi od one kojoj odgovara adresa koja je data ne poetku c s c linije. Na kraju svake linije moe se pojaviti komentar koji poinje znakom @ i z c vai do kraja linije. z

ASM1 - jednoprolazni asembler

Asembler ASM1 prevodi program napisan u jednostavnom asemblerskom jeziku na mainski jezik i koji se moe izvravati na SIM-u. Karakteristino je da se s z s c uvode skraenice za instrukcije, ali je neophodno koristiti apsolutne adrese. c

2.1

Instrukcije

Skup instrukcija odgovara skupu instrukcija koje su dostupne u mainskom s jeziku, sa razlikom to se umesto operacionih kodova piu odgovarajue skraenice s s c c za instrukcije. Ove skraenice su navedene u odeljku koji se bavi instrukcijama c mainskog jezika. s

2.2

Naini adresiranja c

Za razliite naine adresiranja se uvode oznake koje stoje uz argument instrukc c cije. Oznake su sledece. Direktno adresiranje - Bez oznake Neposredno adresiranje - # Indirektno adresiranje - [argument] 4

Relativno adresiranje - (argument)

2.3

Nain korienja c sc

Asembler se poziva iz komandne linije navodjenjem imena izvrnog fajla - asm1. s Mogua su dva parametra komandne linije. Prvi je obavezan i predstavlja ime c ulazne datoteke sa programom napisanim u asemblerskom jeziku. Drugi je opcion i predstavlja ime izlazne datoteke. Ukoliko nije naveden, izlazna datoteka se naziva a.out.

2.4

Format ulaznog fajla

Ulazni fajl se sastoji od vie sekcija. Sekcije mogu biti za podatke ili za program. s Prvo se navode sve sekcije za podatke, a onda sve sekcije za program. Sekcija bilo kog tipa moe biti vie od jedne. z s Sekcija za prodatke se navodi direktivnom .data iza koje sledi adresa poevsi od c koje se podaci piu u memoriju, a posle nje se navode jednobajtni brojevi koji s predstavljaju podatke. Za podatke je rezervisan memorijski prostor sa adresama od 160 do 255, ukljuujui. c c Sekcija za program se navodi direktivom .prg iza koje sledi adresa poevi od c s koje se program upisuje u memoriju, a posle nje se navode instrukcije koje ine c program. Za program je rezervisan memorijski prostor sa adresama od 0 do 159, ukljuujui. c c Svi brojevi koji se pojavljuju u programu moraju biti jednobajtni. Brojevi se zapisuju dekadno. Mogu je zapis oznaenih i neoznaenih brojeva. Neoznaeni c c c c se piu bez znaka i imaju raspon od 0 do 255. Oznaeni su svi brojevi napisani s c sa znakom. Imaju raspon od -128 do +127. Naravno, ovaj nain pisanja je c samo pogodnost korisniku prilikom zapisivanja brojeva i ni na koji nain se ne c garantuje doslednost u tretiranju brojeva kao oznaenih ili neoznaenih. Na to c c mora da pazi korisnik.

ASM2 - dvoprolazni asembler

Osnovna razlika izmedju ASM1 i ASM2 je to se u drugom asembleru dozvoljava s upotreba promenljivih i oznaka, odnosno uvode se simbolika imena za memoc rijske adrese. Imena instrukcija su ista, a takodje i oznake naina adresiranja. c Takodje, ASM2 se poziva na isti nain kao ASM1. c

3.1

Format ulaznog fajla

Program se sastoji od tri vrste sekcija. To su sekcija za promenljive, sekcije za podatke i sekcija za program. Dozvoljena je samo jedna sekcija za promenljive i samo jedna sekcija za program, dok moe postojati vie sekcija za podatke. z s Sekcija za promenljive se navodi direktivom .var bez argumenata. Dalje se navode promenljive koje se koriste u programu. Svaka promenljiva mora biti

praena vrednou kojim se inicijalizuje. Za promenljive je odvojen prostor c sc sa adresama od 200 do 255. Smetanjem promenljivih u memoriju upravlja s asembler prilikom prevodjenja. Za sekciju podataka vai sve to je reeno za ASM1, osim ogranienja da adrese z s c c moraju biti od 160 do 199. Sekcija za program poinje direktivom .prg bez argumenata. Program se smeta c s u memoriju poevi od adrese 0x00. c s Kao argumenti instrukcija sada se mogu pojavljivati i promenljive i oznake. Oznake se navode u programu tako to se na odredjenom mestu navede ime s oznake koje se zavrava karakterom :. Prilikom korienja oznake ovaj karakter s sc se ne navodi.

You might also like