ОРТ2/К3 Септембар 2021 — разлика између измена
Нема описа измене |
мНема описа измене |
||
(Није приказано 5 међуизмена 3 корисника) | |||
Ред 1: | Ред 1: | ||
{{tocright}} | {{tocright}} | ||
'''Испит у септембарском року 2021. године''' одржан је 22. септембра. | |||
== Поставка == | == Поставка == | ||
Ред 17: | Ред 17: | ||
Начини адресирања су специфицирани битовима 7, 6 и 5 другог бајта инструкције и то на следећи начин: 000-меморијско директно адресирање (memdir), 001-регистарско индиректно адресирање (regind), 010-регистарско индиректно са померајем (regindpom), 011-релативно адресирање са померајем (pcrel) и 100-непосредно адресирање (immed). Код меморијског директног адресирања 16 битна адреса меморијске локације је дата трећим и четвртим бајтом инструкције.Битови 4 до 0 другог бајта инструкције се не користе. Дужина инструкција је 4 бајта. Регистарско индиректно адресирање користи неке од регистара опште намене R0 до R31 специфициране битовима од 4 до 0 другог бајта. Дужина инструкција је 2 бајта. Код регистарског индиректног адресирања са померајем трећи и четврти бајт инструкције садрже 16 битни померај који је дат као целобројна величина са знаком. Један од регистара опште намене R0 до R31 који се користи специфициран је битовима од 4 до 0 другог бајта инструкције. Дужина инструкције је 4 бајта. Код релативног адресирања са померајем трећи и четврти бајт инструкције садрже 16 битни померај који је дат као целобројна величина са знаком. Битови 4 до 0 другог бајта инструкције се не користе. Дужина инструкције је 4 бајта. Код непосредног адресирања 16 битни операнд дат је трећим и четвртим бајтом инструкције. Битови 4 до 0 другог бајта инструкције се не користе. Дужина инструкције је 4 бајта. | Начини адресирања су специфицирани битовима 7, 6 и 5 другог бајта инструкције и то на следећи начин: 000-меморијско директно адресирање (memdir), 001-регистарско индиректно адресирање (regind), 010-регистарско индиректно са померајем (regindpom), 011-релативно адресирање са померајем (pcrel) и 100-непосредно адресирање (immed). Код меморијског директног адресирања 16 битна адреса меморијске локације је дата трећим и четвртим бајтом инструкције.Битови 4 до 0 другог бајта инструкције се не користе. Дужина инструкција је 4 бајта. Регистарско индиректно адресирање користи неке од регистара опште намене R0 до R31 специфициране битовима од 4 до 0 другог бајта. Дужина инструкција је 2 бајта. Код регистарског индиректног адресирања са померајем трећи и четврти бајт инструкције садрже 16 битни померај који је дат као целобројна величина са знаком. Један од регистара опште намене R0 до R31 који се користи специфициран је битовима од 4 до 0 другог бајта инструкције. Дужина инструкције је 4 бајта. Код релативног адресирања са померајем трећи и четврти бајт инструкције садрже 16 битни померај који је дат као целобројна величина са знаком. Битови 4 до 0 другог бајта инструкције се не користе. Дужина инструкције је 4 бајта. Код непосредног адресирања 16 битни операнд дат је трећим и четвртим бајтом инструкције. Битови 4 до 0 другог бајта инструкције се не користе. Дужина инструкције је 4 бајта. | ||
Стек расте према вишим меморијским локацијама, а регистар | Стек расте према вишим меморијским локацијама, а регистар SP указује на последњу заузету меморијску локацију. Процесор нема могућност обраде прекида. | ||
<div class="abc-list"> | <div class="abc-list"> | ||
Ред 51: | Ред 51: | ||
== Решење == | == Решење == | ||
=== Кодови операција === | |||
=== Операциона јединица === | |||
{{делимично решено}} | |||
=== Меморија === | === Меморија === | ||
{| class="wikitable" | {| class="wikitable" | ||
! # | |||
! # | |||
! Адресе у меморији са којих је учитана инструкција | ! Адресе у меморији са којих је учитана инструкција | ||
! | ! IR<sub>31..24</sub> | ||
! | ! IR<sub>23..16</sub> | ||
! | ! IR<sub>15..8</sub> | ||
! | ! IR<sub>7..0</sub> | ||
! Инструкција | ! Инструкција | ||
! PC | ! PC | ||
|- | |- | ||
| 1 | | 1 | ||
| | | 1000h, 1001h, 1002h, 1003h | ||
| | | E0h | ||
| | | 00h | ||
| | | 10h | ||
| | | 00h | ||
| LD | | LD 0010h | ||
| | | 1004h | ||
|- | |- | ||
| 2 | | 2 | ||
| | | 1004h, 1005h, 1006h | ||
| | | 00h | ||
| | | 09h | ||
| | | 10h | ||
| | | / | ||
| JNZ | | JNZ 1009h | ||
| | | 1007h | ||
|- | |- | ||
| 3 | | 3 | ||
| | | 1009h | ||
| | | A2h | ||
| | | / | ||
| | | / | ||
| | | / | ||
| DEC | | DEC | ||
| | | 100Ah | ||
|- | |- | ||
| 4 | | 4 | ||
| | | 100Ah, 100Bh, 100Ch, 100Dh | ||
| | | E2h | ||
| | | 60h | ||
| | | 08h | ||
| | | 00h | ||
| OR(PC)+ | | OR(PC)+0008h | ||
| | | 100Eh | ||
|- | |- | ||
| 5 | | 5 | ||
| | | 100Eh | ||
| | | A0h | ||
| | | / | ||
| | | / | ||
| | | / | ||
| PUSH | | PUSH | ||
| | | 100Fh | ||
|- | |- | ||
| 6 | | 6 | ||
| | | 100Fh,1010h,1011h | ||
| | | 40h | ||
| | | 19h | ||
| | | 10h | ||
| | | / | ||
| JMP | | JMP 1019h | ||
| | | 1012h | ||
|- | |- | ||
| 7 | | 7 | ||
| | | 1019h, 101Ah | ||
| | | E3h | ||
| | | 21h | ||
| | | / | ||
| | | / | ||
| ROR (R1) | | ROR (R1) | ||
| | | 101Bh | ||
|} | |} | ||
{| class="wikitable" | {| class="wikitable" | ||
! # | |||
! # | ! Адресе у меморији или регистри са којих је учитана адреса операнда | ||
! Адресе у меморији или регистри | ! Адресе у меморији или регистри са којих је учитан операнд | ||
! Адресе у меморији или регистри | |||
! Операнд | ! Операнд | ||
! Нови садржај регистара опште намене | ! Нови садржај регистара опште намене | ||
|- | |- | ||
| 1 | | 1 | ||
| | | / | ||
| | | 0010h, 0011h | ||
| | | 1001h | ||
| | | / | ||
|- | |- | ||
| 2 | | 2 | ||
| | | / | ||
| | | / | ||
| | | / | ||
| | | / | ||
|- | |- | ||
| 3 | | 3 | ||
| | | / | ||
| | | / | ||
| | | / | ||
| | | / | ||
|- | |- | ||
| 4 | | 4 | ||
| | | / | ||
| | | 1016h, 1017h | ||
| | | 00F0h | ||
| | | / | ||
|- | |- | ||
| 5 | | 5 | ||
| | | / | ||
| | | / | ||
| | | / | ||
| | | / | ||
|- | |- | ||
| 6 | | 6 | ||
| | | / | ||
| | | / | ||
| | | / | ||
| | | / | ||
|- | |- | ||
| 7 | | 7 | ||
| | | / | ||
| | | 000Ch, 000Dh | ||
| | | C100h | ||
| R1 = | | R1 = 000Ch | ||
|} | |} | ||
{| class="wikitable" | {| class="wikitable" | ||
! # | |||
! # | ! Меморијске адресе којима се приступа у овој фази | ||
! Меморијске адресе којима се | ! Акумулатор | ||
! Акумулатор | |||
! N | ! N | ||
! Z | ! Z | ||
! V | ! V | ||
! C | ! C | ||
! Нови садржај регистара и меморијских локација | ! Нови садржај регистара и меморијских локација који су промењени у овој фази | ||
|- | |- | ||
| 1 | | 1 | ||
| | | / | ||
| | | 1001h | ||
| 0 | | 0 | ||
| 0 | | 0 | ||
| 0 | | 0 | ||
| 0 | | 0 | ||
| | | / | ||
|- | |- | ||
| 2 | | 2 | ||
| | | / | ||
| | | 1001h | ||
| 0 | | 0 | ||
| 0 | | 0 | ||
| 0 | | 0 | ||
| 0 | | 0 | ||
| PC = | | PC = 1009h | ||
|- | |- | ||
| 3 | | 3 | ||
| | | / | ||
| | | 1000h | ||
| 0 | | 0 | ||
| 0 | | 0 | ||
| 0 | | 0 | ||
| 0 | | 0 | ||
| | | / | ||
|- | |- | ||
| 4 | | 4 | ||
| | | / | ||
| | | 10F0h | ||
| 0 | | 0 | ||
| 0 | | 0 | ||
| 0 | | 0 | ||
| 0 | | 0 | ||
| | | / | ||
|- | |- | ||
| 5 | | 5 | ||
| | | 2001h, 2002h | ||
| | | 10F0h | ||
| 0 | | 0 | ||
| 0 | | 0 | ||
| 0 | | 0 | ||
| 0 | | 0 | ||
| SP = | | SP = 2002h, MEM[2001h] = F0h, MEM[2002h] = 10h | ||
|- | |- | ||
| 6 | | 6 | ||
| | | / | ||
| | | 10F0h | ||
| | | 0 | ||
| 0 | | 0 | ||
| 0 | | 0 | ||
| 0 | | 0 | ||
| PC = | | PC = 1019h | ||
|- | |- | ||
| 7 | | 7 | ||
| | | / | ||
| | | 6080h | ||
| 0 | | 0 | ||
| 0 | | 0 | ||
| 0 | | 0 | ||
| 0 | | 0 | ||
| | | / | ||
|} | |} | ||
[[Категорија:ОРТ2]] | [[Категорија:ОРТ2]] | ||
[[Категорија:Рокови]] | [[Категорија:Рокови]] |
Тренутна верзија на датум 11. фебруар 2023. у 15:43
Испит у септембарском року 2021. године одржан је 22. септембра.
Поставка
Посматра се део рачунара који чине меморија и процесор. Меморија је капацитета 216 бајтова. Ширина меморијске речи је 1 бајт. Процесор је са једноадресним форматом инструкција. Адресе и подаци су дужине 16 бита и заузимају по две суседне меморијске локације, при чему се старији бајт налази на вишој, а млађи бајт на нижој адреси.
У процесору постоји регистар програмског бројача PC дужине 2 бајта, адресни регистар меморије MAR дужине 2 бајта, прихватни регистар податка меморије MDR дужине 1 бајт, прихватни регистар инструкције IR дужине 4 бајта, акумулатор A дужине 2 бајта, прихватни регистар податка B дужине 2 бајта, регистри опште намене R0 до R31 дужине 2 бајта, програмска статусна реч PSW дужине 1 бајт. Инструкције су дужине 1, 2, 3 или 4 бајта.
Бит 7 првог бајта инструкције је 0 за све инструкције скока. Код инструкција условног скока бит 6 првог бајта инструкције је 0, док год инструкција безусловног скока бит 6 првог бајта инструкције је 1. Инструкција условног скока је инструкција условног скока уколико резултат није нула (JNZ), а инструкције безусловног скока су инструкција безусловног скока (JMP) и инструкција скока на потпрограм (JSR). Битовима 5 до 0 првог бајта инструкције специфицира се код операције и на основу тога су за инструкције JNZ, JMP и JSR усвојени кодови операције 00000000, 01000000, 01000001, респективно. Инструкције JNZ, JMP и JSR се реализују као апсолутни скокови, при чему је адреса дата другим и трећим бајтом инструцкије. Дужина инструкција је 3 бајта.
Бит 7 првог бајта инструкције је 1 за све адресне и безадресне инструкције.
Битови 6 и 5 првог бајта инструкције су 01 за безадресне инструкције. Безадресне инструкције су инструкције стављања садржаја акумулатора на стек (PUSH), пуњења акумулатора садржајем са стека (POP), декрементирања акумулатора (DEC) и повратка из потпрограма (RTS). Битовима 4 до 0 првог бајта инструкције специфицира се код операције за безадресне инструкције.На основу тога су за инструкције PUSH, POP, DEC и RTS усвојени кодови операција 10100000, 10100001, 10100010 и 10100011, респективно. Дужина инструкција је 1 бајт.
Битови 6 и 5 првог бајта инструкције су 11 за адресне инструкције. Адресне инструкције су инструкција преноса у акумулатор (LD), инструкција преноса из акумулатора (ST), логичка инструкција "или" (OR), инструкција ротирања операнда једно место удесно која смешта резултат у акумулатор (ROR) и инструкција безусловног скока на срачунату адресу (JADR). Битовима 4 до 0 првог бајта инструкције специфицира се код операције за адресне инструкције. На основу тога су за инструкције LD, ST, OR, ROR и JADR усвојени кодови операција 11100000, 11100001, 11100010, 11100011 и 11100100 респективно. Дужина инструкција је 2 или 4 бајта и зависи од специфицираног начина адресирања.
Начини адресирања су специфицирани битовима 7, 6 и 5 другог бајта инструкције и то на следећи начин: 000-меморијско директно адресирање (memdir), 001-регистарско индиректно адресирање (regind), 010-регистарско индиректно са померајем (regindpom), 011-релативно адресирање са померајем (pcrel) и 100-непосредно адресирање (immed). Код меморијског директног адресирања 16 битна адреса меморијске локације је дата трећим и четвртим бајтом инструкције.Битови 4 до 0 другог бајта инструкције се не користе. Дужина инструкција је 4 бајта. Регистарско индиректно адресирање користи неке од регистара опште намене R0 до R31 специфициране битовима од 4 до 0 другог бајта. Дужина инструкција је 2 бајта. Код регистарског индиректног адресирања са померајем трећи и четврти бајт инструкције садрже 16 битни померај који је дат као целобројна величина са знаком. Један од регистара опште намене R0 до R31 који се користи специфициран је битовима од 4 до 0 другог бајта инструкције. Дужина инструкције је 4 бајта. Код релативног адресирања са померајем трећи и четврти бајт инструкције садрже 16 битни померај који је дат као целобројна величина са знаком. Битови 4 до 0 другог бајта инструкције се не користе. Дужина инструкције је 4 бајта. Код непосредног адресирања 16 битни операнд дат је трећим и четвртим бајтом инструкције. Битови 4 до 0 другог бајта инструкције се не користе. Дужина инструкције је 4 бајта.
Стек расте према вишим меморијским локацијама, а регистар SP указује на последњу заузету меморијску локацију. Процесор нема могућност обраде прекида.
- Пројектовати део операционе јединице процесора која је потребна да се изврши (FETCH + ADDR + EXEC) инструкција JADR (R0)1234h.
- Дати су почетни садржаји регистара и индикатора: PC=1000h, SP=2000h, ACC=0002h, R0=00F2h, R1=000Ch, R2=00A2h, R3=FFE3h, N=0, Z=0, V=0 и C=0. Индикатори статусне речи на које инструкције не утиче треба да остану непромењени. Извршити 7 сукцесивних наредби и за сваку наредбу одредити следеће: у фази читања инструкције - меморијске адресе са којих је прочитана инструкција, садржај регистра IR, инструкцију која је прочитана и нови садржај регистра PC; у фази одређивања адресе операнда и читања операнда - меморијске адресе са којих је прочитана адреса операнда, меморијске адресе са којих је прочитан операнд, вредност операнда и нови садржај регистара опште намене који су у овој фази промењени; у фази извршавања операције - меморијске адресе којима се у овој фази приступа, садржај акумулатора A и индикатора N, Z, V и C након извршавања инструкције и нови садржај регистара и меморијских локација који су у овој фази промењени. Резултате представити у табелама 1, 2 и 3 формулара.
ЛОКАЦИЈА | 000A | 000B | 000C | 000D | 000E | 000F | 0010 | 0011 | 0012 | 0013 |
---|---|---|---|---|---|---|---|---|---|---|
ВРЕДНОСТ | 10 | 01 | 00 | C1 | 21 | 77 | 01 | 10 | 0A | 83 |
ЛОКАЦИЈА | 1000 | 1001 | 1002 | 1003 | 1004 | 1005 | 1006 | 1007 | 1008 | 1009 |
ВРЕДНОСТ | E0 | 00 | 10 | 00 | 00 | 09 | 10 | 10 | E8 | A2 |
ЛОКАЦИЈА | 100A | 100B | 100C | 100D | 100E | 100F | 1010 | 1011 | 1012 | 1013 |
ВРЕДНОСТ | E2 | 60 | 08 | 00 | A0 | 40 | 19 | 10 | 00 | 52 |
ЛОКАЦИЈА | 1014 | 1015 | 1016 | 1017 | 1018 | 1019 | 101A | 101B | 101C | 101D |
ВРЕДНОСТ | 21 | 41 | F0 | 00 | 03 | E3 | 21 | B8 | 10 | 13 |
Решење
Кодови операција
Операциона јединица
- Овај задатак није решен. Помозите SI Wiki тако што ћете га решити.
Меморија
# | Адресе у меморији са којих је учитана инструкција | IR31..24 | IR23..16 | IR15..8 | IR7..0 | Инструкција | PC |
---|---|---|---|---|---|---|---|
1 | 1000h, 1001h, 1002h, 1003h | E0h | 00h | 10h | 00h | LD 0010h | 1004h |
2 | 1004h, 1005h, 1006h | 00h | 09h | 10h | / | JNZ 1009h | 1007h |
3 | 1009h | A2h | / | / | / | DEC | 100Ah |
4 | 100Ah, 100Bh, 100Ch, 100Dh | E2h | 60h | 08h | 00h | OR(PC)+0008h | 100Eh |
5 | 100Eh | A0h | / | / | / | PUSH | 100Fh |
6 | 100Fh,1010h,1011h | 40h | 19h | 10h | / | JMP 1019h | 1012h |
7 | 1019h, 101Ah | E3h | 21h | / | / | ROR (R1) | 101Bh |
# | Адресе у меморији или регистри са којих је учитана адреса операнда | Адресе у меморији или регистри са којих је учитан операнд | Операнд | Нови садржај регистара опште намене |
---|---|---|---|---|
1 | / | 0010h, 0011h | 1001h | / |
2 | / | / | / | / |
3 | / | / | / | / |
4 | / | 1016h, 1017h | 00F0h | / |
5 | / | / | / | / |
6 | / | / | / | / |
7 | / | 000Ch, 000Dh | C100h | R1 = 000Ch |
# | Меморијске адресе којима се приступа у овој фази | Акумулатор | N | Z | V | C | Нови садржај регистара и меморијских локација који су промењени у овој фази |
---|---|---|---|---|---|---|---|
1 | / | 1001h | 0 | 0 | 0 | 0 | / |
2 | / | 1001h | 0 | 0 | 0 | 0 | PC = 1009h |
3 | / | 1000h | 0 | 0 | 0 | 0 | / |
4 | / | 10F0h | 0 | 0 | 0 | 0 | / |
5 | 2001h, 2002h | 10F0h | 0 | 0 | 0 | 0 | SP = 2002h, MEM[2001h] = F0h, MEM[2002h] = 10h |
6 | / | 10F0h | 0 | 0 | 0 | 0 | PC = 1019h |
7 | / | 6080h | 0 | 0 | 0 | 0 | / |