ORT2/K2 Februar 2021
K2 2020 je održan u februarskom ispitnom roku 2021.
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 dužine 8 bita bez znaka, a adrese 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 1 bajt, prihvatni registar podatka B dužine 1 bajt, 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.
Prilikom čitanja podataka iz registra opšte namene, uzima se nižih 8 bita.
Bitovi 7 i 6 prvog bajta instrukcije su 00 za sve instrukcije skoka. Kod instrukcija uslovnog skoka bit 5 prvog bajta instrukcije je 0, dok kod instrukcija bezuslovnog skoka bit 5 prvog bajta instrukcije je 1. Instrukcija uslovnog skoka je instrukcija uslovnog skoka ukoliko je rezultat nula (JZ), a instrukcije bezuslovnog skoka su instrukcija bezuslovnog skoka (JMP) i instrukcija skoka na potprogram (JSR). Bitovima 4 do 0 prvog bajta instrukcije specificira se kod operacije i na osnovu toga su za instrukcije JZ, JMP i JSR usvojeni kodovi operacije 00000000, 00100000 i 00100001, respektivno. Instrukcije JZ, JMP i JSR se realizuju kao apsolutni skokovi, pri čemu je adresa data drugim i trećim bajtom instrukcije. Dužina instrukcija je 3 bajta.
Bit 7 i 6 prvog bajta instrukcije su 11 za sve adresne i bezadresne instrukcije.
Bit 5 prvog bajta instrukcije je 0 za bezadresne instrukcije. Bezadresne instrukcije su instrukcije stavljanja sadržaja akumulatora na stek (PUSH), punjenja akumulatora sadržajem sa steka (POP), inkrementiranje akumulatora (INC) i povratka iz potprograma (RTS). Bitovima 4 do 0 prvog bajta instrukcije specificira se kod operacije za bezadresne instrukcije. Na osnovu toga su za instrukcije PUSH, POP, INC i RTS usvojeni kodovi operacija 11000000, 11000001, 11000010 i 11000011, respektivno. Dužina instrukcija je 1 bajt.
Bit 5 prvog bajta instrukcije je 1 za adresne instrukcije. Adresne instrukcije su instrukcija prenosa u akumulator (LD), instrukcija prenosa iz akumulatora (ST), logička instrukcija "i" (AND), instrukcija aritmetičkog pomeranja operanda jedno mesto udesno koja smešta rezultat u akumulator (ASR) i instrukcija bezuslovnog skoka na sračunatu adresu (JADR). Bitovima 4 do 0 prvog bajta instrukcije specificira se kod operacije za adresne instrukcije. Na osnovu toga su za instrukcije LD, ST, AND, ASR i JADR usvojeni kodovi operacija 11100000, 11100001, 11100010, 11100011 i 11100100 respektivno. Dužina instrukcija je 2 ili 4 bajta i zavisi od specificiranog načina adresiranja.
Načini adresiranja su specificirani bitovima 7, 6 i 5 drugog bajta instrukcije i to na sledeći način: 000-registarsko indirektno adresiranje (regind), 001-registarsko direktno adresiranje (regdir), 010-memorijsko indirektno adresiranje (memind), 011-relativno adresiranje sa pomerajem (pcrel) i 100-neposredno adresiranje (immed). Kod registarskog direktnog i registarskog indirektnog adresiranja koristi neke od registara opšte namene R0 do R15 specificiranih bitovima od 4 do 1 drugog bajta. Bit 0 drugog bajta instrukcije se ne koristi. Dužina instrukcija je 2 bajta. Kod memorijskog indirektnog adresiranja 16 bitna adresa memorijske lokacije je data trećim i četvrtim bajtom instrukcije. Bitovi 4 do 0 drugog bajta intrukcije se ne koriste. Dužina instrukcije je 4 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 8 bitni operand dat je trećim bajtom instrukcije. Bitovi 4 do 0 drugog bajta instrukcije se ne koriste. Dužina instrukcija je 3 bajta.
Stek raste prema nižim memorijskim lokacijama, a registar SP ukazuje na poslednju zauzetu memorijsku lokaciju. Procesor nema mogućnost obrade prekida.
Procesor nema podršku za detektovanje greške u adresiranju u prvoj fazi, već tako pročitane instrukcije ignorišu u ostalim fazama.
Prvi korak svake faze smatrati da se označava sa FETCH, ADDR, EXEC.
- 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 INC, AND i ASR.
- Nacrtati dijagram toka faze formiranja adrese i čitanja operanda i faze izvršavanje[sic] instrukcije.
Rešenje
Kodovi operacija
/
Signali