ORT2/K3 Februar 2021

Izvor: SI Wiki
< ОРТ2
Datum izmene: 23. februar 2021. u 00:43; autor: Fedja (razgovor | doprinosi) (-)
Pređi na navigaciju Pređi na pretragu

Kolokvijum 2

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. Podaci su dužine 8 bita bez znaka, a adrese 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 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 1 bajt, prihvatni registar podatka B dužine 1 bajt, registri opšte namene R0 do R15 dužine 2 bajta, programska statusna reč PSW dužine 1 bajt. Instrukcije su dužine 1, 2, 3 ili 4 bajta.

Prilikom čitanja podatka iz registara opšte namene, uzima se nižih 8 bita.

Bitovi 7 i 6 prvog bajta instrukcije su 00 za sve instrukcije skoka. Kod instrukcija uslovnog skoka bit 5 prvog bajta instrukcije je 0, dok kod instrukcija bezuslovnog skoka bit 5 prvog bajta instrukcije je 1. Instrukcija uslovnog skoka je instrukcija uslovnog skoka ukoliko je rezultat nula (JZ), a instrukcije bezuslovnog skoka su instrukcije bezuslovnog skoka (JMP) i instrukcija skoka na potprogram (JSR). Bitovima 4 do 0 prvog bajta instrukcije specifira se kod operacije i na osnovu toga su za instrukcije JZ, JMP i JSR usvojeni kodovi operacije 00000000, 00100000 i 00100001, respektivno. Instrukcije JZ, 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 i 6 prvog bajta instrukcije su 11 za sve adresne i bezadresne instrukcije.

Bit 5 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), inkrementiranje akumulatora (INC) i povratka iz potprograma (RTS). Bitovima 4 do 0 prvog bajta instrukcije specificira se kod operacije za bezadresne instrukcije. Na osnovu toga su za instrukcije PUSH, POP, INC i RTS usvojeni kodovi operacija 11000000, 11000001, 11000010 i 11000011, respektivno. Dužina instrukcija je 1 bajt.

Bit 5 prvog bajta instrukcije je 1 za adresne instrukcije. Adresne instrukcije su instrukcija prenosa u akumulator (LD), instrukcija prenosa iz akumulatora (ST), logička instrukcija "i" (AND), instrukcija aritmetičkog pomeranja operanda jedno mesto udesno koja smešta rezultat u akumulator (ASR) 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, AND, ASR i JADR usvojeni kodovi operacija 11100000, 11100001, 11100010, 11100011 i 11100100 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-registarsko indirektno adresiranje (regind), 001-registarsko direktno adresiranje (regdir), 010-memorijsko indirektno adresiranje (memind), 011-relativno adresiranje sa pomerajem (pcrel) i 100-neposredno adresiranje (immed). Kod registarsko direktnog i registarskog indirektnog adresiranja, koristi se neki od registara opšte namene R0 do R15 specificiranih bitovima od 4 do 1 drugog bajta. Bit 0 drugog bajta se ne koristi. Dužina instrukcija je 2 bajta. Kod memorijskog indirektnog 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 instrukcije je 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 bez znaka. Bitovi 4 do 0 drugog bajta instrukcije se ne koriste. Dužina instrukcija je 4 bajta. Kod neposrednog adresiranja 8 bitni operand dat je trećim bajtom instrukcije. Bitovi 4 do 0 drugog bajta instrukcije se ne koriste. Dužina instrukcije je 3 bajta.

Stek raste prema nižim memorijskim lokacijama, a registar SP ukazuje na poslednju zauzetu memorijsku lokaciju. Procesor nema mogućnost obrade prekida.

Procesor nema podršku za detektovanje greške u adresiranju u prvoj fazi, već tako pročitane instrukcije se ignorišu u ostalim fazama.

Prvi korak svake faze smatrati da se označava sa FETCH, ADDR, EXEC.

  1. Napisati izraze za generisanje signala svih načina adresiranja. IR registar se popunjava od viših ka nižim bitovima.
  2. Napisati izraze za generisanje signala operacija i to samo za INC, AND i ASR.
  3. Nacrtati dijagram toka faza formiranja adrese i čitanja operanda i faze izvršavanje operacije.