ORT2/K2 2018
- Ovaj rok nije rešen. Pomozite SI Wiki tako što ćete ga rešiti.
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 stariji bajt nalazi na višoj lokaciji, a mlađi 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 4 bajta, akumulator A dužine 1 bajt, prihvatni registar podatka B dužine 1 bajt, registri opšte namene R0 do R63 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, 3 ili 4 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.
Bit 7 prvog bajta instrukcije ima vrednost 0 za instrukcije skoka, pri čemu bit 6 prvog bajta instrukcije ima vrednost 0 za instrukcije uslovnog skoka i 1 za instrukcije bezuslovnog skoka. Instrukcija uslovnog skoka je instrukcija uslovnog skoka ukoliko rezultat nije nula (BNZ). Bitovima 5 do 0 prvog bajta instrukcije specificira se kod operacije za instrukcije uslovnog skoka. Na osnovu toga je za instrukciju BNZ usvojen kod operacije 00000000. Instrukcija BNZ 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 5 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 01000000 i 01000001, 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.
Bit 7 prvog bajta instrukcije ima vrednost 1 za bezadresne i adresne instrukcije, pri čemu bit 6 prvog bajta instrukcije ima vrednost 0 za bezadresne instrukcije i 1 za adresne instrukcije. Bezadresne instrukcije su instrukcije stavljanja sadržaja akumulatora na stek (PUSH), instrukcija skidanja sadržaja sa steka u akumulator (POP) i instrukcija povratka iz potporgrama (RTS). Bitovima 5 do 0 prvog bajta instrukcije specificira se kod operacije za bezadresne instrukcije. Na osnovu toga su za instrukcije PUSH, POP i RTS usvojeni kodovi operacija 10000000, 10000001 i 10000010, respektivno. Dužina instrukcija je jedan bajt. Adresne instrukcije su instrukcija prenosa u akumulator (LD), instrukcija prenosa iz akumulatora (ST), aritmetička instrukcija oduzimanja (SUB), instrukcija logičkog pomeranja udesno za jedno mesto (LSR) i instrukcija bezuslovnog skoka na sračunatu adresu (JADR). Bitovima 5 do 0 prvog bajta instrukcije specificira se kod operacije za adresne instrukcije. Na osnovu toga su za instrukcije LD, ST, SUB, LSR i JADR usvojeni kodovi operacija 11000000, 11000001, 11000010, 11000011 i 11000100 respektivno. Dužina instrukcija je dva, tri ili četiri bajta i zavisi od specificiranog načina adresiranja.
Načini adresiranja su specificirani bitovima 7 i 6 druge reči instrukcije i to na sledeći način: 00-neposredno adresiranje, 01-registarsko direktno adresiranje, 10-registarsko indirektno adresiranje, 11-memorijsko direktno adresiranje.
Kod neposrednog adresiranja 8 bitni operand je dat trećom rečju instrukcije. Bitovi od 5 do 0 druge reči instrukcije se ne koriste. Dužina instrukcija je 3 bajta.
Kod memorijskog direktnog adresiranja adresa memorijske lokacije je data trećom i četvrtom rečju instrukcije. Bitovi od 5 do 0 druge reči instrukcije se ne koriste. Dužina instrukcija je 4 bajta.
Kod registarskog direktnog i kod registarskog indirektnog adresiranja, bitovi od 5 do 0 druge reči instrukcije se koriste za adresiranje jednog od registara opšte namene R0 do R63. Dužina instrukcije je 2 bajta.
Stek raste prema niž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 memdir koji je aktivan ukoliko se koristi memorijsko direktno adresiranje i regind koji je aktivan ukoliko se koristi registarsko indirektno adresiranje, kao i izraz SUB koji je aktivan ukoliko instrukcija izvršava aritmetičku operaciju oduzumanja. IR registar se popunjava od viših ka nižim bitovima.
- 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=2000h, ACC = 06h, R0=00A7h, R1=031Bh, R2=00E2h, R3=FFE3h, N=0, Z=0, 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.[1]
Rešenje
Kodovi operacija
Signali
Dijagrami toka
ADDR
EXEC
Memorija
- ↑ Počev od školske 2020/2021. godine, ovakva stavka dolazi tek na trećem kolokvijumu.