ORT2/K3 Jul 2022

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

Ispit u julskom roku 2022. godine održan je 4. jula i trajao je 90 minuta.

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 PC dužine 2 bajta, adresni registar memorije MAR dužine 2 bajta, prihvatni registar podataka memorije MDR dužine 1 bajt, prihvatni registar instrukcija IR dužine 4 bajta, akumulator A dužine 2 bajta, prihvatni registar podataka B dužine 2 bajta, registri opšte namene R0 do R63 dužine 2 bajta i 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 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 aderesa data drugim i trećim bajtom instrukcije. Dužina instrukcija je 3 bajta.

Bitovi 7 i 6 prvog bajta instrukcije su 01 za sve adresne i bezadresne instrukcije.

Bit 5 prvog bajta instrukcije je 1 za sve bezadresne instrukcije. Bezadresne instrukcije su instrukcije stavljanja sadržaja akumulatora na stek (PUSH), punjenja akumulatora sadržajem sa steka (POP) 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 i RTS usvojeni kodovi operadžija 01100000, 01100001 i 01100010, respektivno. Dužina instrukcija je 1 bajt.

Bit 5 prvog bajta instrukcije je 0 za sve adresne instrukcije. Adresne instrukcije su instrukcija prenosa u akumulator (LD), instrukcija prenosa iz akumulatora (ST), aritmetička instrukcija sabiranja koja smešta rezultat u akumulator (ADD), instrukcija aritmetičkog pomeranja operanda za jedno mesto ulevo koja smešta rezultat u akumulator (ASL) i insturkcija 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, ADD, ASL i JADR usvojeni kodovi operacija 01000000, 01000001, 01000010, 01000011 i 01000100, respektivno. Dužina instrukcija je 2, 3 ili 4 bajta i zavisi od specificiranog načina adresiranja.

Načini adresiranja su specificirani bitovima 7 i 6 drugog bajta instrukcije i to na sledeći način: 00 – memorijsko direktno adresiranje (memdir), 01 – registarsko direktno adresiranje (regdir), 10 – registarsko indirektno adresiranje (regind) i 11 – neposredno adresiranje (immed). Kod memorijskog direktnog adresiranja 16 bitna adresa memorijske lokacije je data trećim i četvrtim bajtom instrukcije. Bitovi 5 do 0 drugog bajta instrukcije se ne koriste. Dužina instrukcije je 4 bajta. Kod registarskog direktnog i registarskog indirektnog adresiranja koriste se neki od registara opšte namene R0 do R63 specificirani bitovima od 5 do 0 drugog bajta instrukcije. Dužina instrukcija je 2 bajta. Kod neposrednog adresiranja 16 bitni operand dat je trećim i četvrtim bajtom instrukcije. Bitovi 5 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 prvu slobodnu 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 1010h.
  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 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: 000Ah 000Bh 000Ch 000Dh 000Eh 000Fh 0010h 0011h 0012h 0013h
SADRŽAJ: 10h 01h 00h C1h 21h 77h 11h 00h 0Ah 83h
LOKACIJA: 1000h 1001h 1002h 1003h 1004h 1005h 1006h 1007h 1008h 1009h
SADRŽAJ: 60h 42h 00h 0Ch 00h 41h 41h 20h 0Bh 10h
LOKACIJA: 100Ah 100Bh 100Ch 100Dh 100Eh 100Fh 1010h 1011h 1012h 1013h
SADRŽAJ: E1h 43h 40h 61h 40h C0h 06h F0h 01h 52h
LOKACIJA: 1014h 1015h 1016h 1017h 1018h 1019h 101Ah 101Bh 101Ch 101Dh
SADRŽAJ: 21h F0h 00h 00h 0Ch E2h 21h B8h 10h 13h

Rešenje

Kodovi operacija

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 60h PUSH PC = 1001h
2 1001h, 1002h, 1003h, 1004h 42h 00h 0Ch 00h ADD 000Ch PC = 1005h
3 1005h, 1006h 41h 41h ST R1 PC = 1007h
4 1007h, 1008h, 1009h 20h 0Bh 10h JMP 100Bh PC = 100Ah
5 100Bh, 100Ch 43h 40h ASL R0 PC = 100Dh
6 100Dh 61h POP PC = 100Eh
7 100Eh, 100Fh, 1010h, 1011h 40h C0h 06h F0h LD #F006h PC = 1012h
R.B. Adrese sa kojih je pročitana adresa operanda Adrese sa kojih je pročitan operand Operand Sadržaj promenjenih registara
1
2 000Ch, 000Dh C100h
3
4
5 0002h
6
7 F006h
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 3000h, 3001h 0001h 0 0 0 0 MEM[3000h] = 01h, MEM[3001h] = 00h, SP = 3002h
2 C101h 1 0 0 0
3 C101h 1 0 0 0 R1 = C101h
4 C101h 1 0 0 0 PC = 100Bh
5 0004h 0 0 0 0
6 3000h, 3001h 0001h 0 0 0 0 SP = 3000h
7 F006h 1 0 0 0