ORT2/K2 2019
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 botiva. 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 instrukcija je dva bajta. Instrukcije bezuslovnog skoka su instrukcija bezuslovnog skoka (JMP) i instrukcija skoka na potprogram (JSR). Bitovima 2 do 0 prvog bajta instrukcije specificira se kod operacije za instrukcije bezuslovnog skoka. Na osnovu toga su za instrukcije JMP i JSR usvojeni kodovi operacije 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.
- Napisati izraze za generisanje signala svih načina adresiranja. IR registar se popunjava od viših ka nižim bitovima.
- Napisati izraze za generisanje signala operacija i to samo za PUSH i INC.
- Nacrtati dijagram toka faze formiranja adrese i čitanja operanda i faze izvršavanje[sic] instrukcije.
- 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 svaki 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
FETCH
ADDR
EXEC
Memorija
Napomene
- ↑ 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.