ORT2/K3 Januar 2024
K3 održan je 20.01.2024. u januarskom roku Zbog izmena programa predmeta nije bilo moguće da se radi i K2 i K3 integralno, već se birao jedan od ta dva.
Posmatra se deo računara koji čine memorija i i procesor. Memorija je kapaciteta 2^16 bajtova. Širina memorijske reči je 1 bajt. Procesor je sa jednoadresnim formatom instrukcija. Podaci su dužine 1 bajt. Adrese su dužine 2 bajta i zauzimaju dve susedne memorijske lokacije, pri čemu se mlađi bajt nalazi na višoj, a stariji bajt na nižoj adresi. U procesoru postoji registar programskog brojača RS dužine 2 bajt, adresni registar memorije MAR dužine 2 bajt, prihvatni registar podatka memorije MR 1 bajt, prihvatni registar instrukcije IR dužine 3 bajta, akumulator A dužine 1 bajta, prihvatni registar podatka V dužine 1 bajta, registri opšte namene RO, R1 do R15 dužine 2 bajta, programska statusna reč PSW dužine 1 bajt, ukazivač na na vrh steka SR dužine 2 bajt. Instrukcije su dužine 1, 2 ili 3 bajta.
Instrukcija skoka je instrukcija uslovnog skoka ukoliko je rezultat nula (VZ). BItovi IR23.20 imaju vrednost 0000 za instrukcije skoka, Instrukiija BZ realizuje, se kao relativni skok u odnosu na trenutnu vrednost programskog brojača PC. Bitovi IR23.16 predstavljajut kod operacije koji je 00000000 za instrukciju BZ. Bitovi IR15.8 predstavljaju pomeraj koji Je 8-bitna celobrojna veličina sa znakom. Instrukcija je dužine 2 bajt.
Bezadresne instrukcije su instrukcija stavljanja sadržaja akumulatora na stek (PUSN), punjenja akumulatora sadržajem sa steka (ROR), dekrementiranja akumulatora (DES) i povratka iz potprograma (RTS). Bitovi IR23.20 imaju vrednost 0001 za bezadresne instrukcije. Bitovi IR19.16 označavaju redni broj instrukcije. Bitovi IR23.16 predstavljaju kod operacije i redom su 00010000, 00010001, 00010010, 00010011 za instrukcije PUSH, POP, DEC u RTS. Instrukcije su dužine 1 bajt.
Adresne instrukcije su instrukcija prenosa U akumulator (LD) instrukcija prenosa iz akumulatora (ST), aritmetička instrukcija sabiranja (ADD), instrukcija aritmetičkog pomeranja ulevo za jedno mesto (ASL) i instrukcija bezuslovnog skoka na sračunatu adresu potprograma (JSR). U slučaju da se naiđe na kombinaciju operacija sa nekim adresiranjem sa kojim ta operacija ne može da se izvrši, takve instrukcije treba da budu bez dejstva. Instrukcija ASL rezultat pomeranja smešta u registar A Bitovi PR23.20 predstavljaju kod operacije i redom su 0010, 0011, 0100, 0101 i 0110 za instrukcije LD, ST, ADD, ASL i JSR, Dužina instrukcija zavisi od načina adresiranja.
Načini adresiranja su registarsko direktno adresiranje (regdir), memorijsko direktno adresiranje (memdir), registarsko indirektno sa preinkrementiranjem adresiranje (preipsg) i neposredno adresiranje (immed). Bitovi IRi9.1 predstavljaju način adresiranja i redom su 0000, 0001, 0010 i 0011 za adresiranja regdir, memdir, preincr i immed. Kod registarskih adresiranja bitovi IR15.12 se koriste za adresiranje jednog od registara opšte namene R0 do R15, dok se bitovi IR11.8 ne koriste. Dužina instrukcije je 2 bajta. Kod memorijskih adresiranja bitovi IR15.0 predstavljaju adresu memorijske lokacije. Dužina instrukcije je Z bajta. Kod neposrednog adresiranja bitovi IR15.8 predstavljaju 8 bitni podatak. Dužina instrukcije je 2 bajta vatm loaiіama Stek raste prema višim memorijskim lokacijama, a registar SP ukazuje na prvu slobodnu memorijsku lokaciju.
K3 [30]
Smatrati da su registri RO-R15 smešteni u registarski fajl. a) Projektovati deo operacione jedinice procesora (FETSN + ADDR + EHES) koja je potrebna da se izvrše sledeće instrukcije: JSR 1000h, JSR +(R2), DEC u ASL R2. Potrebno je nacrtati samo jednu operacionu jedinicu koja može da izvrši sve spomenute instrukcije.
b) Dati su početni sadržaji registara indikatora: PC=1000h, SP=0002h, ACC=77h, R0-1016h,
Rl=1018h, R2=1015h, N=0, Z=0, V=0 i S-0. Indikatori statusne reči na koje instrukcija ne utiče treoa
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 I,
instrukciju koja je pročitana i novi sadržaj registra RS; 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 S 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.
LOKACIJA | 0000 | 0001 | 0002 | 0003 | 0004 | 0005 | 0006 | 0007 | 0008 | 0009 |
---|---|---|---|---|---|---|---|---|---|---|
VREDNOST | 10 | 02 | 00 | C1 | 21 | 77 | 11 | 00 | 0A | 83 |
LOKACIJA | 1000 | 1001 | 1002 | 1003 | 1004 | 1005 | 1006 | 1007 | 1008 | 1009 |
VREDNOST | 13 | 12 | 41 | 10 | 14 | 10 | 52 | 20 | 00 | 02 |
LOKACIJA | 100A | 100B | 100C | 100D | 100E | 100F | 1010 | 1011 | 1012 | 1013 |
VREDNOST | 10 | 12 | 61 | 10 | 00 | 23 | 80 | 01 | 10 | 11 |
LOKACIJA | 1014 | 1015 | 1016 | 1017 | 1018 | 1019 | 101A | 101B | 101C | 101D |
VREDNOST | 09 | 41 | 80 | 1A | 03 | E3 | 21 | B8 | 10 | 13 |
Rešenje
# | Adrese u memoriji sa kojih je učitana instrukcija | IR23..16 | IR15..8 | IR7..0 | Instrukcija | PC |
---|---|---|---|---|---|---|
1 | 1000h | 13h | / | / | RTS | 1001h |
2 | 1002h, 1003h, 1004h | 41h | 10h | 14h | ADD 1014h | 1005h |
3 | 1005H | 10h | / | / | PUSH | 1006h |
4 | 1006h, 1007h | 52h | 20h | / | ASL +(R2) | 1008h |
5 | 1008h, 1009h | 00h | 02h | / | BZ (PC)02 | 100Ah |
6 | 100Ch, 100Dh, 100Eh | 61h | 10h | 00h | JSR 1000h | 100Fh |
7 | 1000h | 13h | / | / | RTS | 1001h |
# | 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 | / | / | / | / |
2 | / | 1014 | 09h | / |
3 | / | / | / | / |
4 | / | 1016h | 80h | R2 = 1016h |
5 | / | / | / | / |
6 | / | / | / | / |
7 | / | / | / | / |
# | 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 | 0000h, 0001h | 77h | 0 | 0 | 0 | 0 | PC = 1002h, SP = 0000h |
2 | / | 80h | 1 | 0 | 0 | 1 | / |
3 | 0000h | 80h | 1 | 0 | 0 | 1 | MEM[0000h] = 80h, SP = 0001h |
4 | / | 00h | 0 | 1 | 1 | 0 | / |
5 | / | 00h | 0 | 1 | 1 | 0 | PC = 100Ch |
6 | 0001h, 0002h | 00h | 0 | 1 | 1 | 0 | MEM[0001h] = 10h, MEM[0002h] = OFh, SP = 0003h |
7 | 0002h, 0001h | 00h | 0 | 1 | 1 | 0 | SP = 0001h, PC = 100Fh |