ORT2/K2 Januar 2021

Izvor: SI Wiki
< ОРТ2
Datum izmene: 30. januar 2021. u 04:09; autor: KockaAdmiralac (razgovor | doprinosi) (Postavka K2 iz januarskog roka)
(razl) ← Starija izmena | Trenutna verzija (razl) | Novija izmena → (razl)
Pređi na navigaciju Pređi na pretragu

K2 2020 je održan u januarskom ispitnom roku 2021.

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 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 B dužine 2 bajta, registri opšte namene R0 do R31 dužine 2 bajta, programska statusna reč PSW dužine 1 bajt. Instrukcije su dužine 1, 2, 3 ili 4 bajta.

Bit 7 prvog bajta instrukcije je 0 za sve instrukcije skoka. Kod instrukcija uslovnog skoka bit 6 prvog bajta instrukcije je 0, dok kod instrukcija bezuslovnog skoka bit 6 prvog bajta instrukcije je 1. Instrukcija uslovnog skoka je instrukcija uslovnog skoka ukoliko rezultat nije nula (JNZ), a instrukcije bezuslovnog skoka su instrukcija bezuslovnog skoka (JMP) i instrukcija skoka na potprogram (JSR). Bitovima 5 do 0 prvog bajta instrukcije specificira se kod operacije i na osnovu toga su za instrukcije JNZ, JMP i JSR usvojeni kodovi operacije 00000000, 01000000 i 01000001, respektivno. Instrukcije JNZ, 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.

Bit 7 prvog bajta instrukcije je 1 za sve adresne i bezadresne instrukcije.

Bitovi 6 i 5 prvog bajta instrukcije su 01 za bezadresne instrukcije. Bezadresne instrukcije su instrukcije stavljanja sadržaja na stek (PUSH), punjenja akumulatora sadržajem sa steka (POP), dekrementiranje akumulatora (DEC) i povratka iz potporgrama (RTS). Bitovima 4 do 0 prvog bajta instrukcije specificira se kod operacije za bezadresne instrukcije. Na osnovu toga su za instrukcije PUSH, POP, DEC i RTS usvojeni kodovi operacija 10100000, 10100001, 10100010 i 10100011, respektivno. Dužina instrukcija je 1 bajt.

Bitovi 6 i 5 prvog bajta instrukcije su 11 za adresne instrukcije. Adresne instrukcije su instrukcija prenosa u akumulator (LD), instrukcija prenosa iz akumulatora (ST), logička instrukcija "ili" (OR), instrukcija rotiranja operanda jedno mesto udesno koja smešta rezultat u akumulator (ROR) i instrukcija 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, OR, ROR i JADR usvojeni kodovi operacija 11100000, 11100001, 11100010, 11100011 i 11100100 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 indirektno adresiranje (regind), 010-registarsko indirektno sa pomerajem (regindpom), 011-relativno adresiranje sa pomerajem (pcrel) 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. Registarsko indirektno adresiranje koristi neke od registara opšte namene R0 do R31 specificirane biotvima od 4 do 0 drugog bajta. Dužina instrukcija je 2 bajta. Kod registarskog indirektnog adresiranja sa pomerajem treći i četvrti bajt instrukcije sadrže 16 bitni pomeraj koji je dat kao celobrojna veličina sa znakom. Jedan od registara opšte namene R0 do R31 koji se koristi specificiran je bitovima od 4 do 0 drugog bajta instrukcije. Dužina instrukcije 4 bajta. Kod relativnog adresiranja sa pomerajem treći i četvrti bajt instrukcije sadrže 16 bitni pomeraj koji je dat kao celobrojna veličina sa znakom. Bitovi 4 do 0 drugog bajta instrukcije se ne koriste. Dužina instrukcije je 4 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 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.
  2. Napisati izraze za generisanje signala svih načina adresiranja. IR registar se popunjava od viših ka nižim bitovima.
  3. Napisati izraze za generisanje signala operacija i to samo za ROR i JADR.
  4. Nacrtati dijagram toka faze formiranja adrese i čitanja operanda i faze izvršavanje[sic] instrukcije.

Rešenje

Kodovi operacija

Signali

Dijagrami toka

ADDR

EXEC