Professional Documents
Culture Documents
Mladen Nikoli c
1
1.1
Jednostavan, ktivni raunar za koji je mainski jezik sasatavljen, raspolae c s z jednostavnim procesorom i unutranjom memorijom. s
1.1.1
Memorija
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
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
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
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
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.
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
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.