ОРТ2/К3 Фебруар 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 |