ORT2/K2N 2022

Izvor: SI Wiki
< ОРТ2
Datum izmene: 25. januar 2022. u 00:20; autor: KockaAdmiralac (razgovor | doprinosi) (Kategorizacija)
Pređi na navigaciju Pređi na pretragu

Postavka

Posmatra se deo računara koji čine memorija i procesor. Memorija je kapaciteta 216. Širina memorijske reči je 1 bajt. Procesor je sa jednoadresnim formatom instrukcija. Adrese i podaci su dužnne 16 bita i zauzimaju po dve susedne memorijske lokaiije, pri čemu se stariji bajt nalazi na nižoj, a mlađi bajt 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 V dužine 2 bajta, registri opšte namene R0 do R31 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 i 5 prvog bajta instrukcije su 000 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 postoji prenos/pozajmica (JC), a 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 JC, JMP i JSR usvojeni kodovi operacije 00000000, 00010000 i 00010001, respektivno. Instrukcije JC, 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.

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

Bit 4 prvog bajta instrukcije je 0 za bezadresne instrukcije. Bezadresne instrukcije su instrukcije stavljanja sadržaja akumulatora na stek (PUSH), punjenja akumulatora sadržajem sa steka (POP) i povratka iz potprograma (RTS). Bitovima 3 do 0 prvog bajta instrukcije specificira se kod operacije za bezadresne instrukcije. Na osnovu toga su za instrukcije PUSH, POP i RTS usvojeni kodovi operacija 11100000, 11100001 i 11100010, respektivno. Dužina instrukcija je 1 bajt.

Bitovi 4 prvog bajta instrukcije je 1 za adresne instrukcije. Adresne instrukcije su instrukcija prenosa u akumulator (LD), instrukcija prenosa iz akumulatora (ST), aritmetička instrukcija oduzimanja koja smešta rezultat u akumulator (SUB), instrukcija rotiranja operanda jedno mesto ulevo kroz bit C koja smešta rezultat u akumulator (ROLC) i instrukcija bezuslovnog skoka na sračunatu adresu (JADR). Bitovima 3 do 0 prvog bajta instrukcije specificira se kod operacije za adresne instrukcije. Na osnovu toga su za instrukcije LD, ST, SUB, ROLC i JADR usvojeni kodovi operacija 11110000, 11110001, 11110010, 11110011 i 11110100 respektivno. Dužina instrukcija je 2, 3 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 je data trećim i četvrtim bajtom instrukcije. Bitovi 4 do 0 drugog bajta instrukcije se ne koriste. Dužina instrukcija je 4 bajta. Kod registarsko direktnog i registarskog indirektnog adresiranja, koristi se neki od registara opšte namene R0 do R31 specificiranih bitovima od 4 do 0 drugog bajta. Dužina instrukcija 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 nižim memorijskim lokacijama, a registar SP ukazuje na poslednju zauzetu 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. U fazi čitanja instrukcije ukoliko je nakon pročitane instrukcije aktivan ovaj signal, preskače se izvršavanje pročitane instrukcije i nastavlja se sa čitanjem naredne instrukcije.
  2. Koji je rezultat izvršavanja instrukcije SUB 1000h, ako se na adresi 1000h nalazi podatak 82h, a na adresi 1001h podatak 23h? Početna vrednost akumulatora je C004h. Napisati vrednost akumulatora i bita N, Z, V i C nakon izvršavanja instrukcije.
  3. Napisati izraze za generisanje signala svih načina adresiranja. IR registar se popunjava od viših ka nižim bitovima.
  4. Napisati izraze za generisanje signala operacija samo za POP i ROLC.
  5. Nacrtati dijagram toka faze formiranja adrese i čitanja operanada i faze izvršavanje instrukcije. Potrebno je navesti u kojem trenutku treba da se ažurira koji bit PSW registra navodeći: UPDATE PSWN - ukoliko treba da se ažurira stanje bita PSWN, UPDATE PSWZ - ukoliko treba da se ažurira stanje bita PSWZ, UPDATE PSWC - ukoliko treba da se ažurira stanje bita PSWC, UPDATE PSWV - ukoliko treba da se ažurira stanje bita PSWV. Nije potrebno definisati kako se vrednost kojeg bita računa.

Rešenje