ORT2/K3 Februar 2022

Izvor: SI Wiki
< ОРТ2
Datum izmene: 15. februar 2022. u 00:00; autor: Aleksa (razgovor | doprinosi) (greske u postavci)
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 217 bajtova. Širina memorijske reči je 2 bajta. Procesor je sa jednoadresnim formatom instrukcija. Podaci su dužine 32 bita i zauzimaju po dve susedne memorijske lokacije, pri čemu se viših 16 bita nalazi na nižoj a nižih 16 bita na višoj adresi.

U procesoru postoji registar programskog brojača PC dužine 2 bajta, adresni regisgar memorije MAR dužine 2 bajta, prihvatni registar podatka memorije MDR dužine 2 bajta, prihvatni regisgar instrukcije IR dužine 6 bajta, akumulator A dužine 4 bajta, prihvatni registar podatka B dužine 4 bajta, registri opšte namene R0 do R31 dužine 4 bajta, programska statusna reč PSW dužine 2 bajta. Instrukcije su dužine 2, 4 ili 6 bajta.

Bitovi 15, 14, 13, 12, 11, 10 i 9 prva dva bajta instrukcije su 0000 000 za sve instrukcije skoka. Kod instrukcija uslovnog skoka bit 8 prva dva bajta instrukcije je 0, dok kod instrukcija bezuslovnog skoka bit 8 prva dva bajta instrukcije je 1. Instrukcija uslovnog skoka je instrukcija uslovnog skoka ukoliko je rezultat upoređivanja jednak (BEQL), a instrukcije bezuslovnog skoka su instrukcija bezuslovnog skoka (JMP) i instrukcija skoka na potprogram (JSR). Bitovima 15 do 8 prva dva bajta instrukcije specificiran je kod operacije instrukcije BEQL i na osnovu toga instrukciji BEQL je usvojen kod operacije 00000000. Bitovima 7 do 0 prva dva bajta instrukcije BEQL dat je pomeraj u drugom komplementu koji se koristi za relativan skok. Dužina instrukcije je 2 bajta. Bitovima 7 do 0 prva dva bajta instrukcije specificira se kod operacije za instrukcije JMP i JSR. Na osnovu toga su za instrukcije JMP i JSR usvojeni kodovi operacija 0000000100000000 i 0000000100000001 respektivno. Instrukcije JMP i JSR se realizuju kao apsolutni skokovi, pri čemu je adresa data sa druga dva bajta instrukcije. Dužina instrukcija je 4 bajta.

Bitovi 15, 14, 13 i 12 prva dva bajta instrukcije su 0001 za sve bezadresne instrukcije. Bezadresne instrukcije su instrukcije stavljanja sadržaja akumulatora na stek (PUSH), punjenja akumulatora sadržajem sa steka (POP), aritmetičkog pomeranja akumulatora u levo (ASL) i povratka iz potprograma (RTS). Bitovima 11 do 0 prva dva bajta instrukcije specificira se kod operacije za bezadresne instrukcije. Na osnovu toga su za instrukcije PUSH, POP, ASL i RTS usvojeni kodovi operacija 0001000000000000, 0001000000000001, 0001000000000010 i 0001000000000011, respektivno. Dužina instrukcija je 2 bajta.

Bit 15 prva dva bajta instrukcije je 1 za adresne instrukcije. Adresne instrukcije su instrukcija prenosa u akumulator (LD), instrukcija prenosa iz akumulatora (ST), aritmetička instrukcija sabiranja (ADD) i instrukcija dekrementiranja operanda bez uticaja na akumulator (DEC). Bitovima 15 do 13 prva dva bajta instrukcije specificira se kod operacije za adresne instrukcije. Na osnovu toga su za instrukcije LD, ST, ADD i DEC usvojeni kodovi operacija 100, 101, 110 i 111 respektivno. Dužina instrukcija je 2, 4 ili 6 bajta i zavisi od specificiranog načina adresiranja.

Načini adresiranja su specificirani bitovima 12, 11 i 10 prva dva bajta instrukcije i to na sledeći način: 000-registarsko indirektno adresiranje sa pomerajem (regindpom), 001-neposredno adresiranje (immed), 010-registarsko direktno adresiranje (regdir), 011-memorijsko indirektno adresiranje (memind) i 100-memorijsko direktno adresiranje (memdir).

Kod registarsko direktnog i registarskog indirektnog adresiranja sa pomerajem, koristi se neki od registara opšte namene R0 do R31 specificiranih bitovima od 9 do 5 prva dva bajta instrukcije. Kod registarsko direktnog adresiranja bitovi 4 do 0 prva dva bajta instrukcije se ne koriste, dok kod registarskog indirektnog adresiranja sa pomerajem bitovima 4 do 0 prva dva bajta instrukcije je zadat pomeraj dat u drugom komplementu. Dužina instrukcija je 2 bajta.

Kod neposrednog adresiranja 32 bitni operand dat je sa druga dva i treća dva bajta instrukcije. Bitovi 9 do 0 prva dva bajta instrukcije se ne koriste. Dužina instrukcija je 6 bajta.

Kod memorijskog direktnog i memorijskog indirektnog adresiranja 16 bitna adresa memorijske lokacije je data sa druga dva bajta instrukcije. Bitovi 9 do 0 prva dva bajta instrukcije se ne koriste. Dužina instrukcija je 4 bajta.

Procesor ne poseduje poseban registar za stek, već za tu potrebu koristi registar opšte namene R31 (nižih 16 bita sadrže vrednost pokazivača na vrh steka). Stek raste prema nižim memorijskim lokacijama, a registar R31 ukazuje na poslednju zauzetu memorijsku lokaciju. Procesor nema mogućnost obrade prekida. Greške u adresiranju se proveravaju u fazi izvršavanja operacije i ukoliko je došlo do greške u adresiranju prelazi se na čitanje sledeće instrukcije.

  1. Projektovati deo operacione jedinice procesora koja je potrebna da se izvrši (FETCH + ADDR + EXEC) instrukcija DEC (4000h).
  2. Dati su početni sadržaji registara i indikatora: PC=1000h, R31=3000h, ACC=FFFF FFFFh, 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 0002 0000 0000 0001 1002 C400 0000 0000 0000 0000
LOKACIJA 0FF6 0FF7 0FF8 0FF9 0FFA 0FFB 0FFC 0FFD 0FFE 0FFF
VREDNOST C400 0000 0003 1002 1000 8C00 0000 B000 0008 1003
LOKACIJA 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009
VREDNOST 1002 C400 0000 0002 00F5 C400 0000 0001 1002 1003
LOKACIJA 2FF7 2FF8 2FF9 2FFA 2FFB 2FFC 2FFD 2FFE 2FFF 3000
VREDNOST 0007 0006 0005 0004 0003 0000 0002 0001 0000 0005

Rešenje