ORT2/K3 2021

Izvor: SI Wiki
< ОРТ2
Datum izmene: 23. januar 2022. u 21:40; autor: KockaAdmiralac (razgovor | doprinosi) (Vrednost SP nakon PUSH)
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ž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 R15 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). Bitovima 5 do 0 prvog bajta instrukcije specificira se kod operacije i na osnovu toga su za instrukcije JNZ i JMP usvojeni kodovi operacije 00000000 i 01000000, respektivno. Instrukcije JNZ i JMP 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 akumulatora na stek (PUSH), punjenja akumulatora sadržajem sa steka (POP) i dekrementiranje akumulatora (DEC). Bitovima 4 do 0 prvog bajta instrukcije specificira se kod operacije za bezadresne instrukcije. Na osnovu toga su za instrukcije PUSH, POP i DEC usvojeni kodovi operacija 10100000, 10100001 i 10100010, 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), instrukcija bezuslovnog skoka na sračunatu adresu (JADR), instrukcija sabiranja (ADD) i instrukcija oduzimanja (SUB). Bitovima 4 do 0 prvog bajta instrukcije specificira se kod operacije za adresne instrukcije. Na osnovu toga su za instrukcije LD, ST, OR, ROR, JADR, ADD i SUB usvojeni kodovi operacija 11100000, 11100001, 11100010, 11100011, 11100100, 11100101 i 11100110 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 direktno adresiranje (regdir), 011-relativno adresiranje sa pomerajem (pcrel), 100-neposredno adresiranje (immed) i 101-registarsko indirektno sa pomerajem adresiranje (regindpom). 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 R15 specificirane bitovima od 3 do 0 drugog bajta. Bit 4 drugog bajta instrukcije se ne koristi. Dužina instrukcija je 2 bajta. Registarsko direktno adresiranje koristi neke od registara opšte namene R0 do R15 specificirane bitovima od 3 do 0 drugog bajta. Bit 4 drugog bajta instrukcije se ne koristi. Dužina instrukcija je 2 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 4 do 0 drugog bajta instrukcije se ne koriste. Dužina instrukcija je 4 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 R15 koji se koristi specificiran je bitovima od 3 do 0 drugog bajta instrukcije. Bit 4 drugog bajta instrukcije se ne koristi. 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. Projektovati deo operacione jedinice procesora koja je potrebna da se izvrši (FETCH + ADDR + EXEC) instrukcija JADR (1234h).
  2. Dati su početni sadržaji registara i indikatora: PC=1000h, SP=2000h, ACC = 0002h, R0=00F2h, R1=000Ch, R2=00A2h, R3=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 7 sukcesivnih naredbi 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.
Sadržaj dela memorije iz postavke zadatka
LOKACIJA 000A 000B 000C 000D 000E 000F 0010 0011 0012 0013
VREDNOST 10 01 00 C1 21 77 11 00 0A 83
LOKACIJA 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009
VREDNOST E0 00 00 0A 00 10 09 10 E8 A2
LOKACIJA 100A 100B 100C 100D 100E 100F 1010 1011 1012 1013
VREDNOST E2 60 00 08 A0 40 10 19 00 52
LOKACIJA 1014 1015 1016 1017 1018 1019 101A 101B 101C 101D
VREDNOST 21 41 F0 00 03 E3 21 B8 10 13

Rešenje

Kodovi operacija

Bitovi IR31..24 Klasa instrukcije
31 30 29 28 27 26 25 24
0 0 Kod operacije
Uslovni skok
0 1 Kod operacije
Bezuslovni skok
1 0 1 Kod operacije Bezadresne instrukcije
1 1 1 Kod operacije Adresne instrukcije
Bitovi IR31..24 Instrukcija
2. bajt 3. bajt 4. bajt Dužina
31 30 29 28 27 26 25 24
Uslovni skok
0 0 0 0 0 0 0 0 JNZ st.
ml. / 3 b
Bezuslovni skok
0 1 0 0 0 0 0 0 JMP st.
ml. / 3 b
Bezadresne instrukcije
1 0 1 0 0 0 0 0 PUSH / / / 1 b
1 0 1 0 0 0 0 1 POP / / / 1 b
1 0 1 0 0 0 1 0 DEC / / / 1 b
Adresne instrukcije
1 1 1 0 0 0 0 0 LD Adr.
1 1 1 0 0 0 0 1 ST Adr.
1 1 1 0 0 0 1 0 OR
Adr.
1 1 1 0 0 0 1 1 ROR Adr.
1 1 1 0 0 1 0 0 JADR Adr.
1 1 1 0 0 1 0 1 ADD Adr.
1 1 1 0 0 1 1 0
SUB Adr.
Bitovi IR23..16 Adresiranje
3. bajt 4. bajt Dužina
23 22 21 20 19
18
17 16
0 0 0 / / /
/ / Mem. dir.
st. ml. 4 b
0 0 1
R
R R R R Reg. ind. / / 2 b
0 1 0 R
R R R R Reg. dir. / / 2 b
0 1 1 / /
/
/ / PC relativno st.
ml. 4 b
1 0 0 / /
/
/ / Neposredno
st.
ml. 4 b
1 0 1 R
R R R R Reg. ind. sa pom. st.
ml. 4 b

Operaciona jedinica

Ovaj zadatak nije rešen. Pomozite SI Wiki tako što ćete ga rešiti.

Memorija

#
Adrese u memoriji sa kojih je učitana instrukcija IR31..24
IR23..16 IR15..8 IR7..0 Instrukcija PC
1 1000, 1001, 1002, 1003 E0 00 00 0A LD 000Ah
1004
2 1004, 1005, 1006 00 10 09 JNZ 1009h 1007
3 1009 A2 DEC 100A
4 100A, 100B, 100C, 100D E2 60 00 08 OR (PC+08h) 100E
5 100E A0 PUSH 100F
6 100F, 1010, 1011 40 10 19 JMP 1019h 1012
7 1019, 101A E3 21 ROR (R1) 101B
#
Adrese u memoriji ili registri
sa kojih je učitana adresa operanda
Adrese u memoriji ili registri
sa kojih je učitan operand
Operand Novi sadržaj registara opšte namene
1 000A, 000B 1001
2
3
4 1016, 1017 F000
5
6
7 000C, 000D 00C1
#
Memorijske adrese kojima se
pristupa u ovoj fazi
Akumulator
N Z V C Novi sadržaj registara i memorijskih lokacija
koji su promenjeni u ovoj fazi
1 1001 0 0 0 0
2 1001 0 0 0 0 PC = 1009
3 1000 0 0 0 0
4 F000 1 0 0 0
5 2001, 2002 F000 1 0 0 0 MEM[2001] = F0, MEM[2002] = 00, SP = 2002
6 F000 1 0 0 0 PC = 1019
7 8060 0 0 0 1