ORT2/K3 2022

Izvor: SI Wiki
< ОРТ2
Datum izmene: 25. januar 2022. u 00:39; autor: Fedja (razgovor | doprinosi) (kategorizacija + nerešeno)
Pređi na navigaciju Pređi na pretragu
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. Širina memorijske reči je 1 bajt. Procesor je sa jednoadresnim formatom instrukcija. Adrese i podaci su dužnne 16 bita i zauzimaju po dve susedne memorijske lokaiije, 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 V dužine 2 bajta, registri opšte namene R0 do R31 dužine 2 bajta, indeksni registar XR 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 i 5 prvog bajta instrukcije su 000 za sve instrukcije skoka. Kod instrukcija uslovnog skoka bit 4 prvog bajta instrukcije je 0, dok kod instrukcija bezuslovnog skoka bit 4 prvog bajta instrukcije je 1. 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 specificira se kod operacije i na osnovu toga su za instrukcije JC, JMP i JSR usvojeni kodovi operacije 00000000, 00010000 i 00010001, 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, 6 i 5 prvog bajta instrukcije su 111 za sve adresne i bezadresne instrukcije.

Bit 4 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 3 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 11100000, 11100001 i 11100010, respektivno. Dužina instrukcija je 1 bajt.

Bitovi 4 prvog bajta instrukcije je 1 za adresne instrukcije. Adresne instrukcije su instrukcija prenosa u akumulator (LD), instrukcija prenosa iz akumulatora (ST), aritmetička instrukcija oduzimanja koja smešta rezultat u akumulator (SUB), instrukcija rotiranja operanda jedno mesto ulevo kroz bit C koja smešta rezultat u akumulator (ROLC) 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, SUB, ROLC i JADR usvojeni kodovi operacija 11110000, 11110001, 11110010, 11110011 i 11110100 respektivno. Dužina instrukcija je 2, 3 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 adresiranje(regind), 011-indeksno adresiranje sa pomerajem (xrpom) 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 registarsko 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 indeksnog adresiranja sa pomerajem treći bajt instrukcije sadrži 8 bitni pomeraj koji je dat kao celobrojna veličina sa znakom. Bitovi 4 do 0 drugog bajta instrukcije se ne koriste. Dužina instrukcija je 3 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 nižim memorijskim lokacijama, a registar SP ukazuje na poslednju zauzetu memorijsku lokaciju. Procesor nema mogućnost obrade prekida.

  1. Projektovati deo operacione jedinice procesora koja je potrebna da se izvrši (FETCH + ADDR + EXEC) instrukcija ROLC (XR)02h.
  2. Dati su početni sadržaji registara i indikatora: PC=1000h, SP=3000h, ACC=0001h, R0=0002h, R1=000Ah, 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.

Rešenje