ORT2/K2N 2019

Izvor: SI Wiki
Pređi na navigaciju Pređi na pretragu

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žina 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 2 bajta, prihvatni registar podatka B dužine 2 bajta, 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.

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 ukoliko rezultat jeste nula (JZ), 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 JZ, JMP i JSR usvojeni kodovi operacija 00000000, 00010000 i 00010001, respektivno. Instrukcije JZ, JMP i JSR se realizuju kao apsolutni skokovi, pri čemu je adresa skoka 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.

Bitovi 4 i 3 prvog bajta instrukcije su 00 za bezadresne instrukcije. Bezadresne instrukcije su instrukcije stavljanja sadržaja akumulatora na stek (PUSH), punjenja akumulatora sadržajem sa steka (POP) i povratka iz potporgrama (RTS). Bitovima 2 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 i 3 prvog bajta instrukcije su 01 za adresne instrukcije. Adresne instrukcije su instrukcija prenosa u akumulator (LD), instrukcija prenosa iz akumulatora (ST), aritmetička instrukcija dekrementiranja operanda koja rezultat smešta u akumulator (DEC), logička instrukcija "i" (AND) i instrukcija bezuslovnog skoka na sračunatu adresu (JADR). Bitovima 2 do 0 prvog bajta instrukcije specificira se kod operacije za adresne instrukcije. Na osnovu toga su za instrukcije LD, ST, DEC, AND i JADR usvojeni kodovi operacija 11101000, 11101001, 11101010, 11101011 i 11101100 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 indirektno adresiranje (memind), 001-registarsko direktno adresiranje (regdir), 010-registarsko indirektno sa pomerajem (regindpom), 011-relativno adresiranje sa pomerajem (pcrel) i 100-neposredno adresiranje (immed). Kod memorijskog indirektnog adresiranja 16 bitna adresa memorijske lokacije je data trećim i četvrtim bajtom instrukcije. Bitovi od 4 do 0 drugog bajta instrukcije se ne koriste. Dužina instrukcija je 4 bajta. Registarsko direktno adresiranje koristi neke od registara opšte namene R0 do R15 specificirane bitovima od 3 do 0 drugog bajta instrukcije. Bit 4 drugog bajta se ne koristi. Dužina instrukcije 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 bez znaka. Jedan od registara opšte namene R0 do R15 specificiran je bitovima od 3 do 0 drugog bajta instrukcije. Bit 4 drugog bajta se ne koristi. 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 sa znakom. Bitovi 4 do 0 drugog bajta instrukcije se ne koriste. Dužina instrukcija je 4 bajta. Kod neposrednog adresiranja 16 bitni operand dat je trećim i četvrtim bajtom instrukcije. Bitovi od 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 prvu slobodnu memorijsku lokaciju. Procesor nema mogućnost obrade prekida.

  1. Napisati izraze 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 PUSH i DEC.
  4. Nacrtati dijagram toka faze formiranja adrese i čitanja operanda i faze izvršavanje[sic] instrukcije.
  5. Dati su početni sadržaji registara i indikatora: PC=1000h, SP=2000h, ACC = 0006h, R0=00A7h, R1=0011h, R1=00E2h, R1=FFE3h, N=0, Z=0, V=0 i C=0. Indikatori statusne reči na koje instrukcije ne utiče treba da ostanu nepromenjeni. Izvršiti 4 sukcesivne naredbe i za svaku naredbu odrediti sledeće: u fazi čitanja instrukcije - memorijske adrese sa kojih je pročitana instrukcija, sadržaj registra IR, instrukciju koja je pročitana i novi sadržaj registra PC; u fazi određivanja adrese operanda i čitanja operanda - memorijske adrese sa kojih je pročitana adresa operanda, memorijske adrese sa kojih je pročitan operand, vrednost operanda i novi sadržaj registara opšte namene koji su u ovoj fazi promenjeni; u fazi izvršavanja operacije - memorijske adrese kojima se u ovoj fazi pristupa, sadržaj akumulatora A i indikatora N, Z, V i C nakon izvršavanja instrukcije i novi sadržaj registara i memorijskih lokacija koji su u ovoj fazi promenjeni. Rezultate predstaviti u tabelama 1, 2 i 3 formulara.[1]
Sadržaj dela memorije iz postavke zadatka
LOKACIJA 000A 000B 000C 000D 000E 000F 0010 0011 0012 0013
VREDNOST 10 00 C0 32 21 77 11 00 0A 03
LOKACIJA 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009
VREDNOST E0 EA 00 0A 00 00 11 10 E8 22
LOKACIJA 100A 100B 100C 100D 100E 100F 1010 1011 1012 1013
VREDNOST 11 00 10 AA 03 51 00 0A 00 52
LOKACIJA 1014 1015 1016 1017 1018 1019 101A 101B 101C 101D
VREDNOST 21 41 10 AA 03 00 21 88 10 13

Rešenje

Kodovi operacija

Signali

Dijagrami toka

ADDR

ADDR

EXEC

EXEC

Memorija

# Adrese sa kojih je učitana instrukcija IR31..24 IR23..16 IR15..8 IR7..0 Instrukcija PC
1 1000 E0 PUSH 1001
2 1001, 1002, 1003, 1004 EA 00 0A 00 DEC 000A 1005
3 1005, 1006, 1007 00 11 10 JZ 1011 1008
4 1008, 1009 E8 22 LD R2 100A
# Adrese sa kojih je učitana adresa operanda Adrese sa kojih je učitan operand Operand Sadržaj promenjenih registara
1
2 000A, 000B 0010, 0011 0011
3
4 00E2
# Adrese kojima se pristupa u ovoj fazi Akumulator N Z V C Sadržaj promenjenih registara i mem. lok.
1 2000, 1FFF 0006 0 0 0 0 SP[2000] = 06, SP[1FFF] = 00, SP = 1FFE
2 0010 0 0 0 0
3 0010 0 0 0 0
4 00E2 0 0 0 0
  1. Počev od školske 2020/2021. godine, ovakva stavka dolazi tek na trećem kolokvijumu.