ОРТ2/К3 Јул 2022

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу
Овај рок није решен. Помозите SI Wiki тако што ћете га решити.

Испит у јулском року 2022. године одржан је 4. јула и трајао је 90 минута.

Поставка

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

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

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

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

Бит 5 првог бајта инструкције је 1 за све безадресне инструкције. Безадресне инструкције су инструкције стављања садржаја акумулатора на стек (PUSH), пуњења акумулатора садржајем са стека (POP) и инструкција повратка из потпрограма (RTS). Битовима 4 до 0 првог бајта инструкције специфицира се код операције за безадресне инструкције. На основу тога су за инструкције PUSH, POP и RTS усвојени кодови операџија 01100000, 01100001 и 01100010, респективно. Дужина инструкција је 1 бајт.

Бит 5 првог бајта инструкције је 0 за све адресне инструкције. Адресне инструкције су инструкција преноса у акумулатор (LD), инструкција преноса из акумулатора (ST), аритметичка инструкција сабирања која смешта резултат у акумулатор (ADD), инструкција аритметичког померања операнда за једно место улево која смешта резултат у акумулатор (ASL) и инстуркција безусловног скока на срачунату адресу (JADR). Битовима 4 до 0 првог бајта инструкције специфицира се код операције за адресне инструкције. На основу тога су за инструкције LD, ST, ADD, ASL и JADR усвојени кодови операција 01000000, 01000001, 01000010, 01000011 и 01000100, респективно. Дужина инструкција је 2, 3 или 4 бајта и зависи од специфицираног начина адресирања.

Начини адресирања су специфицирани битовима 7 и 6 другог бајта инструкције и то на следећи начин: 00 – меморијско директно адресирање (memdir), 01 – регистарско директно адресирање (regdir), 10 – регистарско индиректно адресирање (regind) и 11 – непосредно адресирање (immed). Код меморијског директног адресирања 16 битна адреса меморијске локације је дата трећим и четвртим бајтом инструкције. Битови 5 до 0 другог бајта инструкције се не користе. Дужина инструкције је 4 бајта. Код регистарског директног и регистарског индиректног адресирања користе се неки од регистара опште намене R0 до R63 специфицирани битовима од 5 до 0 другог бајта инструкције. Дужина инструкција је 2 бајта. Код непосредног адресирања 16 битни операнд дат је трећим и четвртим бајтом инструкције. Битови 5 до 0 другог бајта инструкције се не користе. Дужина инструкције је 4 бајта.

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

  1. Пројектовати део операционе јединице процесора која је потребна да се изврши (FETCH + ADDR + EXEC) инструкција ADD 1010h.
  2. Дати су почетни садржаји регистара и индикатора PC = 1000h, SP = 3000h, ACC = 0001h, R0 = 0002h, R1 = 000Аh, R2 = 10A2h, R3 = FАE3h, N = 0, Z = 0, V = 0 и C = 0. Индикатори статусне речи на које инструкција не утиче треба да остану непромењени. Извршити 7 сукцесивних наредби и за сваку наредбу одредити следеће: у фази читања инструкције – меморијске адресе са којих је прочитана инструкција, садржај регистра IR, инструкцију која је прочитана и нов садржај регистра PC; у фази одређивања адресе операнда и читања операнда – меморијске адресе са којих је прочитана адреса операнда, меморијске адресе са којих је прочитан операнд, вредност операнда и нови садржај регистара опште намене који су у овој фази промењени; у фази извршавања операције – меморијске адресе којима се у овој фази приступа, садржај акумулатора А и индикатора N, Z, V и C након извршавања инструкције и нови садржај регистара и меморијских локација који су у овој фази промењени.
Садржај дела меморије из поставке задатка
ЛОКАЦИЈА: 000Ah 000Bh 000Ch 000Dh 000Eh 000Fh 0010h 0011h 0012h 0013h
САДРЖАЈ: 10h 01h 00h C1h 21h 77h 11h 00h 0Ah 83h
ЛОКАЦИЈА: 1000h 1001h 1002h 1003h 1004h 1005h 1006h 1007h 1008h 1009h
САДРЖАЈ: 60h 42h 00h 0Ch 00h 41h 41h 20h 0Bh 10h
ЛОКАЦИЈА: 100Ah 100Bh 100Ch 100Dh 100Eh 100Fh 1010h 1011h 1012h 1013h
САДРЖАЈ: E1h 43h 40h 61h 40h C0h 06h F0h 01h 52h
ЛОКАЦИЈА: 1014h 1015h 1016h 1017h 1018h 1019h 101Ah 101Bh 101Ch 101Dh
САДРЖAJ: 21h F0h 00h 00h 0Ch E2h 21h B8h 10h 13h

Решење

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

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

Меморија


Р.Б.

Адресе са којих је прочитана инструкција

IR31..24 [h]

IR23..16 [h]

IR15..8 [h]

IR7..0 [h]

Прочитана инструкција

Садржај промењених регистара

1

1000h

60h

/

/

/

PUSH

PC = 1001h

2

1001h, 1002h, 1003h, 1004h

42h

00h

0Ch

00h

ADD 000Ch

PC = 1005h

3

1005h, 1006h

41h

41h

/

/

ST R1

PC = 1007h

4

1007h, 1008h, 1009h

20h

0Bh

10h

/

JMP 100Bh

PC = 100Ah

5

100Bh, 100Ch

43h

40h

/

/

ASL R0

PC = 100Dh

6

100Dh

61h

/

/

/

POP

PC = 100Eh

7

100Eh, 100Fh, 1010h, 1011h

40h

C0h

06h

F0h

LD #F006h

PC = 1012h

Р.Б.

Адресе са којих је прочитана адреса операнда

Адресе са којих је прочитан операнд

Операнд

Садржај промењених регистара

1

/

/

/

/

2

/

000Ch, 000Dh

C100h

/

3

/

/

/

/

4

/

/

/

/

5

/

/

0002h

/

6

/

/

/

/

7

/

/

F006h

/

Р.Б.

Адресе којима се приступа у фази извршавања

А [hex]

N

Z

V

C

Садржај промењених регистара и меморијских локација [h]

1

3000h, 3001h

0001h

0

0

0

0

MEM[3000h] = 01h, MEM[3001h] = 00h, SP = 3002h

2

/

C101h

1

0

0

0

/

3

/

C101h

1

0

0

0

R1 = C101h

4

/

C101h

1

0

0

0

PC = 100Bh

5

/

0004h

0

0

0

0

/

6

3000h, 3001h

0001h

0

0

0

0

SP = 3000h

7

/

F006h

1

0

0

0

/