ОРТ2/К3 Јул 2022

Извор: 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
САДРЖАЈ: 21h F0h 00h 00h 0Ch E2h 21h B8h 10h 13h

Решење

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

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

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

Меморија

Р.Б. Адресе са којих је прочитана инструкција 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
Р.Б. Адресе којима се приступа у фази извршавања A [h] 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