ORT2/K2 2022
- Ovaj rok nije rešen. Pomozite SI Wiki tako što ćete ga rešiti.
Drugi kolokvijum 2022. godine održan je 11. decembra 2022. i trajao je 1h30min.
Postavka
Posmatra se deo računara koji čine memorija i procesor. Memorija je kapaciteta 2¹⁶ bajtova. Širina memorijske reči je 1 bajt. Procesor je sa jednoadresnim formatom instrukcija. Adrese i podaci su dužine 16 bita i zauzimaju po dve susedne memorijske lokacije, pri čemu se stariji bajt nalazi na višoj, a mlađi bajt na nižoj adresi.
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 2 bajta, prihvatni registar podatka B dužine 2 bajta, registri opšte namene R0 do R15 dužine 2 bajta, programska statusna reč PSW dužine 1 bajt. Instrukcije su dužine 1, 2, 3 ili 4 bajta.
Bitovi 7, 6, 5 prvog bajta instrukcije su 000 za sve instrukcije skoka. Kod instrukcija uslovnog skoka bitovi 4 i 3 prvog bajta instrukcije su 00, dok kod instrukcija bezuslovnog skoka bitovi 4 i 3 prvog bajta instrukcije su 11. Instrukcija uslovnog skoka je instrukcija uslovnog skoka ukoliko rezultat nije bio nula (JNZ), a instrukcija bezuslovnog skoka je instrukcija bezuslovnog skoka (JMP). Bitovima 2 do 0 prvog bajta instrukcije specificira se kod operacije i na osnovu toga su za instrukcije JNZ i JMP usvojeni kodovi operacije 00000000 i 00011000 respektivno. Instrukcije JNZ i JMP se realizuju kao apsolutni skokovi, pri čemu je adresa data drugim i trećim bajtom instrukcije pri čemu je mlađi bajt adrese skoka dat drugim, a stariji bajt trećim bajtom. Dužina instrukcija je 3 bajta.
Bitovi 7, 6, 5 prvog bajta instrukcije su 001 za sve adresne i bezadresne instrukcije.
Bit 4 prvog bajta instrukcije je 0 za sve bezadresne instrukcije. Bezadresna instrukcija je instrukcija povratka iz potprograma (RTS). Bitovima 3 do 0 prvog bajta instrukcije specificira se kod operacije za bezadresne instrukcije. Na osnovu toga za instrukciju RTS je usvojen kod operacije 00100000. Dužina instrukcije je 1 bajt.
Bit 4 prvog bajta instrukcije je 1 za sve adresne instrukcije. Adresne instrukcije su instrukcije prenosa u akumulator (LD), instrukcije prenosa iz akumulatora (ST), logička instrukcija komplementiranja operanda koja smešta rezultat u akumulator (NOT), instrukcija logičkog rotiranja operanda za jedno mesto ulevo preko bita prenosa (ROLC), instrukcija bezuslovnog skoka na potprogram čija je adresa data sračunatom adresom (JSR), instrukcija stavljanja sadržaja operanda na stek (PUSHG) i instrukcija skidanja operanda sa steka (POPG). Bitovima 3 do 0 prvog bajta instrukcije specificira se kod operacije za adresne instrukcije. Na osnovu toga za instrukcije LD, ST, NOT, ROLC, JSR, PUSHG i POPG usvojeni su kodovi operacija 00110000, 00110001, 00110010, 00110011, 00110100, 00110101, 00110110 respektivno. Dužina instrukcija je 2 ili 4 bajta i zavisi od specificiranog načina adresiranja. Instrukcija PUSHG je dozvoljena samo sa neposrednim i registarskim direktnim adresiranjem, a instrukcija POPG je dozvoljena samo sa registarskim direktnim adresiranjem. U slučaju da se ove instrukcije jave sa nekim drugim adresiranjima (ne sa gore navedenim) onda instrukcije treba da budu bez dejstva.
Načini adresiranja su specificirani bitovima 7, 6 i 5 drugog bajta instrukcije i to na sledeći način: 000 – memorijsko direktno adresiranje (memdir), 001 – registarsko direktno adresiranje (regdir), 010 – registarsko indirektno adresiranje (regind), 011 – relativno adresiranje sa pomerajem (pcrel) i 100 – neposredno adresiranje (immed). Kod memorijskog direktnog adresiranja 16 bitna adresa memorijske lokacije data je trećim i četvrtim bajtom instrukcije. Bitovi 4 do 0 drugog bajta instrukcije se ne koriste. Dužina instrukcije je 4 bajta. Kod registarskog direktnog i registarskog indirektnog adresiranja, koristi se neki od registara opšte namene R0 do R15 specificiranih bitovima 3 do 0 drugog bajta. Bit 4 se ne koristi. Dužina instrukcije je 2 bajta. Kod relativnog adresiranja sa pomerajem treći i četvrti bajt instrukcije sadrže 16 bitni pomeraj koji je dat kao celobrojna veličina bez znaka. Bitovi 4 do 0 drugog bajta instrukcije se ne koriste. Dužina instrukcija je 4 bajta. Kod neposrednog adresiranja 16 bitni operand dat je trećim i četvrtim bajtom instrukcije. Bitovi 4 do 0 drugog bajta instrukcije se ne koriste. Dužina instrukcija je 4 bajta.
Stek raste prema višim memorijskim lokacijama, a registar SP ukazuje na prvu slobodnu memorijsku lokaciju. Procesor nema mogućnost obrade prekida.
a) Napisati izraz za generisanje signala adr2 koji je aktivan ukoliko je pročitana instrukcija adresna instrukcija dužine dva bajta i branch3 [1] koji je aktivan ukoliko je pročitana instrukcija instrukcija uslovnog skoka dužine tri bajta.
b) Napisati izraze za generisanje signala svih načina adresiranja. IR registar se popunjava od nižih ka višim bajtovima. [2]
v) Napisati izraze za generisanje signala operacija i to samo za JNZ i ROLC.
g) Nacrtati dijagram toka faze formiranja adrese i čitanja operanda i faze izvršavanja instrukcije.