ORT2/K3 Septembar 2021

Izvor: SI Wiki
< ОРТ2
Datum izmene: 26. januar 2023. u 16:53; autor: Andrej Šolaja (razgovor | doprinosi)
Pređi na navigaciju Pređi na pretragu
Ovaj rok nije rešen. Pomozite SI Wiki tako što ćete ga rešiti.

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 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 god 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, 01000001, respektivno. Instrukcije JNZ, JMP i JSR se realizuju kao apsolutni skokovi, pri čemu je adresa data drugim i trećim bajtom instruckije. 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), dekrementiranja akumulatora (DEC) 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, 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 bitovima 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 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 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 instrukcije 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 (R0)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 01 10 0A 83
LOKACIJA 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009
VREDNOST E0 00 10 00 00 09 10 10 E8 A2
LOKACIJA 100A 100B 100C 100D 100E 100F 1010 1011 1012 1013
VREDNOST E2 60 08 00 A0 40 19 10 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

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 10 00 LD 0010
1004
2 1004, 1005, 1006 00 09 10 JNZ 1009 1007
3 1009 A2 DEC 100A
4 100A, 100B, 100C, 100D E2 60 08 00 OR(PC)+0008 100E
5 100E A0 PUSH 100F
6 100F,1010,1011 40 19 10 JMP 1019 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 0010, 0011 1001
2
3
4 1016,1017 00F0
5
6
7 000C, 000D C100 R1 = 000C
#
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 10F0 0 0 0 0
5 2001,2002 10F0 0 0 0 0 SP = 2002, MEM[2001] = F0, MEM[2002] = 10
6 10F0 1 0 0 0 PC = 1019
7 6080 0 0 0 0