ORT2/K2 2021
K2 2021 je održan u redovnom terminu. Rađen je u 2 grupe. U nastavku je data postavka koju je radila prva grupa (RTI smer).
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. 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 RS 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 Z bajta, akumulator A dužine 2 bajta, prihvatni registar podatka V dužine 2 bajta, bazni registar BR dužine 2 bajta, indeksni registar XR dužine 2 bajta, programska statusna reč PSW dužine 1 bajt. Instrukcije su dužine 1, 2sciili 3 bajta.
Bit 7 prvog bajta instrukcije je 1 za sve instrukcije skoka. Kod instrukcija uslovnog skoka bit 6 prvog bajta instrukcije je 0, dok kod instrukcija bezuslovnog skoka bit 6 prvog bajta instrukcije je 1. Instrukcija uslovnog skoka je instrukcija uslovnog skoka ukoliko je bilo prenosa (JC) i instrukcija uslovnog skoka ukoliko je rezultat nula (BZ), a instrukcije bezuslovnog skoka su instrukcija bezuslovnog skoka (JMP) i instrukcija skoka na potprogram (JSR). Bitovima 5 do 0 prvog bajta instrukcije specificira se kod operacije i na osnovu toga su za instrukcije JC, Be: JMP i JSR usvojeni kodovi operacije 10000000, 10000001sic, 11000001 i 11000010, respektivno. Instrukcije JC, 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. Instrukcija VZ se realizuje kao relativni skok u odnosu na tekuću vrednost programskog brojača RS. Drugim bajtom instrukcije je dat pomeraj kao označena osmobitna binarna vrednost. Dužina instrukcija je 2 bajta.
Bit 7 prvog bajta instrukcije je 0 za sve adresne i bezadresne instrukcije. Bit 6 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) i povratka iz potprograma (RTS). Bitovima 5 do O prvog bajta instrukcije specificira se kod operacije za bezadresne instrukcije. Na osnovu toga su za instrukcije PUSH, POP i RTS usvojeni kodovi operacija 00000000, 00000001 i 00000011, respektivno. Dužina instrukcija je 1 bajt.
Bit 6 prvog bajta instrukcije je 1 za adresne instrukcije. Adresne instrukcije su instrukcija prenosa u akumulator (LD), instrukcija prenosa iz akumulatora (ST), aritmetička instrukcija sabiranja (ADD), instrukcija aritmetičkog pomeranja operanda jedno mesto ulevo koja smešta rezultat u akumulator (ASL) i instrukcija bezuslovnog skoka na sračunatu adresu (JADR). Bitovima 5 do 3 prvog bajta instrukcije specificira se kod operacije za adresne instrukcije. Na osnovu toga su za instrukcije LD, ST, ADD, ASL i JADR usvojeni kodovi operacija 01000, 01001, 01010, 01011 i 01100 respektivno. Načini adresiranja su specificirani bitovima 2, 1 i 0 prvog bajta instrukcije i to na sledeći način: 000-memorijsko direktno adresiranje (memdir), 001-memorijsko indirektno adresiranje (memind), 010-bazno adresiranje sa pomerajem (brpom), 011-relativno adresiranje sa pomerajem (pcrel) i 100-neposredno adresiranje (immed). Kod memorijskog direktnog i indirektnog adresiranja 16 bitna adresa memorijske lokacije je data drugim i trećim bajtom instrukcije. Dužina instrukcija je 3 bajta Kod baznog i relativnog adresiranja sa pomerajem, drugi i treći bajt instrukcije sadrže 16 bitni pomeraj koji je dat kao celobrojna veličina sa znakom. Dužina instrukcija je 3 bajta. Kod neposrednog adresiranja 16 bitni operand dat je drugim i trećim bajtom instrukcije. Dužina instrukcija je 3 bajta.
U procesoru se nalazi signal gradr koji je aktivan ukoliko pročitana instrukcija ima grešku pri adresiranju. Ovaj signal se proverava u fazi čitanja instrukcije i ukoliko je aktivan, prelazi se na fazu čitanja naredne instrukcije, a ukoliko nije aktivan nastavlja se sa izvršavanjem naredne faze instrukcije.
Stek raste prema nižim memorijskim lokacijama, a registar SP ukazuje na prvu slobodnu memorijsku lokaciju. Procesor nema mogućnost obrade prekida.
- Napisati izraz za generisanje signala gradr koji je aktivan ukoliko pročitana instrukcija ima grešku pri adresiranju.
- Koliki pomeraj u instrukciji koja se nalazi na adresi 0103h je potreban da bi se realizovao skok na početak instrukcije ADD 1234h?[1]
| Adresa instrukcije | Instrukcija |
|---|---|
| 0100h | ADD 1500h |
| 0103h | BZ ______ |
| 0106h | PUSH |
| 0107h | JSR 0200h |
| 010Ah | POP |
| 010Bh | LD 0004h |
| 010Eh | PUSH |
| 010Fh | ADD 1234h |
- 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 ADD.
- Nacrtati dijagram toka faze formiranja adrese i čitanja operanda i faze izvršavanja instrukcije.
Rešenje
Napomene
- ↑ Prilikom obilaska, nastavnici su naglasili da smatramo da u ovoj stavci BZ ima 3 bajta.