ORT2/K2 2019

Izvor: SI Wiki
< ОРТ2
Datum izmene: 30. januar 2021. u 19:29; autor: KockaAdmiralac (razgovor | doprinosi) (Ispravke)
Pređi na navigaciju Pređi na pretragu

Postavka

Posmatra se deo računara koji čine memorija i procesor.

Memorija je kapaciteta 216 bajtova. Širina memorijske reči je 1 bajt. Procesor je sa jednoadresnim formatom instrukcija. Podaci su celobrojne veličine sa znakom dužine 1 bajt predstavljeni u drugom komplementu. Adrese u memoriji zauzimaju dve susedne memorijske lokacije, pri čemu se mlađi bajt nalazi na višoj lokaciji, a stariji bajt na nižoj lokaciji.

U procesoru postoji registar programskog brojača PC dužine 2 bajta, adresni registar memorije MAR dužine 2 bajta, prihvatni registar podatka memorije MDR dužine 1 bajt, prihvatni registar instrukcije IR dužine 3 bajta, akumulator A dužine 1 bajt, prihvatni registar podatka B dužine 1 bajt, registri opšte namene R0 do R3 dužine 2 bajta, programska statusna reč PSW dužine 1 bajt, ukazivač na vrh steka SP dužine 2 bajta. Instrukcije su dužine 1, 2 ili 3 memorijske reči.

Podaci se pri upisu u registre opšte namene smeštaju u nižih 8 bitova, dok se viših osam popunjava znakom podatka. Pri čitanju podataka iz registara opšte namene koriste se nižih 8 bitova. Kod upisa ili čitanja adrese iz registra opšte namene koriste se svih 16 bitova.

Bitovi 7, 6, 5 i 4 prvog bajta instrukcije ima vrednost 0 za instrukcije skoka, pri čemu bit 3 prvog bajta instrukcije ima vrednost 0 za instrukcije uslovnog skoka i 1 za instrukcije bezuslovnog skoka. Instrukcija uslovnog skoka je instrukcija uslovnog skoka ukoliko nije došlo do prenosa (BNC). Bitovima 2 do 0 prvog bajta instrukcije specificira se kod operacije za instrukcije uslovnog skoka. Na osnovu toga je za instrukciju BNC usvojen kod operacije 00000000. Instrukcija BNC se realizuje kao relativni skok u odnosu na tekuću vrednost programskog brojača PC, a pomeraj je 8 bitna celobrojna veličina sa znakom data drugim bajtom instrukcije. Dužina instrukcije je dva bajta. Instrukcije bezuslovnog skoka su instrukcija bezuslovnog skoka (JMP) i instrukcija skoka na potprogram (JSR). Bitovima 2 do 0 prvog bajta instrukcije se specificira kod operacije za instrukcije bezuslovnog skoka. Na osnovu toga su za instrukcije JMP i JSR usvojeni kodovi operacija 00001000 i 00001001, respektivno. Instrukcije JMP i JSR se realizuju kao apsolutni skokovi, a adresa skoka je data drugim i trećim bajtom instrukcije. Dužina instrukcija je tri bajta.

Bitovi 7, 6, 5 i 4 prvog bajta instrukcije ima vrednost 1 za bezadresne instrukcije. Bezadresne instrukcije su instrukcije stavljanja sadržaja akumulatora na stek (PUSH), instrukcija skidanja sadržaja sa steka u akumulator (POP), instrukcija povratka iz potporgrama (RTS) i instrukcija aritmetičkog pomeranja sadržaja akumulatora udesno za jedno mesto (ASRA). Bitovima 3 do 0 prvog bajta instrukcije specificira se kod operacije za bezadresne instrukcije. Na osnovu toga su za instrukcije PUSH, POP, RTS i ASRA usvojeni kodovi operacija 11110000, 11110001, 11110010 i 11110011, respektivno. Dužina instrukcija je jedan bajt.

Bitovi 7, 6, 5 i 4 prvog bajta instrukcije ima[sic] vrednost u opsegu 0001 do 1110 za adresne instrukcije. Adresne instrukcije su instrukcija prenosa u akumulator (LD), instrukcija prenosa iz akumulatora (ST), instrukcija uvećavanja operand[sic] za jedan, sa tim da se rezultat smešta i u operand i u akumulator (INC), aritmetička instrukcija oduzimanja (SUB) i logička instrukcija ekskluzivno ILI (XOR). Na osnovu toga su za instrukcije LD, ST, INC, SUB i XOR usvojeni kodovi operacija 0001, 0010, 0011, 0100 i 0101 respektivno. Dužina instrukcija je jedan, dva ili tri bajta i zavisi od specificiranog načina adresiranja.

Načini adresiranja su specificirani bitovima 3 i 2 prvog bajta instrukcije i to na sledeći način: 00-neposredno adresiranje, 01-registarsko direktno adresiranje, 10-registarsko indirektno adresiranje sa postinkrementiranjem, 11-memorijsko indirektno adresiranje.

Kod neposrednog adresiranja 8 bitni operand je dat drugim bajtom instrukcije. Bitovi od 1 do 0 prvog bajta instrukcije se ne koriste. Dužina instrukcija je 2 bajta.

Kod memorijskog indirektnog adresiranja adresa memorijske lokacije je data drugim i trećim bajtom instrukcije. Bitovi 1 do 0 prvog bajta instrukcije se ne koriste. Dužina instrukcija je 3 bajta.

Kod registarskog direktnog i kod registarskog indirektnog adresiranja sa postinkrementiranjem, bitovi 1 i 0 drugog[1] bajta instrukcije se koriste za adresiranje jednog od registara opšte namene R0 do R3. Dužina instrukcije je 1 bajta[sic].

Stek raste prema višim adresama u memoriji, a registar SP pokazuje na prvu slobodnu lokaciju na steku.

Procesor ne sadrži podršku za obradu prekida.

  1. Napisati izraze za generisanje signala svih načina adresiranja. IR registar se popunjava od viših ka nižim bitovima.
  2. Napisati izraze za generisanje signala operacija i to samo za PUSH i INC.
  3. Nacrtati dijagram toka faze formiranja adrese i čitanja operanda i faze izvršavanje[sic] instrukcije.
  4. Dati su početni sadržaji registara i indikatora: PC=1000h, SP=2002h, ACC = 00h, R1=000Bh, N=0, Z=1, V=0 i C=0. Indikatori statusne reči na koje instrukcije ne utiče treba da ostanu nepromenjeni. Izvršiti 5 sukcesivnih naredbi i za svaku naredbu odrediti sledeće: u fazi čitanja instrukcije - memorijske adrese sa kojih je pročitana instrukcija, sadržaj registra IR, instrukciju koja je pročitana i novi sadržaj registra PC; u fazi određivanja adrese operanda i čitanja operanda - memorijske adrese sa kojih je pročitana adresa operanda, memorijske adrese sa kojih je pročitan operand, vrednost operanda i novi sadržaj registara opšte namene koji su u ovoj fazi promenjeni; u fazi izvršavanja operacije - memorijske adrese kojima se u ovoj fazi pristupa, sadržaj akumulatora A i indikatora N, Z, V i C nakon izvršavanja instrukcije i novi sadržaj registara i memorijskih lokacija koji su u ovoj fazi promenjeni. Rezultate predstaviti u tabelama 1, 2 i 3 formulara.

Rešenje

Kodovi operacija

Signali

Dijagrami toka

ADDR

EXEC

Memorija

Napomene

  1. Ima mnogo više smisla da ovi bitovi budu u prvom bajtu instrukcije, ali je pisalo ovako. Ne zna se da li je ovaj deo greška, ali pošto je na prethodnom drugom kolokvijumu na ovom mestu pisalo "drugog", pretpostavlja se da je samo greška u kopiranju.