ORT2/K3 Februar 2021

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

Ispit u februarskom roku 2021. godine održan je 22. februara.

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 podatka memorije MDR dužine 1 bajt, prihvatni registar instrukcije IR dužine 3 bajta, akumulator A dužine 2 bajta, prihvatni registar podatka B dužine 2 bajta, registri opšte namene R0 do R3 dužine 2 bajta, programska statusna reč PSW dužine 1 bajt. Programska statusna reč PSW sadrži bitove N, Z, C i V koji se ažuriraju prilikom rada procesora. Instrukcije su dužine 1, 2 ili 3 bajta.

Bitovi 7, 6 i 5 prvog bajta instrukcije je 000 za sve instrukcije skoka. Kod instrukcije 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 negativan (BN) i 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 BN, JMP i JSR usvojeni kodovi operacije 00000000, 00010000 i 00010001, respektivno. Instrukcije 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 BN se realizuje kao relativni skok u odnosu na tekuću vrednost programskog brojača PC, a pomeraj je 8 bitna celobrojna veličina sa znakom data drugim bajtom instrukcije. Dužina instrukcije je 2 bajta.

Bitovi 7, 6 i 5 prvog bajta instrukcije je 001 za sve bezadresne instrukcije. Bezadresne instrukcije su instrukcije stavljanja sadržaja akumulatora na stek (PUSH), punjenja akumulatora sadržajem sa steka (POP) i instrukcija komplementiranja sadržaja akumulatora (NOT). Bitovima 4 do 0 prvog bajta instrukcije specifira se kod operacije za bezadresne instrukcije. Na osnovu toga su za instrukcije PUSH, POP i NOT usvojeni kodovi operacija 00100000, 00100001 i 00100010, respektivno. Dužina instrukcija je 1 bajt.

Bitovi 7, 6 i 5 prvog bajta instrukcije imaju vrednosti od 010 do 111 za adresne instrukcije. Adresne instrukcije su instrukcija prenosa u akumulator (LD), instrukcija prenosa iz akumulatora (ST), instrukcija aritmetičkog pomeranja udesno za jedno mesto (ASR), instrukcija upoređivanja akumulatora sa operandom (CMP), instrukcija sabiranja (ADD) i instrukcija oduzimanja (SUB). Na osnovu toga su za instrukcije LD, ST, ASR, CMP, ADD i SUB usvojeni kodovi operacija 010, 011, 100, 101, 110 i 111, respektivno. Dužina instrukcija je 2 ili 3 bajta i zavisi od specifičnog načina adresiranja.

Načini adresiranja su specificirani bitovima 4, 3 i 2 prvog bajta instrukcije i to na sledeći način: 000-memorijsko direktno adresiranje (memdir), 001-memorijsko indirektno adresiranje (memind), 010-registarsko direktno adresiranje (regdir), 011-registarsko indirektno adresiranje (regind), 100-relativno adresiranje sa pomerajem (pcrel), 101-neposredno adresiranje (immed) i 110-registarsko indirektno adresiranje sa preinkrementiranjem (preincr). Kod memorijskog direktnog i memorijskog indirektnog adresiranja 16 bitna adresa memorijske lokacije je data drugim i trećim bajtom instrukcije. Bitovi 1 i 0 prvog bajta instrukcije se ne koriste. Dužina instrukcije je 3 bajta. Registarsko direktno, registarsko indirektno i registarsko indirektno adresiranje sa preinkrementiranjem koriste neke od registara opšte namene R0 do R3 specificirane bitovima 1 i 0 prvog bajta. Dužina instrukcija je 1 bajt. Kod relativnog adresiranja sa pomerajem drugi bajt instrukcije sadrži 8 bitni pomeraj koji je dat kao celobrojna veličina sa znakom. Bitovi 1 i 0 prvog bajta instrukcije se ne koriste. Dužina instrukcija je 2 bajta. Kod neposrednog adresiranja 16 bitni operand dat je drugim i trećim bajtom instrukcije. Bitovi 1 i 0 prvog bajta instrukcije se ne koriste. Dužina instrukcija je 3 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 (faze: FETCH, ADDR i EXEC) koja je potrebna da se izvrši instrukcija CMP +(R0). Crtati samo neophodne komponente koje su potrebne za izvršavanje navedene instrukcije.
  2. Dati su početni sadržaji registara i indikatora: PC=1000h, SP=2000h, ACC=FFF7h, R0=0000h, R1=0001h, R2=0002h, R3=0003h, N=1, 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.
Sadržaj dela memorije iz postavke zadatka
LOKACIJA 0000 0001 0002 0003 0004 0005 0006 0007 0008 0009
VREDNOST 07 FF 00 00 21 77 11 00 0A 83
LOKACIJA 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009
VREDNOST 60 00 00 D4 F6 FF 00 0C D4 F6
LOKACIJA 100A 100B 100C 100D 100E 100F 1010 1011 1012 1013
VREDNOST FF 30 00 08 A0 40 10 19 00 52
LOKACIJA 1014 1015 1016 1017 1018 1019 101A 101B 101C 101D
VREDNOST 22 E9 84 02 00 11 00 30 E8 E8

Rešenje

Kodovi operacija

Operaciona jedinica

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

Memorija

# Adrese u memoriji sa kojih je učitana instrukcija IR31..24 IR23..16 IR15..8 IR7..0 Instrukcija PC
1 1000h, 1001h, 1002h / 60h 00h 00h ST 0000h 1003h
2 1003h, 1004h, 1005h / D4h F6h FFh ADD #FFF6h 1006h
3 1006h,1007h / 00h 0Ch / BN(PC)0Ch 1008h
4 1014h / 22h / / NOT 1015h
5 1015h / E9h / / SUB R1 1016h
6 1016h,1017h,1018h / 84h 02h 00h ASR(0002h) 1019h
7 1019h, 101Ah, 101Bh / 11h 00h 30h JSR 3000h 101Ch
# Adrese u memoriji ili registri sa kojih je učitana adresa operanda Adrese u memoriji ili registri sa kojih je učitan operand Operand Novi sadržaj registara opšte namene
1 / / / /
2 / / FFF6h /
3 / / / /
4 / / / /
5 / / 0001h R1 = 0001h
6 0002h,0003h 0000h,0001h FFF7h /
7 / / / /
# Memorijske adrese kojima se pristupa u ovoj fazi Akumulator N Z V C Novi sadržaj registara i memorijskih lokacija koji su promenjeni u ovoj fazi
1 0000h, 0001h FFF7h 1 0 0 0 MEM[0000h] = F7h, MEM[0001h] = FFh
2 / FFEDh 1 0 0 1 /
3 / FFEDh 1 0 0 1 PC = 1014h
4 / 0012h 0 0 0 1 /
5 / 0011h 0 0 0 0 /
6 / FFFBh 1 0 0 1 /
7 2000h, 2001h FFFBh 1 0 0 1 MEM[2000h] = 1Ch , MEM[2001h] = 10h, SP = 2002h, PC = 3000h