ОРТ2/К2Н 2022

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу
Овај рок није решен. Помозите SI Wiki тако што ћете га решити.

Поставка

Посматра се део рачунара који чине меморија и процесор. Меморија је капацитета 216. Ширина меморијске речи је 1 бајт. Процесор је са једноадресним форматом инструкција. Адресе и подаци су дужине 16 бита и заузимају по две суседне меморијске локације, при чему се старији бајт налази на нижој, а млађи бајт на вишој адреси.

У процесору постоји регистар програмског бројача PC дужине 2 бајта, адресни регистар меморије MAR дужине 2 бајта, прихватни регистар податка меморије MDR дужине 1 бајт, прихватни регистар инструкције IR дужине 4 бајта, акумулатор A дужине 2 бајта, прихватни регистар податка В дужине 2 бајта, регистри опште намене R0 до R31 дужине 2 бајта, индексни регистар XR дужине 2 бајта, програмска статусна реч PSW дужине 1 бајт. Инструкције су дужине 1, 2, 3 или 4 бајта.

Битови 7, 6 и 5 првог бајта инструкције су 000 за све инструкције скока. Код инструкција условног скока бит 4 првог бајта инструкције је 0, док код инструкција безусловног скока бит 4 првог бајта инструкције је 1. Инструкција условног скока је инструкција условног скока уколико постоји пренос/позајмица (JC), а инструкције безусловног скока су инструкција безусловног скока (JMP) и инструкција скока на потпрограм (JSR). Битовима 3 до 0 првог бајта инструкције специфицира се код операције и на основу тога су за инструкције JC, JMP и JSR усвојени кодови операције 00000000, 00010000 и 00010001, респективно. Инструкције JC, JMP и JSR се реализују као апсолутни скокови, при чему је адреса дата другим и трећим бајтом инструкције. Дужина инструкција је 3 бајта.

Битови 7, 6 и 5 првог бајта инструкције су 111 за све адресне и безадресне инструкције.

Бит 4 првог бајта инструкције је 0 за безадресне инструкције. Безадресне инструкције су инструкције стављања садржаја акумулатора на стек (PUSH), пуњења акумулатора садржајем са стека (POP) и повратка из потпрограма (RTS). Битовима 3 до 0 првог бајта инструкције специфицира се код операције за безадресне инструкције. На основу тога су за инструкције PUSH, POP и RTS усвојени кодови операција 11100000, 11100001 и 11100010, респективно. Дужина инструкција је 1 бајт.

Битови 4 првог бајта инструкције је 1 за адресне инструкције. Адресне инструкције су инструкција преноса у акумулатор (LD), инструкција преноса из акумулатора (ST), аритметичка инструкција одузимања која смешта резултат у акумулатор (SUB), инструкција ротирања операнда једно место улево кроз бит C која смешта резултат у акумулатор (ROLC) и инструкција безусловног скока на срачунату адресу (JADR). Битовима 3 до 0 првог бајта инструкције специфицира се код операције за адресне инструкције. На основу тога су за инструкције LD, ST, SUB, ROLC и JADR усвојени кодови операција 11110000, 11110001, 11110010, 11110011 и 11110100 респективно. Дужина инструкција је 2, 3 или 4 бајта и зависи од специфицираног начина адресирања.

Начини адресирања су специфицирани битовима 7, 6 и 5 другог бајта инструкције и то на следећи начин: 000-меморијско директно адресирање (memdir), 001-регистарско директно адресирање (regdir), 010-регистарско индиректно адресирање(regind), 011-индексно адресирање са померајем (xrpom) и 100-непосредно адресирање (immed). Код меморијског директног адресирања 16 битна адреса меморијске локације је дата трећим и четвртим бајтом инструкције. Битови 4 до 0 другог бајта инструкције се не користе. Дужина инструкција је 4 бајта. Код регистарско директног и регистарског индиректног адресирања, користи се неки од регистара опште намене R0 до R31 специфицираних битовима од 4 до 0 другог бајта. Дужина инструкција је 2 бајта. Код индексног адресирања са померајем трећи бајт инструкције садржи 8 битни померај који је дат као целобројна величина са знаком. Битови 4 до 0 другог бајта инструкције се не користе. Дужина инструкција је 3 бајта. Код непосредног адресирања 16 битни операнд дат је трећим и четвртим бајтом инструкције. Битови 4 до 0 другог бајта инструкције се не користе. Дужина инструкција је 4 бајта.

Стек расте према нижим меморијским локацијама, а регистар SP указује на последњу заузету меморијску локацију. Процесор нема могућност обраде прекида.

  1. Написати израз за генерисање сигнала gradr који је активан уколико прочитана инструкција има грешку при адресирању. У фази читања инструкције уколико је након прочитане инструкције активан овај сигнал, прескаче се извршавање прочитане инструкције и наставља се са читањем наредне инструкције.
  2. Који је резултат извршавања инструкције SUB 1000h, ако се на адреси 1000h налази податак 82h, а на адреси 1001h податак 23h? Почетна вредност акумулатора је C004h. Написати вредност акумулатора и бита N, Z, V и C након извршавања инструкције.
  3. Написати изразе за генерисање сигнала свих начина адресирања. IR регистар се попуњава од виших ка нижим битовима.
  4. Написати изразе за генерисање сигнала операција само за POP и ROLC.
  5. Нацртати дијаграм тока фазе формирања адресе и читања операнада и фазе извршавање инструкције. Потребно је навести у којем тренутку треба да се ажурира који бит PSW регистра наводећи: UPDATE PSWN - уколико треба да се ажурира стање бита PSWN, UPDATE PSWZ - уколико треба да се ажурира стање бита PSWZ, UPDATE PSWC - уколико треба да се ажурира стање бита PSWC, UPDATE PSWV - уколико треба да се ажурира стање бита PSWV. Није потребно дефинисати како се вредност којег бита рачуна.

Решење