ORT2/K3 Februar 2023

Izvor: SI Wiki
Pređi na navigaciju Pređi na pretragu

Februarski ispitni rok 2023. godine održan je 11. februara 2023.

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 i adrese su dužine 2 bajta i zauzimaju dve susedne memorijske lokacije, pri čemu se stariji bajt nalazi na nižoj, a mlađi 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 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 i 5 prvog bajta instrukcije su 0 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 je rezultat manje nego ili jednako (BLEQ), uslov skoka je (NxorV)orZ. Instrukcija BLEQ se realizuje kao instrukcija relativnog skoka u odnosu na PC. Drugi bajt instrukcije sadrži samo osmobitni pomeraj koji je dat kao celobrojna veličina sa znakom. Dužina instrukcije je dva bajta. Instrukcije bezuslovnog skoka su instrukcija bezuslovnog skoka (JMR) i instrukcija skoka na potprogram (JSR). Instrukcije JMR i JSR se realizuju kao apsolutni skokovi, pri čemu je adresa data drugim i trećim bajtom instrukcije. Dužina instrukcije je 3 bajta. Bitovima 3 do 0 prvog bajta instrukcije specificira se kod operacije i na osnovu toga su za instrukcije BLEQ, JMR i JSR usvojeni kodovi operacije 00000000, 00010000 i 00010001, respektivno.

Bitovi 7, 6 i 5 prvog bajta instrukcije su 1 za sve bezadresne instrukcije. Bezadresne instrukcije su instrukcije prenosa sadržaja akumulatora na stek (PUSH), instrukcija punjenja akumulatora sadržajem sa steka (POP), instrukcija dekrementiranja akumulatora (DEC) i instrukcija 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, DEC i RTS usvojeni kodovi operacija 11100000, 11100001, 11100010 i 11100011, respektivno. Dužina instukcija je 1 bajt.

Bitovi 7, 6 i 5 prvog bajta instrukcije imaju vrednost 100 za sve adresne instrukcije. Adresne insturkcije su instrukcija prenosa u akumulator (LD), instrukcija prenosa iz akumulatora (ST), instrukcija logičko ILI (OR), instrukcija rotiranja sadržaja operanda za jedno mesto ulevo kroz bit PSWC programske statusne reči gde se rezultat smešta samo u akumulator (ROLC), instrukcija bezuslovnog skoka na sračunatu adresu (JADR) i instukcija sabiranja (ADD). Bitovima 4 do 0 prvog bajta instrukcije specificira se kod operacije za adresne instrukcije. Na osnovu toga su za instrukcije LD, ST, OR, ROLC, JADR i ADD usvojeni kodovi operacija 10000000, 10000001, 10000010, 10000011, 10000100 i 10000101 respektivno. Dužina instrukcija je 2 ili 4 bajta i zavisi od specificiranog načina adresiranja.

Načini adresiranja su specificirani bitovima 7, 6, 5 i 4 drugog bajta instrukcije i to na sledeći način: 0000-memorijsko direktno adresiranje (memdir), 0001-memorijsko indirektno adresiranje (memind), 0010-registarsko direktno adresiranje (regdir), 0011-registarsko indirektno adresiranje (regind), 0100-registarsko indirektno adresiranje sa postdekrementiranjem (postdecr), 0101- registarsko indirektno adresiranje sa pomerajem (regindpom) i 0110-neposredno adresiranje (immed). Kod memorijskog direktnog i indirektnog adresiranja 16 bitna adresa memorijske lokacije je data trećim i četvrtim bajtom instrukcije. Bitovi 3 do 0 drugog bajta instrukcije se ne koriste. Dužina instrukcije je 4 bajta. Adresiranja registarsko direktno, registarsko indirektno i registarsko indirektno sa postdekrementiranjem koriste neki od registara opšte namene R0 do R15 specificiran bitovima od 3 do 0 drugog bajta instrukcije. Dužina instrukcija je 2 bajta. Kod registarskog indirektnog adresiranja sa pomerajem treći i četvrti bajt instrukcije sadrže 16 bitni pomeraj koji je dat kao celobrojna veličina sa znakom. Jedan od registara opšte namene R0 do R15 koji se koristi specificiran je bitovima od 3 do 0 drugog bajta instrukcije. Dužina instrukcije je 4 bajta. Kod neposrednog adresiranja 16 bitni operand dat je trećim i četvrtim bajtom instrukcije. Bitovi 3 do 0 drugog bajta instrukcije se ne koriste. Dužina instrukcije je 4 bajta.

Stek raste prema viš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 ADD (R0)-. Potrebno je da se nacrta samo jedna minimalna operaciona jedinica koja je dovoljna da se izvrši cela spomenuta instrukcija.
  2. Dati su početni sadržaji registara i indikatora: PC = 1000h, SP = 3009h, ACC = 3000h, R0 = C000h, R1 = 0010h, R1 = F000h, N = 0, Z = 0, C = 0 i V = 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 nov 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.
Sadržaj dela memorije iz postavke zadatka
LOKACIJA: 0000h 0001h 0002h 0003h 0004h 0005h 0006h 0007h 0008h 0009h
SADRŽAJ: 00h 01h 02h 03h 00h 08h 11h 00h FFh FFh
LOKACIJA: 1000h 1001h 1002h 1003h 1004h 1005h 1006h 1007h 1008h 1009h
SADRŽAJ: E0h 83h 20h 85h 10h 00h 04h 00h 01h E2h
LOKACIJA: 100Ah 100Bh 100Ch 100Dh 100Eh 100Fh 1010h 1011h 1012h 1013h
SADRŽAJ: E3h E2h 80h 60h 11h 22h E2h 10h 10h 00h
LOKACIJA: 3000h 3001h 3002h 3003h 3004h 3005h 3006h 3007h 3008h 3009h
SADRŽAJ: 82h 60h FFh 00h 81h 00h 20h 00h 10h 0Ch

Rešenje

Operaciona jedinica

Ovaj zadatak nije rešen. Pomozite SI Wiki tako što ćete ga rešiti.

Memorija

R.B. Adrese sa kojih je pročitana instrukcija IR31..24 [h] IR23..16 [h] IR15..8 [h] IR7..0 [h] Pročitana instrukcija Sadržaj promenjenih registara
1 1000h E0h / / / PUSH PC = 1001h
2 1001h, 1002h 83h 20h / / ROLC R0 PC = 1003h
3 1003h, 1004h, 1005h, 1006h 85h 10h 00h 04h ADD (0004h) PC = 1007h
4 1007h, 1008h 00h 01h / / BEQL (PC) 01h PC = 1009h
5 100Ah E3h / / / RTS PC = 100Bh
6 3000h, 3001h, 3002h, 3003h 82h 60h FFh 00h OR #FF00h PC = 3004h
7 3004h, 3005h, 3006h, 3007h 81h 00h 20h 00h ST 2000h PC = 3008h
R.B. Adrese sa kojih je pročitana adresa operanda Adrese sa kojih je pročitan operand Operand Sadržaj promenjenih registara
1 / / / /
2 / / C000h /
3 0004h, 0005h 0008h, 0009h FFFFh /
4 / / / /
5 / / / /
6 / / FF00h /
7 / / / /
R.B. Adrese kojima se pristupa u fazi izvršavanja A [h] N Z V C Sadržaj promenjenih registara i memorijskih lokacija [h]
1 300Ah, 300Bh 3000h 0 0 0 0 MEM[300Ah] = 30h, MEM[300Bh] = 00h, SP = 300Bh
2 / 8000h 1 0 0 1 /
3 / 7FFFh 0 0 1 1 /
4 / 7FFFh 0 0 1 1 PC = 100Ah
5 300Ah, 300Bh 7FFFh 0 0 1 1 PC = 3000h, SP = 3009h
6 / FFFFh 1 0 1 1 /
7 2000h, 2001h FFFFh 1 0 1 1 MEM[2000h] = FFh,MEM[2001h] = FFh