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

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

Фебруарски испитни рок 2023. године одржан је 11. фебруара 2023.

Поставка

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

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

Битови 7, 6 и 5 првог бајта инструкције су 0 за све инструкције скока. Код инструкција условног скока бит 4 првог бајта инструкције је 0, док код инструкција безусловног скока бит 4 првог бајта инструкције је 1. Инструкција условног скока је инструкција условног скока уколико је резултат мање него или једнако (BLEQ), услов скока је (NxorV)orZ. Инструкција BLEQ се реализује као инструкција релативног скока у односу на PC. Други бајт инструкције садржи само осмобитни померај који је дат као целобројна величина са знаком. Дужина инструкције је два бајта. Инструкције безусловног скока су инструкција безусловног скока (ЈМР) и инструкција скока на потпрограм (JSR). Инструкције ЈМР и JSR се реализују као апсолутни скокови, при чему је адреса дата другим и трећим бајтом инструкције. Дужина инструкције је 3 бајта. Битовима 3 до 0 првог бајта инструкције специфицира се код операције и на основу тога су за инструкције BLEQ, ЈМР и JSR усвојени кодови операције 00000000, 00010000 и 00010001, респективно.

Битови 7, 6 и 5 првог бајта инструкције су 1 за све безадресне инструкције. Безадресне инструкције су инструкције преноса садржаја акумулатора на стек (PUSH), инструкција пуњења акумулатора садржајем са стека (POP), инструкција декрементирања акумулатора (DEC) и инструкција повратка из потпрограма (RTS). Битовима 4 до 0 првог бајта инструкције специфицира се код операције за безадресне инструкције. На основу тога су за инструкције PUSH, POP, DEC и RTS усвојени кодови операција 11100000, 11100001, 11100010 и 11100011, респективно. Дужина инстукција је 1 бајт.

Битови 7, 6 и 5 првог бајта инструкције имају вредност 100 за све адресне инструкције. Адресне инстуркције су инструкција преноса у акумулатор (LD), инструкција преноса из акумулатора (ST), инструкција логичко ИЛИ (OR), инструкција ротирања садржаја операнда за једно место улево кроз бит PSWC програмске статусне речи где се резултат смешта само у акумулатор (ROLC), инструкција безусловног скока на срачунату адресу (JADR) и инстукција сабирања (ADD). Битовима 4 до 0 првог бајта инструкције специфицира се код операције за адресне инструкције. На основу тога су за инструкције LD, ST, OR, ROLC, JADR и ADD усвојени кодови операција 10000000, 10000001, 10000010, 10000011, 10000100 и 10000101 респективно. Дужина инструкција је 2 или 4 бајта и зависи од специфицираног начина адресирања.

Начини адресирања су специфицирани битовима 7, 6, 5 и 4 другог бајта инструкције и то на следећи начин: 0000-меморијско директно адресирање (memdir), 0001-меморијско индиректно адресирање (memind), 0010-регистарско директно адресирање (regdir), 0011-регистарско индиректно адресирање (regind), 0100-регистарско индиректно адресирање са постдекрементирањем (postdecr), 0101- регистарско индиректно адресирање са померајем (regindpom) и 0110-непосредно адресирање (immed). Код меморијског директног и индиректног адресирања 16 битна адреса меморијске локације је дата трећим и четвртим бајтом инструкције. Битови 3 до 0 другог бајта инструкције се не користе. Дужина инструкције је 4 бајта. Адресирања регистарско директно, регистарско индиректно и регистарско индиректно са постдекрементирањем користе неки од регистара опште намене R0 до R15 специфициран битовима од 3 до 0 другог бајта инструкције. Дужина инструкција је 2 бајта. Код регистарског индиректног адресирања са померајем трећи и четврти бајт инструкције садрже 16 битни померај који је дат као целобројна величина са знаком. Један од регистара опште намене R0 до R15 који се користи специфициран је битовима од 3 до 0 другог бајта инструкције. Дужина инструкције је 4 бајта. Код непосредног адресирања 16 битни операнд дат је трећим и четвртим бајтом инструкције. Битови 3 до 0 другог бајта инструкције се не користе. Дужина инструкције је 4 бајта.

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

  1. Пројектовати део операционе јединице процесора која је потребна да се изврши (FETCH + ADDR + EXEC) инструкција ADD (R0)-. Потребно је да се нацрта само једна минимална операциона јединица која је довољна да се изврши цела споменута инструкција.
  2. Дати су почетни садржаји регистара и индикатора: PC = 1000h, SP = 3009h, ACC = 3000h, R0 = C000h, R1 = 0010h, R1 = F000h, N = 0, Z = 0, C = 0 и V = 0. Индикатори статусне речи на које инструкција не утиче треба да остану непромењени. Извршити 7 сукцесивних наредби и за сваку наредбу одредити следеће: у фази читања инструкције – меморијске адресе са којих је прочитана инструкција, садржај регистра IR, инструкцију која је прочитана и нов садржај регистра PC; у фази одређивања адресе операнда и читања операнда – меморијске адресе са којих је прочитана адреса операнда, меморијске адресе са којих је прочитан операнд, вредност операнда и нови садржај регистара опште намене који су у овој фази промењени; у фази извршавања операције – меморијске адресе којима се у овој фази приступа, садржај акумулатора А и индикатора N, Z, V и C након извршавања инструкције и нови садржај регистара и меморијских локација који су у овој фази промењени.
Садржај дела меморије из поставке задатка
ЛОКАЦИЈА: 0000h 0001h 0002h 0003h 0004h 0005h 0006h 0007h 0008h 0009h
САДРЖАЈ: 00h 01h 02h 03h 00h 08h 11h 00h FFh FFh
ЛОКАЦИЈА: 1000h 1001h 1002h 1003h 1004h 1005h 1006h 1007h 1008h 1009h
САДРЖАЈ: E0h 83h 20h 85h 10h 00h 04h 00h 01h E2h
ЛОКАЦИЈА: 100Ah 100Bh 100Ch 100Dh 100Eh 100Fh 1010h 1011h 1012h 1013h
САДРЖАЈ: E3h E2h 80h 60h 11h 22h E2h 10h 10h 00h
ЛОКАЦИЈА: 3000h 3001h 3002h 3003h 3004h 3005h 3006h 3007h 3008h 3009h
САДРЖAJ: 82h 60h FFh 00h 81h 00h 20h 00h 10h 0Ch

Решење

Операциона јединица

Овај задатак није решен. Помозите SI Wiki тако што ћете га решити.

Меморија

Р.Б. Адресе са којих је прочитана инструкција IR31..24 [h] IR23..16 [h] IR15..8 [h] IR7..0 [h] Прочитана инструкција Садржај промењених регистара
1 1000h E0h / / / PUSH PC = 1001h
2 1001h, 1002h 83h 20h / / ROLC R0 PC = 1003h
3 1003h, 1004h, 1005h, 1006h 85h 10h 00h 04h ADD (0004h) PC = 1007h
4 1007h, 1008h 00h 01h / / BEQL (PC) 01h PC = 1009h
5 100Ah E3h / / / RTS PC = 100Bh
6 3000h, 3001h, 3002h, 3003h 82h 60h FFh 00h OR #FF00h PC = 3004h
7 3004h, 3005h, 3006h, 3007h 81h 00h 20h 00h ST 2000h PC = 3008h
Р.Б. Адресе са којих је прочитана адреса операнда Адресе са којих је прочитан операнд Операнд Садржај промењених регистара
1 / / / /
2 / / C000h /
3 0004h, 0005h 0008h, 0009h FFFFh /
4 / / / /
5 / / / /
6 / / FF00h /
7 / / / /
Р.Б. Адресе којима се приступа у фази извршавања А [h] N Z V C Садржај промењених регистара и меморијских локација [h]
1 300Ah, 300Bh 3000h 0 0 0 0 MEM[300Ah] = 30h, MEM[300Bh] = 00h, SP = 300Bh
2 / 8000h 1 0 0 1 /
3 / 7FFFh 0 0 1 1 /
4 / 7FFFh 0 0 1 1 PC = 100Ah
5 300Ah, 300Bh 7FFFh 0 0 1 1 PC = 3000h, SP = 3009h
6 / FFFFh 1 0 1 1 /
7 2000h, 2001h FFFFh 1 0 1 1 MEM[2000h] = FFh,MEM[2001h] = FFh