ОРТ2/К2 2021

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

К2 2021 је одржан у редовном термину. Рађен је у 2 групе. У наставку је дата поставка коју је радила прва група (РТИ смер).

Поставка

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

У процесору постоји регистар програмског бројача РС дужине 2 бајта, адресни регистар меморије MAR дужине 2 бајта, прихватни регистар податка меморије MDR дужине 1 бајт, прихватни регистар инструкције IR дужине З бајта, акумулатор А дужине 2 бајта, прихватни регистар податка В дужине 2 бајта, базни регистар BR дужине 2 бајта, индексни регистар XR дужине 2 бајта, програмска статусна реч PSW дужине 1 бајт. Инструкције су дужине 1, 2sciили 3 бајта.

Бит 7 првог бајта инструкције је 1 за све инструкције скока. Код инструкција условног скока бит 6 првог бајта инструкције је 0, док код инструкција безусловног скока бит 6 првог бајта инструкције је 1. Инструкција условног скока је инструкција условног скока уколико је било преноса (JC) и инструкција условног скока уколико је резултат нула (BZ), а инструкције безусловног скока су инструкција безусловног скока (JMP) и инструкција скока на потпрограм (JSR). Битовима 5 до 0 првог бајта инструкције специфицира се код операције и на основу тога су за инструкције ЈC, Be: JMP и JSR усвојени кодови операције 10000000, 10000001sic, 11000001 и 11000010, респективно. Инструкције ЈC, JMP и JSR се реализују као апсолутни скокови, при чему је адреса дата другим и трећим бајтом инструкције. Дужина инструкција је 3 бајта. Инструкција ВZ се реализује као релативни скок у односу на текућу вредност програмског бројача РС. Другим бајтом инструкције је дат померај као означена осмобитна бинарна вредност. Дужина инструкција је 2 бајта.

Бит 7 првог бајта инструкције је 0 за све адресне и безадресне инструкције. Бит 6 првог бајта инструкције је 0 за безадресне инструкције. Безадресне инструкције су инструкције стављања садржаја акумулатора на стек (PUSH), пуњења акумулатора садржајем са стека (POP) и повратка из потпрограма (RTS). Битовима 5 до О првог бајта инструкције специфицира се код операције за безадресне инструкције. На основу тога су за инструкције PUSH, POP и RTS усвојени кодови операција 00000000, 00000001 и 00000011, респективно. Дужина инструкција је 1 бајт.

Бит 6 првог бајта инструкције је 1 за адресне инструкције. Адресне инструкције су инструкција преноса у акумулатор (LD), инструкција преноса из акумулатора (ST), аритметичка инструкција сабирања (ADD), инструкција аритметичког померања операнда jедно место улево која смешта резултат у акумулатор (ASL) и инструкција безусловног скока на срачунату адресу (JADR). Битовима 5 до 3 првог бајта инструкције специфицира се код операције за адресне инструкције. На основу тога су за инструкције LD, ST, ADD, ASL и JADR усвојени кодови операција 01000, 01001, 01010, 01011 и 01100 респективно. Начини адресирања су специфицирани битовима 2, 1 и 0 првог бајта инструкције и то на следећи начин: 000-меморијско директно адресирање (memdir), 001-меморијско индиректно адресирање (mеmind), 010-базно адресирање са померајем (brpom), 011-релативно адресирање са померајем (pcrel) и 100-непосредно адресирање (immed). Код меморијског директног и индиректног адресирања 16 битна адреса меморијске локације је дата другим и трећим бајтом инструкције. Дужина инструкција је 3 бајта Код базног и релативног адресирања са померајем, други и трећи бајт инструкције садрже 16 битни померај који је дат као целобројна величина са знаком. Дужина инструкција је 3 бајта. Код непосредног адресирања 16 битни операнд дат је другим и трећим бајтом инструкције. Дужина инструкција је 3 бајта.

У процесору се налази сигнал gradr који је активан уколико прочитана инструкција има грешку при адресирању. Овај сигнал се проверава у фази читања инструкције и уколико је активан, прелази се на фазу читања наредне инструкције, а уколико није активан наставља се са извршавањем наредне фазе инструкције.

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

  1. Написати израз за генерисање сигнала grаdr који је активан уколико прочитана инструкција има грешку при адресирању.
  2. Колики померај у инструкцији која се налази на адреси 0103h (табела 1) је потребан да би се реализовао скок на почетак инструкције ADD 1234h?[1]
  3. Написати изразе за генерисање сигнала свих начина адресирања. IR регистар се попуњава од виших ка нижим битовима.
  4. Написати изразе за генерисање сигнала операција и то само за PUSH и ADD.
  5. Нацртати дијаграм тока фазе формирања адресе и читања операнда и фазе извршавања инструкције.
Табела 1: Секвенца инструкција из тачке под б.
Адреса инструкције Инструкција
0100h ADD 1500h
0103h BZ ______
0106h PUSH
0107h JSR 0200h
010Ah POP
010Bh LD 0004h
010Eh PUSH
010Fh ADD 1234h

Решење

Напомене

  1. Приликом обиласка, наставници су нагласили да сматрамо да у овој ставци BZ има 3 бајта, уместо 2 како пише у поставци.