ОРТ2/К2 2018
- Овај рок није решен. Помозите SI Wiki тако што ћете га решити.
Поставка
Посматра се део рачунара који чине меморија и процесор.
Меморија је капацитета 216 бајтова. Ширина меморијске речи је 1 бајт. Процесор је са једноадресним форматом инструкција. Подаци су целобројне величине са знаком дужине 1 бајт представљени у другом комплементу. Адресе у меморији заузимају две суседне меморијске локације, при чему се старији бајт налази на вишој локацији, а млађи бајт на нижој локацији.
У процесору постоји регистар програмског бројача PC дужине 2 бајта, адресни регистар меморије MAR дужине 2 бајта, прихватни регистар податка меморије MDR дужине 1 бајт, прихватни регистар инструкције IR дужине 4 бајта, акумулатор A дужине 1 бајт, прихватни регистар податка B дужине 1 бајт, регистри опште намене R0 до R63 дужине 2 бајта, програмска статусна реч PSW дужине 1 бајт, указивач на врх стека SP дужине 2 бајта. Инструкције су дужине 1, 2, 3 или 4 меморијске речи.
Подаци се при упису у регистре опште намене смештају у нижих 8 битова, док се виших осам попуњава знаком податка. При читању података из регистара опште намене користе се нижих 8 битова. Код уписа или читања адресе из регистра опште намене користе се свих 16 битова.
Бит 7 првог бајта инструкције има вредност 0 за инструкције скока, при чему бит 6 првог бајта инструкције има вредност 0 за инструкције условног скока и 1 за инструкције безусловног скока. Инструкција условног скока је инструкција условног скока уколико резултат није нула (BNZ). Битовима 5 до 0 првог бајта инструкције специфицира се код операције за инструкције условног скока. На основу тога је за инструкцију BNZ усвојен код операције 00000000. Инструкција BNZ се реализује као релативни скок у односу на текућу вредност програмског бројача PC, а померај је 8 битна целобројна величина са знаком дата другим бајтом инструкције. Дужина инструкције је два бајта. Инструкције безусловног скока су инструкција безусловног скока (JMP) и инструкција скока на потпрограм (JSR). Битовима 5 до 0 првог бајта инструкције се специфицира код операције за инструкције безусловног скока. На основу тога су за инструкције JMP и JSR усвојени кодови операција 01000000 и 01000001, респективно. Инструкције JMP и JSR се реализују као апсолутни скокови, а адреса скока је дата другим и трећим бајтом инструкције. Дужина инструкција је три бајта.
Бит 7 првог бајта инструкције има вредност 1 за безадресне и адресне инструкције, при чему бит 6 првог бајта инструкције има вредност 0 за безадресне инструкције и 1 за адресне инструкције. Безадресне инструкције су инструкције стављања садржаја акумулатора на стек (PUSH), инструкција скидања садржаја са стека у акумулатор (POP) и инструкција повратка из потпорграма (RTS). Битовима 5 до 0 првог бајта инструкције специфицира се код операције за безадресне инструкције. На основу тога су за инструкције PUSH, POP и RTS усвојени кодови операција 10000000, 10000001 и 10000010, респективно. Дужина инструкција је један бајт. Адресне инструкције су инструкција преноса у акумулатор (LD), инструкција преноса из акумулатора (ST), аритметичка инструкција одузимања (SUB), инструкција логичког померања удесно за једно место (LSR) и инструкција безусловног скока на срачунату адресу (JADR). Битовима 5 до 0 првог бајта инструкције специфицира се код операције за адресне инструкције. На основу тога су за инструкције LD, ST, SUB, LSR и JADR усвојени кодови операција 11000000, 11000001, 11000010, 11000011 и 11000100 респективно. Дужина инструкција је два, три или четири бајта и зависи од специфицираног начина адресирања.
Начини адресирања су специфицирани битовима 7 и 6 друге речи инструкције и то на следећи начин: 00-непосредно адресирање, 01-регистарско директно адресирање, 10-регистарско индиректно адресирање, 11-меморијско директно адресирање.
Код непосредног адресирања 8 битни операнд је дат трећом речју инструкције. Битови од 5 до 0 друге речи инструкције се не користе. Дужина инструкција је 3 бајта.
Код меморијског директног адресирања адреса меморијске локације је дата трећом и четвртом речју инструкције. Битови од 5 до 0 друге речи инструкције се не користе. Дужина инструкција је 4 бајта.
Код регистарског директног и код регистарског индиректног адресирања, битови од 5 до 0 друге речи инструкције се користе за адресирање једног од регистара опште намене R0 до R63. Дужина инструкције је 2 бајта.
Стек расте према нижим адресама у меморији, а регистар SP показује на прву слободну локацију на стеку.
Процесор не садржи подршку за обраду прекида.
- Написати изразе за генерисање сигнала memdir који је активан уколико се користи меморијско директно адресирање и regind који је активан уколико се користи регистарско индиректно адресирање, као и израз SUB који је активан уколико инструкција извршава аритметичку операцију одузумања. IR регистар се попуњава од виших ка нижим битовима.
- Нацртати дијаграм тока фазе формирања адресе и читања операнда и фазе извршавање[sic] инструкције.
- Дати су почетни садржаји регистара и индикатора: PC=1000h, SP=2000h, ACC = 06h, R0=00A7h, R1=031Bh, R2=00E2h, R3=FFE3h, N=0, Z=0, V=0 и C=0. Индикатори статусне речи на које инструкције не утиче треба да остану непромењени. Извршити 5 сукцесивних наредби и за сваку наредбу одредити следеће: у фази читања инструкције - меморијске адресе са којих је прочитана инструкција, садржај регистра IR, инструкцију која је прочитана и нови садржај регистра PC; у фази одређивања адресе операнда и читања операнда - меморијске адресе са којих је прочитана адреса операнда, меморијске адресе са којих је прочитан операнд, вредност операнда и нови садржај регистара опште намене који су у овој фази промењени; у фази извршавања операције - меморијске адресе којима се у овој фази приступа, садржај акумулатора A и индикатора N, Z, V и C након извршавања инструкције и нови садржај регистара и меморијских локација који су у овој фази промењени. Резултате представити у табелама 1, 2 и 3 формулара.[1]
Решење
Кодови операција
Сигнали
Дијаграми тока
ADDR
EXEC
Меморија
- ↑ Почев од школске 2020/2021. године, оваква ставка долази тек на трећем колоквијуму.