ORT2/K2N 2023

Izvor: SI Wiki
< ОРТ2
Datum izmene: 8. februar 2023. u 17:00; autor: KockaAdmiralac (razgovor | doprinosi) (Formatiranje)
(razl) ← Starija izmena | Trenutna verzija (razl) | Novija izmena → (razl)
Pređi na navigaciju Pređi na pretragu
Ovaj rok nije rešen. Pomozite SI Wiki tako što ćete ga rešiti.

Popravni drugi kolokvijum 2023. godine održan je 21. januara 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 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 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, 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, 5 prvog bajta instrukcije su 000 za sve instrukcije skoka. Kod instrukcija uslovnog skoka bitovi 4 i 3 prvog bajta instrukcije su 00, dok kod instrukcija bezuslovnog skoka bitovi 4 i 3 prvog bajta instrukcije su 11. Instrukcija uslovnog skoka je instrukcija uslovnog skoka ukoliko rezultat nije bio nula (JNZ), a instrukcija bezuslovnog skoka je instrukcija bezuslovnog skoka (JMP) i instrukcija skoka na potprogram (JSR). Bitovima 2 do 0 prvog bajta instrukcije specificira se kod operacije i na osnovu toga su za instrukcije JNZ, JMP i JSR usvojeni kodovi operacije 00000000, 00011000 i 00011001 respektivno. Instrukcije JNZ, JMP i JSR se realizuju kao apsolutni skokovi, pri čemu je adresa data drugim i trećim bajtom instrukcije pri čemu je mlađi bajt adrese skoka dat drugim, a stariji bajt trećim bajtom. Dužina instrukcija je 3 bajta.

Bitovi 7, 6, 5 prvog bajta instrukcije su 001 za sve adresne i bezadresne instrukcije.

Bit 4 prvog bajta instrukcije je 0 za sve bezadresne instrukcije. Bezadresna instrukcije su instrukcije stavljanja sadržaja akumulatora na stek (PUSH), punjenje akumulatora sadržajem sa steka (POP), povratak iz potprograma (RTS) i instrukcija prenosa iz akumulatora u indeksni registar (STXR). Bitovima 3 do 0 prvog bajta instrukcije specificira se kod operacije za bezadresne instrukcije. Na osnovu toga su za instrukcije PUSH, POP, RTS i STXR usvojeni kodovi operacija 00100000, 00100001, 00100010 i 00100011 respektivno. Dužina instrukcije je 1 bajt.

Bit 4 prvog bajta instrukcije je 1 za sve adresne instrukcije. Adresne instrukcije su instrukcije prenosa u akumulator (LD), instrukcija prenosa iz akumulatora (ST), aritmetička instrukcija sabiranja koja smešta rezultat u akumulator (ADD), instrukcija logičkog pomeranja udesno za jedno mesto (LSR). Bitovima 3 do 0 prvog bajta instrukcije specificira se kod operacije za adresne instrukcije. Na osnovu toga za instrukcije LD, ST, ADD, LSR usvojeni su kodovi operacija 00110000, 00110001, 00110010, 00110011 respektivno. Dužina instrukcija je 2 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 data je trećim i četvrtim bajtom instrukcije. Bitovi 4 do 0 drugog bajta instrukcije se ne koriste. Dužina instrukcije je 4 bajta. Kod registarskog direktnog i registarskog indirektnog adresiranja, koristi se neki od registara opšte namene R0 do R15 specificiranih bitovima 3 do 0 drugog bajta. Bit 4 se ne koristi. Dužina instrukcije 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 višim memorijskim lokacijama, a registar SP ukazuje na prvu slobodnu memorijsku lokaciju. Procesor nema mogućnost obrade prekida.

  1. Napisati izraz za generisanje signala gradr koji je aktivan ukoliko pročitana instrukcija ima grešku pri adresiranju.
  2. Napisati izraze za generisanje signala svih načina adresiranja. IR registar se popunjava od viših ka nižim bitovima.
  3. Koji je rezultat izvršavanja instrukcije ADD 1000h, ako se na adresi 1000h nalazi podatak A2h, a na adresi 1001h podatak B3h? Početna vrednost akumulatora je A004h. Napisati vrednost akumulatora i bita N, Z, C i V nakon izvršavanja instrukcije.
  4. Napisati izraze za generisanje signala operacija i to samo za JNZ i LSR.
  5. Nacrtati dijagram toka faze formiranja adrese i čitanja operanda i faze izvršavanja instrukcije. Smatrati da se signal greške gradr pri adresiranju proverava u prvoj fazi.

Rešenje

Kodovi operacija

Signali

Dijagrami toka

ADDR

EXEC