ОРТ2/К3 Септембар 2021

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

Испит у септембарском року 2021. године одржан је 22. септембра.

Поставка

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

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

Бит 7 првог бајта инструкције је 0 за све инструкције скока. Код инструкција условног скока бит 6 првог бајта инструкције је 0, док год инструкција безусловног скока бит 6 првог бајта инструкције је 1. Инструкција условног скока је инструкција условног скока уколико резултат није нула (JNZ), а инструкције безусловног скока су инструкција безусловног скока (JMP) и инструкција скока на потпрограм (JSR). Битовима 5 до 0 првог бајта инструкције специфицира се код операције и на основу тога су за инструкције JNZ, JMP и JSR усвојени кодови операције 00000000, 01000000, 01000001, респективно. Инструкције JNZ, JMP и JSR се реализују као апсолутни скокови, при чему је адреса дата другим и трећим бајтом инструцкије. Дужина инструкција је 3 бајта.

Бит 7 првог бајта инструкције је 1 за све адресне и безадресне инструкције.

Битови 6 и 5 првог бајта инструкције су 01 за безадресне инструкције. Безадресне инструкције су инструкције стављања садржаја акумулатора на стек (PUSH), пуњења акумулатора садржајем са стека (POP), декрементирања акумулатора (DEC) и повратка из потпрограма (RTS). Битовима 4 до 0 првог бајта инструкције специфицира се код операције за безадресне инструкције.На основу тога су за инструкције PUSH, POP, DEC и RTS усвојени кодови операција 10100000, 10100001, 10100010 и 10100011, респективно. Дужина инструкција је 1 бајт.

Битови 6 и 5 првог бајта инструкције су 11 за адресне инструкције. Адресне инструкције су инструкција преноса у акумулатор (LD), инструкција преноса из акумулатора (ST), логичка инструкција "или" (OR), инструкција ротирања операнда једно место удесно која смешта резултат у акумулатор (ROR) и инструкција безусловног скока на срачунату адресу (JADR). Битовима 4 до 0 првог бајта инструкције специфицира се код операције за адресне инструкције. На основу тога су за инструкције LD, ST, OR, ROR и JADR усвојени кодови операција 11100000, 11100001, 11100010, 11100011 и 11100100 респективно. Дужина инструкција је 2 или 4 бајта и зависи од специфицираног начина адресирања.

Начини адресирања су специфицирани битовима 7, 6 и 5 другог бајта инструкције и то на следећи начин: 000-меморијско директно адресирање (memdir), 001-регистарско индиректно адресирање (regind), 010-регистарско индиректно са померајем (regindpom), 011-релативно адресирање са померајем (pcrel) и 100-непосредно адресирање (immed). Код меморијског директног адресирања 16 битна адреса меморијске локације је дата трећим и четвртим бајтом инструкције.Битови 4 до 0 другог бајта инструкције се не користе. Дужина инструкција је 4 бајта. Регистарско индиректно адресирање користи неке од регистара опште намене R0 до R31 специфициране битовима од 4 до 0 другог бајта. Дужина инструкција је 2 бајта. Код регистарског индиректног адресирања са померајем трећи и четврти бајт инструкције садрже 16 битни померај који је дат као целобројна величина са знаком. Један од регистара опште намене R0 до R31 који се користи специфициран је битовима од 4 до 0 другог бајта инструкције. Дужина инструкције је 4 бајта. Код релативног адресирања са померајем трећи и четврти бајт инструкције садрже 16 битни померај који је дат као целобројна величина са знаком. Битови 4 до 0 другог бајта инструкције се не користе. Дужина инструкције је 4 бајта. Код непосредног адресирања 16 битни операнд дат је трећим и четвртим бајтом инструкције. Битови 4 до 0 другог бајта инструкције се не користе. Дужина инструкције је 4 бајта.

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

  1. Пројектовати део операционе јединице процесора која је потребна да се изврши (FETCH + ADDR + EXEC) инструкција JADR (R0)1234h.
  2. Дати су почетни садржаји регистара и индикатора: PC=1000h, SP=2000h, ACC=0002h, R0=00F2h, R1=000Ch, R2=00A2h, R3=FFE3h, N=0, Z=0, V=0 и C=0. Индикатори статусне речи на које инструкције не утиче треба да остану непромењени. Извршити 7 сукцесивних наредби и за сваку наредбу одредити следеће: у фази читања инструкције - меморијске адресе са којих је прочитана инструкција, садржај регистра IR, инструкцију која је прочитана и нови садржај регистра PC; у фази одређивања адресе операнда и читања операнда - меморијске адресе са којих је прочитана адреса операнда, меморијске адресе са којих је прочитан операнд, вредност операнда и нови садржај регистара опште намене који су у овој фази промењени; у фази извршавања операције - меморијске адресе којима се у овој фази приступа, садржај акумулатора A и индикатора N, Z, V и C након извршавања инструкције и нови садржај регистара и меморијских локација који су у овој фази промењени. Резултате представити у табелама 1, 2 и 3 формулара.
Садржај дела меморије из поставке задатка
ЛОКАЦИЈА 000A 000B 000C 000D 000E 000F 0010 0011 0012 0013
ВРЕДНОСТ 10 01 00 C1 21 77 01 10 0A 83
ЛОКАЦИЈА 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009
ВРЕДНОСТ E0 00 10 00 00 09 10 10 E8 A2
ЛОКАЦИЈА 100A 100B 100C 100D 100E 100F 1010 1011 1012 1013
ВРЕДНОСТ E2 60 08 00 A0 40 19 10 00 52
ЛОКАЦИЈА 1014 1015 1016 1017 1018 1019 101A 101B 101C 101D
ВРЕДНОСТ 21 41 F0 00 03 E3 21 B8 10 13

Решење

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

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

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

Меморија

# Адресе у меморији са којих је учитана инструкција IR31..24 IR23..16 IR15..8 IR7..0 Инструкција PC
1 1000h, 1001h, 1002h, 1003h E0h 00h 10h 00h LD 0010h 1004h
2 1004h, 1005h, 1006h 00h 09h 10h / JNZ 1009h 1007h
3 1009h A2h / / / DEC 100Ah
4 100Ah, 100Bh, 100Ch, 100Dh E2h 60h 08h 00h OR(PC)+0008h 100Eh
5 100Eh A0h / / / PUSH 100Fh
6 100Fh,1010h,1011h 40h 19h 10h / JMP 1019h 1012h
7 1019h, 101Ah E3h 21h / / ROR (R1) 101Bh
# Адресе у меморији или регистри са којих је учитана адреса операнда Адресе у меморији или регистри са којих је учитан операнд Операнд Нови садржај регистара опште намене
1 / 0010h, 0011h 1001h /
2 / / / /
3 / / / /
4 / 1016h, 1017h 00F0h /
5 / / / /
6 / / / /
7 / 000Ch, 000Dh C100h R1 = 000Ch
# Меморијске адресе којима се приступа у овој фази Акумулатор N Z V C Нови садржај регистара и меморијских локација који су промењени у овој фази
1 / 1001h 0 0 0 0 /
2 / 1001h 0 0 0 0 PC = 1009h
3 / 1000h 0 0 0 0 /
4 / 10F0h 0 0 0 0 /
5 2001h, 2002h 10F0h 0 0 0 0 SP = 2002h, MEM[2001h] = F0h, MEM[2002h] = 10h
6 / 10F0h 0 0 0 0 PC = 1019h
7 / 6080h 0 0 0 0 /