ОРТ2/К3 Фебруар 2024

Извор: SI Wiki
< ОРТ2(преусмерено са ОРТ2/К2 Фебруар 2024)
Пређи на навигацију Пређи на претрагу
Овај рок није решен. Помозите SI Wiki тако што ћете га решити.

Фебруарски рок 2024 одржан је 10.02.2024.
Решење рока постоји на сајту предмета означен као "3. Трећи колоквијум - 2024".


Поставка

[30 поена] Посматра се део рачунара који чине меморија и процесор. Меморија јe капацитета 2^16 бајтова. Ширина меморијске речи је 1 бајт. Процесор је са једноадресним форматом инструкција. Подаци и адресе су дужине 2 бајта и заузимају две суседне меморијске локације, при чему се млађи бајт налази на нижој, а старији бајт на вишој адреси.

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

Инструкције скока су инструкција условног скока уколико је резултат негативан (ВN) и инструкција условног скока уколико није дошло до прекорачења (BNV). Битови IR31.28 имају вредност 0000 за инструкције скока. Инструкције условног скока реализуjу се као релативни скок у односу на тренутну вредност програмског бројача РС. Битови IR31.24 представљају код операције и редом су 00000000 и 00000001 за инструкције ВN и ВNV. Битови ІR23.16 представљају померај који је 8-битна целобројна величина са знаком. Инструкција је дужине 2 бајта.

Безадресне инструкције су инструкција стављања садржаја акумулатора на стек (PUSH), пуњења акумулатора садржајем са стека (РОР) и аритметичког померања акумулатора удесно заједно мecто (ASR). Битови IR31.28 имају вредност 0001 за безадресне инструкције. Битови IR27.24 означавају редни број инструкције. Битови ІR31.24 представљају код операције и редом су 00010000, 00010001 и 00010010 за инструкције PUSH, POP u ASR. Инструкције су дужине 1 бајт.

Адресне инструкције су инструкција преноса у акумулатор (LD), инструкција преноса из акумулатора (ST), аритметичка инструкција одузимања (SUB), логичка инструкција логичког производа (AND) и инструкција безусловног скока (JMP). У случају да се наиђе на комбинацију операција са неким адресирањем са којим та операција не може да се изврши, такве инструкције треба да буду без дејства. Битови IR31.28 имају вредност 0010 за адресне инструкције. Битови ІR27.24 представљају код операције и редом су 0000, 0001, 0010, 0011 и 0100 за инструкције LD, ST, SUB, AND и JMР. Дужина инструкције зависи од начина адресирања.


Начини адресирања су регистарско директно адресирање (regdir), меморијско индиректно адресирање (memind), регистарско индиректно са померајем адресирање (regindpom) и непосредно адресирање (immed). Битови ІR23.20 представљају начин адресирања и редом су 0000, 0001, 0010 и 0011 за адресирања regdir, memind, regindpom и immed. Код регистарских адресирања битови IR19.16 се користе за адресирање једног од регистара опште намене R0 до R15, док се код осталих начина адресирања ови битови не користе. Код адресирања са померајем битови IR15.8 представљају померај који је 8-битна ислобројна величина са знаком. Код меморијских адресирања битови IR15.0 представљају адресу меморијске локације. Код непосредног адресирања битови IR15.0 опредстављају 16 битни податак. Инструкције су дужине 1,2, 3 или 4 бајта .

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


a) Пројектовати део операционе јединице процесора (FЕТСH + ADDR + ЕХEC) која јe потребна да изврше следеће инструкције: ST (1000), ST (2)13h, PUSH и AND R2. Потребно јe нацртати само једну операциону јединицу која може, да, изврши све споменуте инструкције.


b) Дати су почетни садржаји регистара и индикатора: PC = 1000h, SP = 0002h, A = FFFFh, R0 = 0100h, R1 = 1018h, R2= 101Ah, N = 0, Z = 0, V = 0, C = 0.

Садржај дела меморије из поставке задатка
ЛОКАЦИЈА 0000 0001 0002 0003 0004 0005 0006 0007 0008 0009
ВРЕДНОСТ FE FF 00 C1 21 77 11 00 0A 83
ЛОКАЦИЈА 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009
ВРЕДНОСТ 20 30 00 85 22 33 02 01 02 23
ЛОКАЦИЈА 100A 100B 100C 100D 100E 100F 1010 1011 1012 1013
ВРЕДНОСТ 00 00 03 11 12 10 21 10 1C 10
ЛОКАЦИЈА 1014 1015 1016 1017 1018 1019 101A 101B 101C 101D
ВРЕДНОСТ 24 10 18 10 00 10 00 02 00 06