ORT2/Jul 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.Adrese i podaci su dužine 16 bita i zauzimaju po dve susedne memorijske lokacije, pri čemu se stariji bajt nalazi na nižoj, a mlađi bajt na viš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 R31 dužine 2 bajta, programska statusna reč PSW dužine 1 bajt. Instrukcije su dužine 1, 2, 3 ili 4 bajta.
Bitovi 7 i 6 prvog bajta instrukcije su 11 za sve instrukcije skoka. Kod instrukcija uslovnog skoka bitovi 5 i 4 prvog bajta instrukcije su 00, dok kod instrukcija bezuslovnog skoka bitovi 5 i 4 prvog bajta instrukcije su 11. Instrukcija uslovnog skoka je instrukcija uslovnog skoka ukoliko postoji prenos/pozajmica (JC), a instrukcije bezuslovnog skoka su instrukcija bezuslovnog skoka (JMP) i instrukcija skoka na potprogram (JSR). Bitovima 3 do 0 prvog bajta instrukcije specifira se kod operacije i na osnovu toga su za instrukcije JC, JMP i JSR usvojeni kodovi operacije 11000000, 11110000 i 11110001, 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.
Bitovi 7 i 6 prvog bajta instrukcije su 00 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) 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 i RTS usvojeni kodovi operacija 00000000, 00000001 i 00000011, respektivno. Dužina instrukcija je 1 bajt.
Bitovi 5 i 4 prvog bajta instrukcije su 11 za adresne instrukcije. Adresne instrukcije su instrukcija prenosa u akumulator (LD), instrukcija prenosa iz akumulatora (ST), logička instrukcija komplementiranja operanda koja smešta rezultat u akumulator (NOT), instrukcija logičkog pomeranja operanda jedno mesto ulevo koja smešta rezultat u akumulator (LSL) i instrukcija bezuslovnog skoka na sračunatu adresu (JADR). Bitovima 3 do 0 prvog bajta instrukcije specificira se kod operacije za adresne instrukcije. Na osnovu toga su za instrukcije LD, ST, NOT, LSL i JADR usvojeni kodovi operacija 00110000, 00110001, 00110010, 00110011 i 00110100 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-memorijsko direktno adresiranje (memdir), 001-registarsko direktno adresiranje (regdir), 010-registarsko indirektno (regind), 011-relativno adresiranje sa pomerajem (pcrel), i 100-neposredno adresiranje (immed). Kod memorijskog direktnog adresiranja 16 bitna adresa memorijske lokacije je data trećim i četvrtim bajtom instrukcije. Bitovi 4 do 0 drugog bajta instrukcije se ne koriste. Dužina instrukcija je 4 bajta. Kod registarskog direktnog i registarskog indirektnog adresiranja, koristi se neki od registara opšte namene R0 do R31 specificiranih bitovima od 4 do 0 drugog bajta. Dužina instrukcija 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
1. (K2) (20)
- Napisati izraz za generisanje signala gradr koji je aktivan ukoliko pročitana instrukcija ima grešku pri adresiranju.
- 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 JC i NOT.
- Nacrtati dijagram toka faza formiranja adrese i čitanja operanda i faze izvršavanje instrukcije.
2. (K3) (20)
- Projektovati deo operacione jedinice procesora koja je potrebna da se izvrši (FETCH, ADDR i EXEC) instrukcija NOT 000Dh.
- Dati su početni sadržaji registara i indikatora: PC=1000h, SP=3000h, ACC=0001h, R0=0002h, R1=030Ch, R2=10A2h, R3=FAE3h, N=0, Z=0, V=0 i C=0. Indikatori statusne reči na koje instrukcija ne utiče treba da ostanu nepromenjeni. Izvršiti 7 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.
| LOKACIJA | 000A | 000B | 000C | 000D | 000E | 000F | 0010 | 0011 | 0012 | 0013 |
|---|---|---|---|---|---|---|---|---|---|---|
| VREDNOST | 10 | 01 | 00 | C1 | 21 | 77 | 11 | 00 | 0A | 83 |
| LOKACIJA | 1000 | 1001 | 1002 | 1003 | 1004 | 1005 | 1006 | 1007 | 1008 | 1009 |
| VREDNOST | 30 | 20 | F0 | 10 | 06 | 10 | 00 | 31 | 00 | 00 |
| LOKACIJA | 100A | 100B | 100C | 100D | 100E | 100F | 1010 | 1011 | 1012 | 1013 |
| VREDNOST | 13 | 32 | 00 | 00 | 13 | C0 | 00 | 10 | 01 | 52 |
| LOKACIJA | 1014 | 1015 | 1016 | 1017 | 1018 | 1019 | 101A | 101B | 101C | 101D |
| VREDNOST | 22 | 41 | F0 | 00 | 03 | E3 | 21 | B8 | 10 | 13 |