ОРТ2/К2 Јануар 2021 — разлика између измена
(Postavka K2 iz januarskog roka) |
м (Aleksa преместио је страницу „ОРТ2/К2 2021” на „ОРТ2/К2 Јануар 2021” без остављања преусмерења: Да би додао К2 из 2021 (школска 21/22)) |
||
| (Није приказано 5 међуизмена 2 корисника) | |||
| Ред 11: | Ред 11: | ||
Бит 7 првог бајта инструкције је 1 за све адресне и безадресне инструкције. | Бит 7 првог бајта инструкције је 1 за све адресне и безадресне инструкције. | ||
Битови 6 и 5 првог бајта инструкције су 01 за безадресне инструкције. Безадресне инструкције су инструкције стављања садржаја на стек (PUSH), пуњења акумулатора садржајем са стека (POP), декрементирање акумулатора (DEC) и повратка из потпорграма (RTS). Битовима 4 до 0 првог бајта инструкције специфицира се код операције за безадресне инструкције. На основу тога су за инструкције PUSH, POP, DEC и RTS усвојени кодови операција 10100000, 10100001, 10100010 и 10100011, респективно. Дужина инструкција је 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 бајта и зависи од специфицираног начина адресирања. | Битови 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 специфициране | Начини адресирања су специфицирани битовима 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 указује на последњу заузету меморијску локацију. Процесор нема могућност обраде прекида. | Стек расте према вишим меморијским локацијама, а регистар SP указује на последњу заузету меморијску локацију. Процесор нема могућност обраде прекида. | ||
| Ред 28: | Ред 28: | ||
== Решење == | == Решење == | ||
=== Кодови операција === | === Кодови операција === | ||
{| class="wikitable" | |||
|- | |||
! colspan="8" | Битови IR31..24 | |||
! rowspan="2" | Класа инструкција | |||
|- | |||
| 31 | |||
| 30 | |||
| 29 | |||
| 28 | |||
| 27 | |||
| 26 | |||
| 25 | |||
| 24 | |||
|- | |||
| 0 | |||
| 0 | |||
| colspan="6" | Код операције | |||
| Условни скок<br /> | |||
|- | |||
| 0 | |||
| 1 | |||
| colspan="6" | Код операције | |||
| Безусловни скок | |||
|- | |||
| 1 | |||
| 0 | |||
| 1 | |||
| colspan="5" | Код операције<br /> | |||
| Безадресне инструкције | |||
|- | |||
| 1 | |||
| 1 | |||
| 1 | |||
| colspan="5" | Код операције | |||
| Адресне инструкције | |||
|} | |||
{| class="wikitable" | |||
|- | |||
! colspan="8" | Битови IR31..24 | |||
! rowspan="2" | Инструкција<br /> | |||
! rowspan="2" | 2. бајт | |||
! rowspan="2" | 3. бајт | |||
! rowspan="2" | 4. бајт | |||
! rowspan="2" | Дужина | |||
|- | |||
| 31 | |||
| 30 | |||
| 29<br /> | |||
| 28<br /> | |||
| 27<br /> | |||
| 26<br /> | |||
| 25<br /> | |||
| 24<br /> | |||
|- | |||
| colspan="13" style="font-weight:bold;" | Условни скок<br /> | |||
|- | |||
| 0 | |||
| 0 | |||
| 0 | |||
| 0 | |||
| 0 | |||
| 0 | |||
| 0 | |||
| 0 | |||
| JNZ<br /> | |||
| ст.<br /> | |||
| мл. | |||
| / | |||
| 3б | |||
|- | |||
| colspan="13" style="font-weight:bold;" | Безусловни скок | |||
|- | |||
| 0 | |||
| 1 | |||
| 0 | |||
| 0 | |||
| 0 | |||
| 0 | |||
| 0 | |||
| 0 | |||
| JMP | |||
| ст.<br /> | |||
| мл. | |||
| / | |||
| 3б | |||
|- | |||
| 0 | |||
| 1 | |||
| 0 | |||
| 0 | |||
| 0 | |||
| 0 | |||
| 0 | |||
| 1 | |||
| JSR | |||
| ст.<br /> | |||
| мл. | |||
| / | |||
| 3б | |||
|- | |||
| colspan="13" style="font-weight:bold;" | Безадресне инструкције<br /> | |||
|- | |||
| 1 | |||
| 0 | |||
| 1 | |||
| 0 | |||
| 0 | |||
| 0 | |||
| 0 | |||
| 0 | |||
| PUSH<br /> | |||
| / | |||
| / | |||
| / | |||
| 1б | |||
|- | |||
| 1 | |||
| 0 | |||
| 1 | |||
| 0 | |||
| 0 | |||
| 0 | |||
| 0 | |||
| 1 | |||
| POP | |||
| / | |||
| / | |||
| / | |||
| 1б | |||
|- | |||
| 1 | |||
| 0 | |||
| 1 | |||
| 0 | |||
| 0 | |||
| 0 | |||
| 1 | |||
| 0 | |||
| DEC | |||
| / | |||
| / | |||
| / | |||
| 1б | |||
|- | |||
| 1 | |||
| 0 | |||
| 1 | |||
| 0 | |||
| 0 | |||
| 0 | |||
| 1 | |||
| 1 | |||
| RTS | |||
| / | |||
| / | |||
| / | |||
| 1б | |||
|- | |||
| colspan="13" style="font-weight:bold;" | Адресне инструкције<br /> | |||
|- | |||
| 1 | |||
| 1 | |||
| 1 | |||
| 0 | |||
| 0 | |||
| 0 | |||
| 0 | |||
| 0 | |||
| LD | |||
| Адр. | |||
| | |||
| | |||
| | |||
|- | |||
| 1 | |||
| 1 | |||
| 1 | |||
| 0 | |||
| 0 | |||
| 0 | |||
| 0 | |||
| 1 | |||
| ST | |||
| Адр. | |||
| | |||
| | |||
| | |||
|- | |||
| 1 | |||
| 1 | |||
| 1 | |||
| 0 | |||
| 0 | |||
| 0 | |||
| 1 | |||
| 0 | |||
| OR | |||
| Адр. | |||
| | |||
| | |||
| | |||
|- | |||
| 1 | |||
| 1 | |||
| 1 | |||
| 0 | |||
| 0 | |||
| 0 | |||
| 1 | |||
| 1 | |||
| ROR | |||
| Адр. | |||
| | |||
| | |||
| | |||
|- | |||
| 1 | |||
| 1 | |||
| 1 | |||
| 0 | |||
| 0 | |||
| 1 | |||
| 0 | |||
| 0 | |||
| JADR | |||
| Адр. | |||
| | |||
| | |||
| | |||
|} | |||
{| class="wikitable" | |||
|- | |||
! colspan="8" | Битови IR23..16 | |||
! rowspan="2" | Адресирање<br /> | |||
! rowspan="2" | 3. бајт | |||
! rowspan="2" | 4. бајт | |||
! rowspan="2" | Дужина | |||
|- | |||
| 23 | |||
| 22 | |||
| 21 | |||
| 20 | |||
| 19<br /> | |||
| 18<br /> | |||
| 17 | |||
| 16 | |||
|- | |||
| 0 | |||
| 0 | |||
| 0 | |||
| / | |||
| / | |||
| /<br /> | |||
| / | |||
| / | |||
| Мем. дир.<br /> | |||
| ст. | |||
| мл. | |||
| 4 б | |||
|- | |||
| 0 | |||
| 0 | |||
| 1<br /> | |||
| R<br /> | |||
| R | |||
| R | |||
| R | |||
| R | |||
| Рег. инд. | |||
| / | |||
| / | |||
| 2 б | |||
|- | |||
| 0 | |||
| 1 | |||
| 0 | |||
| R<br /> | |||
| R | |||
| R | |||
| R | |||
| R | |||
| Рег. инд. са пом. | |||
| ст. | |||
| мл. | |||
| 4 б<br /> | |||
|- | |||
| 0 | |||
| 1 | |||
| 1<br /> | |||
| / | |||
| /<br /> | |||
| /<br /> | |||
| / | |||
| / | |||
| PC релативно | |||
| ст.<br /> | |||
| мл. | |||
| 4 б | |||
|- | |||
| 1 | |||
| 0 | |||
| 0 | |||
| / | |||
| /<br /> | |||
| /<br /> | |||
| / | |||
| / | |||
| Непосредно<br /> | |||
| ст.<br /> | |||
| мл. | |||
| 4 б | |||
|} | |||
=== Сигнали === | === Сигнали === | ||
<math> gradr = (ST+JADR)\cdot immed </math> | |||
<math> memdir = \overline{IR_{23}} \overline{IR_{22}} \overline{IR_{21}}</math> | |||
<math> regind = \overline{IR_{23}} \overline{IR_{22}} IR_{21}</math> | |||
<math> regindpom = \overline{IR_{23}} IR_{22} \overline{IR_{21}}</math> | |||
<math> pcrel = \overline{IR_{23}} IR_{22} IR_{21}</math> | |||
<math> immed = IR_{23} \overline{IR_{22}} \overline{IR_{21}}</math> | |||
<math> ROR = IR_{31}IR_{30}IR_{29}\overline{IR_{28}}\overline{IR_{27}}\overline{IR_{26}} IR_{25}IR_{24} </math> | |||
<math> JADR = IR_{31}IR_{30}IR_{29}\overline{IR_{28}}\overline{IR_{27}} IR_{26} \overline{IR_{25}} \overline{IR_{24}} </math> | |||
=== Дијаграми тока === | === Дијаграми тока === | ||
{{делимично решено}} | |||
==== ADDR ==== | ==== ADDR ==== | ||
==== EXEC ==== | ==== EXEC ==== | ||
Тренутна верзија на датум 12. децембар 2021. у 19:32
К2 2020 је одржан у јануарском испитном року 2021.
Поставка
Посматра се део рачунара који чине меморија и процесор. Меморија је капацитета 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 указује на последњу заузету меморијску локацију. Процесор нема могућност обраде прекида.
- Написати израз за генерисање сигнала gradr који је активан уколико прочитана инструкција има грешку при адресирању.
- Написати изразе за генерисање сигнала свих начина адресирања. IR регистар се попуњава од виших ка нижим битовима.
- Написати изразе за генерисање сигнала операција и то само за ROR и JADR.
- Нацртати дијаграм тока фазе формирања адресе и читања операнда и фазе извршавање[sic] инструкције.
Решење
Кодови операција
| Битови IR31..24 | Класа инструкција | |||||||
|---|---|---|---|---|---|---|---|---|
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | |
| 0 | 0 | Код операције | Условни скок | |||||
| 0 | 1 | Код операције | Безусловни скок | |||||
| 1 | 0 | 1 | Код операције |
Безадресне инструкције | ||||
| 1 | 1 | 1 | Код операције | Адресне инструкције | ||||
| Битови IR31..24 | Инструкција |
2. бајт | 3. бајт | 4. бајт | Дужина | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 31 | 30 | 29 |
28 |
27 |
26 |
25 |
24 | |||||
| Условни скок | ||||||||||||
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | JNZ |
ст. |
мл. | / | 3б |
| Безусловни скок | ||||||||||||
| 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | JMP | ст. |
мл. | / | 3б |
| 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | JSR | ст. |
мл. | / | 3б |
| Безадресне инструкције | ||||||||||||
| 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | PUSH |
/ | / | / | 1б |
| 1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | POP | / | / | / | 1б |
| 1 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | DEC | / | / | / | 1б |
| 1 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | RTS | / | / | / | 1б |
| Адресне инструкције | ||||||||||||
| 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | LD | Адр. | |||
| 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | ST | Адр. | |||
| 1 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | OR | Адр. | |||
| 1 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | ROR | Адр. | |||
| 1 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | JADR | Адр. | |||
| Битови 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 | Рег. инд. са пом. | ст. | мл. | 4 б |
| 0 | 1 | 1 |
/ | / |
/ |
/ | / | PC релативно | ст. |
мл. | 4 б |
| 1 | 0 | 0 | / | / |
/ |
/ | / | Непосредно |
ст. |
мл. | 4 б |
Сигнали
Дијаграми тока
- Овај задатак није решен. Помозите SI Wiki тако што ћете га решити.