ОРТ2/К3 2023
Трећи колоквијум 2023. године одржан је 21. јануара 2023. и трајао је 90 минута.
Поставка
Посматра се део рачунара који чине меморија и процесор. Меморија је капацитета 216 бајтова. Ширина меморијске речи је 1 бајт. Процесор је са једноадресним форматом инструкција. Подаци су дужине 1 бајт. Адресе су дужине 2 бајта и заузимају две суседне меморијске локације, при чему се старији бајт налази на нижој, а млађи бајт на вишој адреси.
У процесору постоји регистар програмског бројача PC дужине 2 бајта, адресни регистар меморије MAR дужине 2 бајта, прихватни регистар података меморије MDR дужине 1 бајт, прихватни регистар инструкција IR дужине 4 бајта, акумулатор A дужине 1 бајт, прихватни регистар података B дужине 1 бајт, регистри опште намене R0 до R31 дужине 2 бајта, програмска статусна реч PSW дужине 1 бајт. Инструкције су дужине 1, 2, 3 или 4 бајта.
Битови 7 и 6 првог бајта инструкције су 0 за све инструкције скока. Код инструкција условног скока бит 5 првог бајта инструкције је 0, док код инструкција безусловног скока бит 5 првог бајта инструкције је 1. Инструкција условног скока је инструкција условног скока уколико је резултат негативан (JN), а инструкције безусловног скока су инструкција безусловног скока (JMP) и инструкција скока на потпрограм (JSR). Битовима 4 до 0 првог бајта инструкције специфицира се код операције и на основу тога су за инструкције JN, JMP и JSR усвојени кодови операције 00000000, 00100000 и 00100001, респективно. Инструкције JN, JMP и JSR се реализују као апсолутни скокови, при чему је адереса дата другим и трећим бајтом инструкције. Дужина инструкција је 3 бајта.
Битови 7 и 6 првог бајта инструкције су 1 за све безадресне инструкције. Безадресне инструкције су инструкције стављања садржаја акумулатора на стек (PUSH), пуњења акумулатора садржајем са стека (POP), аритметичко померање удесно за једно место (ASR) и инструкција повратка из потпрограма (RTS). Битовима 5 до 0 првог бајта инструкције специфицира се код операције за безадресне инструкције. На основу тога су за инструкције PUSH, POP, ASR и RTS усвојени кодови операџија 11000000, 11000001, 11000010 и 11000011, респективно. Дужина инструкција је 1 бајт.
Битови 7 и 6 првог бајта иструкције имају вредност 01 за све адресне инструкције. Адресне инструкције су инструкција преноса у акумулатор (LD), инструкција преноса из акумулатора (ST), инструкција преноса из акумулатора у виши бајт регистра опште намене (STRH), инструкција преноса из акумулатора у нижи бајт регистра опште намене (STRL), инструкција логичко „и“ без смештања резултата инструкције у акумулатор (TST), инструкција инкрементирања операнда који смешта резултат само у акумулатор (INC), инструкција безусловног скока на срачунату адресу (JADR) и инструкција сабирања (ADD). Битовима 5 до 0 првог бајта инструкције специфицира се код операције за адресне инструкције. На основу тога су за инструкције LD, ST, STRH, STRL, TST, INC, JADR и ADD усвојени кодови операција 01000000, 01000001, 01000010, 01000011, 01000101, 01000110 и 01000111 респективно. Дужина инструкција је 2, 3 или 4 бајта и зависи од специфицираног начина адресирања.
Инструкције STRH и STRL могу једино да се напишу са регистарским директним адресирањем, а ако се инструкција ST напише са регистарским директним адресирањем онда се у нижих осам бита регистра опште намене упише садржај акумулатора (виши бајт регистра опште намене се не мења). У случају да се инструкција LD напише са регистарским директним адресирањем, нижи бајт регистра опште намене се учитава у акумулатор.
Начини адресирања су специфицирани битовима 7, 6 и 5 другог бајта инструкције и то на следећи начин: 000 – меморијско директно адресирање (memdir), 001 – регистарско директно адресирање (regdir), 010 – регистарско индиректно адресирање (regind), 011 – регистарско индиректно адресирање са предекрементирањем (predec), 100 – релативно адресирање са померајем (pcrel), 101 – непосредно адресирање (immed) и 110 – регистарско индиректно адресирање са померајем (regindpom). Код меморијског директног адресирања 16 битна адреса меморијске локације је дата трећим и четвртим бајтом инструкције. Битови 4 до 0 другог бајта инструкције се не користе. Дужина инструкције је 4 бајта. Адресирања регистарско директно, регистарско индиректно и регистарско индиректно са предекрементирањем користе неке од регистара опште намене R0 до R31 специфициране битовима од 4 до 0 другог бајта инструкције. Дужина инструкција је 2 бајта. Код релативног адресирања са померајем трећи бајт инструкције садржи 8 битни померај који је дат као целобројна величина са знаком. Битови 4 до 0 другог бајта инструкције се не користе. Дужина инструкције је 3 бајта. Код непосредног адресирања 8 битни операнд дат је трећим бајтом инструкције. Битови 4 до 0 другог бајта се не користе. Дужина инструкције је 3 бајта. Код регистарског индиректног адресирања са померајем трећи и четврти бајт инструкције садрже 16 битни померај који је дат као целобројна величина са знаком. Један од регистара опште намене R0 до R31 који се користи специфициран је битовима од 4 до 0 другог бајта инструкције. Дужина инструкције је 4 бајта.
Стек расте према нижим меморијским локацијама, а регистар SP указује на последњу заузету меморијску локацију. Процесор нема могућност обраде прекида.
- Пројектовати део операционе јединице процесора која је потребна да се изврши (FETCH + ADDR + EXEC) инструкција INC (PC) 05h. Потребно је да се нацрта минимална операциона јединица која је довољна да се изврши споменута инструкција.
- Дати су садржаји регистара и индикатора PC = 1000h, SP = 2000h, ACC = 7Fh, R0 = 0014h, R1 = 0015h, R2 = 00A2h, R3 = FFE3h, N = 0, Z = 0, V = 0 и C = 0. Индикатори статусне речи на које инструкција не утиче треба да остану непромењени. Извршити 7 сукцесивних наредби и за сваку наредбу одредити следеће: у фази читања инструкције – меморијске адресе са којих је прочитана инструкција, садржај регистра IR, инструкцију која је прочитана и нов садржај регистра PC; у фази одређивања адресе операнда и читања операнда – меморијске адресе са којих је прочитана адреса операнда, меморијске адресе са којих је прочитан операнд, вредност операнда и нови садржај регистара опште намене који су у овој фази промењени; у фази извршавања операције – меморијске адресе којима се у овој фази приступа, садржај акумулатора А и индикатора N, Z, V и C након извршавања инструкције и нови садржај регистара и меморијских локација који су у овој фази промењени.
ЛОКАЦИЈА: | 0000h | 0001h | 0002h | 0003h | 0004h | 0005h | 0006h | 0007h | 0008h | 0009h |
---|---|---|---|---|---|---|---|---|---|---|
САДРЖАЈ: | 10h | 01h | 00h | C1h | 21h | 77h | 11h | 00h | 0Ah | 83h |
ЛОКАЦИЈА: | 1000h | 1001h | 1002h | 1003h | 1004h | 1005h | 1006h | 1007h | 1008h | 1009h |
САДРЖАЈ: | 47h | A0h | 02h | 44h | A0h | 02h | 42h | 21h | 46h | 61h |
ЛОКАЦИЈА: | 810Ah | 810Bh | 810Ch | 810Dh | 810Eh | 810Fh | 8110h | 8111h | 8112h | 8113h |
САДРЖАЈ: | 40h | 00h | 00h | 02h | 43h | 20h | 40h | A0h | 01h | C0h |
ЛОКАЦИЈА: | 8114h | 8115h | 8116h | 8117h | 8118h | 8119h | 811Ah | 811Bh | 811Ch | 811Dh |
САДРЖAJ: | C2h | 45h | 00h | 00h | 00h | 00h | 10h | 00h | 10h | 13h |
Решење
Кодови операција
Битови IR31..24 | Класа инструкције | |||||||
---|---|---|---|---|---|---|---|---|
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | |
0 | 0 | 0 | Код операције | Условни скок | ||||
0 | 0 | 1 | Код операције | Безусловни скок | ||||
1 | 1 | Код операције | Безадресне инструкције | |||||
0 | 1 | Код операције | Адресне инструкције |
Битови IR31..24 | Инструкција | 2. бајт | 3. бајт | 4. бајт | Дужина | |||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | |||||
Условни скок | ||||||||||||
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | JN | ст. | мл. | / | 3 б |
Безусловни скок | ||||||||||||
0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | JMP | ст. | мл. | / | 3 б |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | JSR | ст. | мл. | / | 3 б |
Безадресне инструкције | ||||||||||||
1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | PUSH | / | / | / | 1 б |
1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | POP | / | / | / | 1 б |
1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | ASR | / | / | / | 1 б |
1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | RTS | / | / | / | 1 б |
Адресне инструкције | ||||||||||||
0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | LD | Адр. | |||
0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | ST | Адр. | |||
0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | STRH | Адр. | |||
0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | STRL | Адр. | |||
0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | TST | Адр. | |||
0 | 1 | 0 | 0 | 0 | 1 | 0 | 1 | INC | Адр. | |||
0 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | JADR | Адр. | |||
0 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | ADD | Адр. |
Битови IR23..16 | Адресирање | 3. бајт | 4. бајт | Дужина | |||||||
---|---|---|---|---|---|---|---|---|---|---|---|
23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | ||||
0 | 0 | 0 | / | / | / | / | / | Мем. дир. | ст. | мл. | 4 б |
0 | 0 | 1 | R | R | R | R | R | Рег. дир. | / | / | 2 б |
0 | 1 | 0 | R | R | R | R | R | Рег. инд. | / | / | 2 б |
0 | 1 | 1 | R | R | R | R | R | Р.инд.предец. | / | / | 2 б |
1 | 0 | 0 | / | / | / | / | / | PC релативно | pom. | / | 3 б |
1 | 0 | 1 | / | / | / | / | / | Непосредно | оп. | / | 3 б |
1 | 1 | 0 | R | R | R | R | R | Рег. инд. са пом. | pom. | pom. | 4 б |
Операциона јединица
- Овај задатак није решен. Помозите SI Wiki тако што ћете га решити.
Меморија
# | Адресе у меморији са којих је учитана инструкција | IR31..24 | IR23..16 | IR15..8 | IR7..0 | Инструкција | PC |
---|---|---|---|---|---|---|---|
1 | 1000h, 1001h, 1002h | 47h | А0h | 02h | / | ADD #02h | 1003h |
2 | 1003h, 1004h, 1005h | 44h | A0h | 02h | / | TST #02h | 1006h |
3 | 1006h, 1007h | 42h | 21h | / | / | STRH R1 | 1008h |
4 | 1008h, 1009h | 46h | 61h | / | / | JADR -(R1) | 100Ah |
5 | 8114h | C2h | / | / | / | ASR | 8115h |
6 | 8115h, 8116h, 8117h, 8118h | 45h | 00h | 00h | 00h | INC 0000h | 8119h |
7 | 8119h, 811Ah, 811Bh | 00h | 10h | 00h | / | JN 1000h | 811Ch |
# | Адресе у меморији са којих је учитана адреса операнда | Адресе у меморији са којих је учитан операнд | Операнд | Нови садржај регистара опште намене |
---|---|---|---|---|
1 | / | / | 02h | |
2 | / | / | 02h | |
3 | / | / | / | |
4 | / | / | / | R1=8114h |
5 | / | / | / | |
6 | / | 0000h | 10h | |
7 | / | / | / |
# | Меморијске адресе којима се приступа у овој фази | Акумулатор | N | Z | V | C | Нови садржај регистара и меморијских локација који су промењени у овој фази |
---|---|---|---|---|---|---|---|
1 | / | 81h | 1 | 0 | 1 | 0 | |
2 | / | 81h | 0 | 1 | 1 | 0 | |
3 | / | 81h | 0 | 1 | 1 | 0 | R1=8115h |
4 | / | 81h | 0 | 1 | 1 | 0 | PC=8114h |
5 | / | C0h | 1 | 0 | 1 | 1 | |
6 | / | 11h | 0 | 0 | 0 | 0 | |
7 | / | 11h | 0 | 0 | 0 | 0 |