ОРТ2/К2 2019

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

Поставка

Посматра се део рачунара који чине меморија и процесор.

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

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

Подаци се при упису у регистре опште намене смештају у нижих 8 битова, док се виших осам попуњава знаком податка. При читању података из регистара опште намене користе се нижих 8 битова. Код уписа или читања адресе из регистра опште намене користе се свих 16 битова.

Битови 7, 6, 5 и 4 првог бајта инструкције има вредност 0 за инструкције скока, при чему бит 3 првог бајта инструкције има вредност 0 за инструкције условног скока и 1 за инструкције безусловног скока. Инструкција условног скока је инструкција условног скока уколико није дошло до преноса (BNC). Битовима 2 до 0 првог бајта инструкције специфицира се код операције за инструкције условног скока. На основу тога је за инструкцију BNC усвојен код операције 00000000. Инструкција BNC се реализује као релативни скок у односу на текућу вредност програмског бројача PC, а померај је 8 битна целобројна величина са знаком дата другим бајтом инструкције. Дужина инструкције је два бајта. Инструкције безусловног скока су инструкција безусловног скока (JMP) и инструкција скока на потпрограм (JSR). Битовима 2 до 0 првог бајта инструкције се специфицира код операције за инструкције безусловног скока. На основу тога су за инструкције JMP и JSR усвојени кодови операција 00001000 и 00001001, респективно. Инструкције JMP и JSR се реализују као апсолутни скокови, а адреса скока је дата другим и трећим бајтом инструкције. Дужина инструкција је три бајта.

Битови 7, 6, 5 и 4 првог бајта инструкције има вредност 1 за безадресне инструкције. Безадресне инструкције су инструкције стављања садржаја акумулатора на стек (PUSH), инструкција скидања садржаја са стека у акумулатор (POP), инструкција повратка из потпорграма (RTS) и инструкција аритметичког померања садржаја акумулатора удесно за једно место (ASRA). Битовима 3 до 0 првог бајта инструкције специфицира се код операције за безадресне инструкције. На основу тога су за инструкције PUSH, POP, RTS и ASRA усвојени кодови операција 11110000, 11110001, 11110010 и 11110011, респективно. Дужина инструкција је један бајт.

Битови 7, 6, 5 и 4 првог бајта инструкције има[sic] вредност у опсегу 0001 до 1110 за адресне инструкције. Адресне инструкције су инструкција преноса у акумулатор (LD), инструкција преноса из акумулатора (ST), инструкција увећавања операнд[sic] за један, са тим да се резултат смешта и у операнд и у акумулатор (INC), аритметичка инструкција одузимања (SUB) и логичка инструкција ексклузивно ИЛИ (XOR). На основу тога су за инструкције LD, ST, INC, SUB и XOR усвојени кодови операција 0001, 0010, 0011, 0100 и 0101 респективно. Дужина инструкција је један, два или три бајта и зависи од специфицираног начина адресирања.

Начини адресирања су специфицирани битовима 3 и 2 првог бајта инструкције и то на следећи начин: 00-непосредно адресирање, 01-регистарско директно адресирање, 10-регистарско индиректно адресирање са постинкрементирањем, 11-меморијско индиректно адресирање.

Код непосредног адресирања 8 битни операнд је дат другим бајтом инструкције. Битови од 1 до 0 првог бајта инструкције се не користе. Дужина инструкција је 2 бајта.

Код меморијског индиректног адресирања адреса меморијске локације је дата другим и трећим бајтом инструкције. Битови 1 до 0 првог бајта инструкције се не користе. Дужина инструкција је 3 бајта.

Код регистарског директног и код регистарског индиректног адресирања са постинкрементирањем, битови 1 и 0 другог[1] бајта инструкције се користе за адресирање једног од регистара опште намене R0 до R3. Дужина инструкције је 1 бајта[sic].

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

Процесор не садржи подршку за обраду прекида.

  1. Написати изразе за генерисање сигнала свих начина адресирања. IR регистар се попуњава од виших ка нижим битовима.
  2. Написати изразе за генерисање сигнала операција и то само за PUSH и INC.
  3. Нацртати дијаграм тока фазе формирања адресе и читања операнда и фазе извршавање[sic] инструкције.
  4. Дати су почетни садржаји регистара и индикатора: PC=1000h, SP=2002h, ACC = 00h, R1=000Bh, N=0, Z=1, V=0 и C=0. Индикатори статусне речи на које инструкције не утиче треба да остану непромењени. Извршити 5 сукцесивних наредби и за сваку наредбу одредити следеће: у фази читања инструкције - меморијске адресе са којих је прочитана инструкција, садржај регистра IR, инструкцију која је прочитана и нови садржај регистра PC; у фази одређивања адресе операнда и читања операнда - меморијске адресе са којих је прочитана адреса операнда, меморијске адресе са којих је прочитан операнд, вредност операнда и нови садржај регистара опште намене који су у овој фази промењени; у фази извршавања операције - меморијске адресе којима се у овој фази приступа, садржај акумулатора A и индикатора N, Z, V и C након извршавања инструкције и нови садржај регистара и меморијских локација који су у овој фази промењени. Резултате представити у табелама 1, 2 и 3 формулара.[2]

Решење

Кодови операција

Сигнали

Дијаграми тока

ADDR

EXEC

Меморија

Напомене

  1. Има много више смисла да ови битови буду у првом бајту инструкције, али је писало овако. Не зна се да ли је овај део грешка, али пошто је на претходном другом колоквијуму на овом месту писало "другог", претпоставља се да је само грешка у копирању.
  2. Почев од школске 2020/2021. године, оваква ставка долази тек на трећем колоквијуму.