ORT2/K2 2021

Izvor: SI Wiki
Pređi na navigaciju Pređi na pretragu
Ovaj rok nije rešen. Pomozite SI Wiki tako što ćete ga rešiti.

K2 2021 je održan u redovnom terminu. Rađen je u 2 grupe. U nastavku je data postavka koju je radila prva grupa (RTI smer).

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 RS 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 Z bajta, akumulator A dužine 2 bajta, prihvatni registar podatka V dužine 2 bajta, bazni registar BR dužine 2 bajta, indeksni registar XR dužine 2 bajta, programska statusna reč PSW dužine 1 bajt. Instrukcije su dužine 1, 2sciili 3 bajta.

Bit 7 prvog bajta instrukcije je 1 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 je bilo prenosa (JC) i instrukcija uslovnog skoka ukoliko je rezultat nula (BZ), 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 JC, Be: JMP i JSR usvojeni kodovi operacije 10000000, 10000001sic, 11000001 i 11000010, 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. Instrukcija VZ se realizuje kao relativni skok u odnosu na tekuću vrednost programskog brojača RS. Drugim bajtom instrukcije je dat pomeraj kao označena osmobitna binarna vrednost. Dužina instrukcija je 2 bajta.

Bit 7 prvog bajta instrukcije je 0 za sve adresne i bezadresne instrukcije. Bit 6 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 5 do O prvog bajta instrukcije specificira se kod operacije za bezadresne instrukcije. Na osnovu toga su za instrukcije PUSH, POP i RTS usvojeni kodovi operacija 00000000, 00000001 i 00000011, respektivno. Dužina instrukcija je 1 bajt.

Bit 6 prvog 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), instrukcija aritmetičkog pomeranja operanda jedno mesto ulevo koja smešta rezultat u akumulator (ASL) i instrukcija bezuslovnog skoka na sračunatu adresu (JADR). Bitovima 5 do 3 prvog bajta instrukcije specificira se kod operacije za adresne instrukcije. Na osnovu toga su za instrukcije LD, ST, ADD, ASL i JADR usvojeni kodovi operacija 01000, 01001, 01010, 01011 i 01100 respektivno. Načini adresiranja su specificirani bitovima 2, 1 i 0 prvog bajta instrukcije i to na sledeći način: 000-memorijsko direktno adresiranje (memdir), 001-memorijsko indirektno adresiranje (memind), 010-bazno adresiranje sa pomerajem (brpom), 011-relativno adresiranje sa pomerajem (pcrel) i 100-neposredno adresiranje (immed). Kod memorijskog direktnog i indirektnog adresiranja 16 bitna adresa memorijske lokacije je data drugim i trećim bajtom instrukcije. Dužina instrukcija je 3 bajta Kod baznog i relativnog adresiranja sa pomerajem, drugi i treći bajt instrukcije sadrže 16 bitni pomeraj koji je dat kao celobrojna veličina sa znakom. Dužina instrukcija je 3 bajta. Kod neposrednog adresiranja 16 bitni operand dat je drugim i trećim bajtom instrukcije. Dužina instrukcija je 3 bajta.

U procesoru se nalazi signal gradr koji je aktivan ukoliko pročitana instrukcija ima grešku pri adresiranju. Ovaj signal se proverava u fazi čitanja instrukcije i ukoliko je aktivan, prelazi se na fazu čitanja naredne instrukcije, a ukoliko nije aktivan nastavlja se sa izvršavanjem naredne faze instrukcije.

Stek raste prema niž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. Koliki pomeraj u instrukciji koja se nalazi na adresi 0103h (tabela 1) je potreban da bi se realizovao skok na početak instrukcije ADD 1234h?[1]
  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 i to samo za PUSH i ADD.
  5. Nacrtati dijagram toka faze formiranja adrese i čitanja operanda i faze izvršavanja instrukcije.
Tabela 1: Sekvenca instrukcija iz tačke pod b.
Adresa instrukcije Instrukcija
0100h ADD 1500h
0103h BZ ______
0106h PUSH
0107h JSR 0200h
010Ah POP
010Bh LD 0004h
010Eh PUSH
010Fh ADD 1234h

Rešenje

Napomene

  1. Prilikom obilaska, nastavnici su naglasili da smatramo da u ovoj stavci BZ ima 3 bajta, umesto 2 kako piše u postavci.