ОРТ2/К2 Јануар 2021

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу

К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 указује на последњу заузету меморијску локацију. Процесор нема могућност обраде прекида.

  1. Написати израз за генерисање сигнала gradr који је активан уколико прочитана инструкција има грешку при адресирању.
  2. Написати изразе за генерисање сигнала свих начина адресирања. IR регистар се попуњава од виших ка нижим битовима.
  3. Написати изразе за генерисање сигнала операција и то само за ROR и JADR.
  4. Нацртати дијаграм тока фазе формирања адресе и читања операнда и фазе извршавање[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
ст.
мл. /
Безусловни скок
0 1 0 0 0 0 0 0 JMP ст.
мл. /
0 1 0 0 0 0 0 1 JSR ст.
мл. /
Безадресне инструкције
1 0 1 0 0 0 0 0 PUSH
/ / /
1 0 1 0 0 0 0 1 POP / / /
1 0 1 0 0 0 1 0 DEC / / /
1 0 1 0 0 0 1 1 RTS / / /
Адресне инструкције
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 тако што ћете га решити.

ADDR

EXEC