ОРТ2/К3 Јул 2022 — разлика између измена
(Нова страница: {{tocright}} {{нерешено}} '''Јул 2022. године''' одржан је 4. јула 2022. и трајао је 90 минута. == Поставка == По…) |
м (→Меморија) ознака: ручно враћање |
||
| (Није приказано 6 међуизмена 3 корисника) | |||
| Ред 1: | Ред 1: | ||
{{tocright}} | {{tocright}} | ||
'''Испит у јулском року 2022. године''' одржан је 4. јула и трајао је 90 минута. | |||
''' | |||
== Поставка == | == Поставка == | ||
Посматра се део рачунара који чине меморија и процесор. Меморија је капацитета | Посматра се део рачунара који чине меморија и процесор. Меморија је капацитета 2<sup>16</sup> бајтова. Ширина меморијске речи је 1 бајт. Процесор је са једноадресним форматом инструкција. Адресе и подаци су дужине 16 бита и заузимају по две суседне меморијске локације, при чему се старији бајт налази на вишој, а млађи бајт на нижој адреси. | ||
бајтова. Ширина меморијске речи је 1 бајт. Процесор је са једноадресним форматом | |||
инструкција. Адресе и подаци су дужине 16 бита и заузимају по две | |||
суседне меморијске локације, при чему се старији бајт налази на вишој, а млађи бајт на | |||
нижој адреси. | |||
У процесору постоји регистар програмског бројача PC дужине 2 бајта, адресни | У процесору постоји регистар програмског бројача PC дужине 2 бајта, адресни регистар меморије MAR дужине 2 бајта, прихватни регистар података меморије MDR дужине 1 бајт, прихватни регистар инструкција IR дужине 4 бајта, акумулатор A дужине 2 бајта, прихватни регистар података B дужине 2 бајта, регистри опште намене R0 до R63 дужине 2 бајта и програмска статусна реч PSW дужине 1 бајт. Инструкције су дужине 1, 2, 3 или 4 бајта. | ||
регистар меморије MAR дужине 2 бајта, прихватни регистар података меморије MDR | |||
дужине 1 бајт, прихватни регистар инструкција IR дужине 4 бајта, акумулатор A | |||
дужине 2 бајта, прихватни регистар података B дужине 2 бајта, регистри опште намене | |||
R0 до R63 дужине 2 бајта и програмска статусна реч PSW дужине 1 бајт. Инструкције су | |||
дужине 1, 2, 3 или 4 бајта. | |||
Битови 7 и 6 првог бајта инструкције су 00 за све инструкције скока. Код инструкција | Битови 7 и 6 првог бајта инструкције су 00 за све инструкције скока. Код инструкција условног скока бит 5 првог бајта инструкције је 0, док код инструкција безусловног скока бит 5 првог бајта инструкције је 1. Инструкција условног скока је инструкција условног скока уколико је резултат нула (JZ), а инструкције безусловног скока су инструкција безусловног скока (JMP) и инструкција скока на потпрограм (JSR). Битовима 4 до 0 првог бајта инструкције специфицира се код операције и на основу тога су за инструкције JZ, JMP и JSR усвојени кодови операције 00000000, 00100000 и 00100001, респективно. Инструкције JZ, JMP и JSR се реализују као апсолутни скокови, при чему је адереса дата другим и трећим бајтом инструкције. Дужина инструкција је 3 бајта. | ||
условног скока бит 5 првог бајта инструкције је 0, док код инструкција безусловног | |||
скока бит 5 првог бајта инструкције је 1. Инструкција условног скока је инструкција | |||
условног скока уколико је резултат нула (JZ), а инструкције безусловног скока су | |||
инструкција безусловног скока (JMP) и инструкција скока на потпрограм (JSR). | |||
Битовима 4 до 0 првог бајта инструкције специфицира се код операције и на основу | |||
тога су за инструкције JZ, JMP и JSR усвојени кодови операције 00000000, 00100000 и | |||
00100001, респективно. Инструкције JZ, JMP и JSR се реализују као апсолутни | |||
скокови, при чему је адереса дата другим и трећим бајтом инструкције. Дужина | |||
инструкција је 3 бајта. | |||
Битови 7 и 6 првог бајта инструкције су 01 за све адресне и безадресне инструкције. | Битови 7 и 6 првог бајта инструкције су 01 за све адресне и безадресне инструкције. | ||
| Ред 36: | Ред 17: | ||
Начини адресирања су специфицирани битовима 7 и 6 другог бајта инструкције и то на следећи начин: 00 – меморијско директно адресирање (memdir), 01 – регистарско директно адресирање (regdir), 10 – регистарско индиректно адресирање (regind) и 11 – непосредно адресирање (immed). Код меморијског директног адресирања 16 битна адреса меморијске локације је дата трећим и четвртим бајтом инструкције. Битови 5 до 0 другог бајта инструкције се не користе. Дужина инструкције је 4 бајта. Код регистарског директног и регистарског индиректног адресирања користе се неки од регистара опште намене R0 до R63 специфицирани битовима од 5 до 0 другог бајта инструкције. Дужина инструкција је 2 бајта. Код непосредног адресирања 16 битни операнд дат је трећим и четвртим бајтом инструкције. Битови 5 до 0 другог бајта инструкције се не користе. Дужина инструкције је 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 указује на прву | Стек расте према вишим меморијским локацијама, а регистар SP указује на прву слободну меморијску локацију. Процесор нема могућност обраде прекида. | ||
слободну меморијску локацију. Процесор нема могућност обраде прекида. | <div class="abc-list"> | ||
# Пројектовати део операционе јединице процесора која је потребна да се изврши (FETCH + ADDR + EXEC) инструкција ADD 1010h. | |||
# Дати су почетни садржаји регистара и индикатора 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 након извршавања инструкције и нови садржај регистара и меморијских локација који су у овој фази промењени. | |||
(FETCH + ADDR + EXEC) инструкција ADD 1010h. | </div> | ||
0002h, R1 = 000Аh, R2 = 10A2h, R3 = FАE3h, N = 0, Z = 0, V = 0 и C = 0. Индикатори | |||
статусне речи на које инструкција не утиче треба да остану непромењени. Извршити 7 | |||
сукцесивних наредби и за сваку наредбу одредити следеће: у фази читања инструкције | |||
– меморијске адресе са којих је прочитана инструкција, садржај регистра IR, | |||
инструкцију која је прочитана и нов садржај регистра PC; у фази одређивања адресе | |||
операнда и читања операнда – меморијске адресе са којих је прочитана адреса | |||
операнда, меморијске адресе са којих је прочитан операнд, вредност операнда и нови | |||
садржај регистара опште намене који су у овој фази промењени; у фази извршавања | |||
операције – меморијске адресе којима се у овој фази приступа, садржај акумулатора А | |||
и индикатора N, Z, V и C након извршавања инструкције и нови садржај регистара и | |||
меморијских локација који су у овој фази промењени. | |||
{| class="wikitable" | {| class="wikitable" | ||
|+ Садржај дела меморије из поставке задатка | |+ Садржај дела меморије из поставке задатка | ||
! ЛОКАЦИЈА: | |||
| 000Ah | | 000Ah | ||
| 000Bh | | 000Bh | ||
| Ред 71: | Ред 36: | ||
| 0013h | | 0013h | ||
|- | |- | ||
! САДРЖАЈ: | |||
| 10h | | 10h | ||
| 01h | | 01h | ||
| Ред 83: | Ред 48: | ||
| 83h | | 83h | ||
|- | |- | ||
! ЛОКАЦИЈА: | |||
| 1000h | | 1000h | ||
| 1001h | | 1001h | ||
| Ред 95: | Ред 60: | ||
| 1009h | | 1009h | ||
|- | |- | ||
! САДРЖАЈ: | |||
| 60h | | 60h | ||
| 42h | | 42h | ||
| Ред 107: | Ред 72: | ||
| 10h | | 10h | ||
|- | |- | ||
! ЛОКАЦИЈА: | |||
| 100Ah | | 100Ah | ||
| 100Bh | | 100Bh | ||
| Ред 119: | Ред 84: | ||
| 1013h | | 1013h | ||
|- | |- | ||
! САДРЖАЈ: | |||
| E1h | | E1h | ||
| 43h | | 43h | ||
| Ред 131: | Ред 96: | ||
| 52h | | 52h | ||
|- | |- | ||
! ЛОКАЦИЈА: | |||
| 1014h | | 1014h | ||
| 1015h | | 1015h | ||
| Ред 143: | Ред 108: | ||
| 101Dh | | 101Dh | ||
|- | |- | ||
! САДРЖАЈ: | |||
| 21h | | 21h | ||
| F0h | | F0h | ||
| Ред 157: | Ред 122: | ||
== Решење == | == Решење == | ||
<!-- | === Кодови операција === | ||
=== Операциона јединица === | |||
{{делимично решено}} | |||
=== Меморија === | |||
{| class="wikitable" | |||
! Р.Б. | |||
! Адресе са којих је прочитана инструкција | |||
! IR<sub>31..24</sub> [h] | |||
! IR<sub>23..16</sub> [h] | |||
! IR<sub>15..8</sub> [h] | |||
! IR<sub>7..0</sub> [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 | |||
|} | |||
{| class="wikitable" | |||
|- | |||
! Р.Б. | |||
! Адресе са којих је прочитана адреса операнда | |||
! Адресе са којих је прочитан операнд | |||
! Операнд | |||
! Садржај промењених регистара | |||
|- | |||
| 1 | |||
| | |||
| | |||
| | |||
| | |||
|- | |||
| 2 | |||
| | |||
| 000Ch, 000Dh | |||
| C100h | |||
| | |||
|- | |||
| 3 | |||
| | |||
| | |||
| | |||
| | |||
|- | |||
| 4 | |||
| | |||
| | |||
| | |||
| | |||
|- | |||
| 5 | |||
| | |||
| | |||
| 0002h | |||
| | |||
|- | |||
| 6 | |||
| | |||
| | |||
| | |||
| | |||
|- | |||
| 7 | |||
| | |||
| | |||
| F006h | |||
| | |||
|} | |||
{| class="wikitable" | |||
|- | |||
! Р.Б. | |||
! Адресе којима се приступа у фази извршавања | |||
! 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 | |||
| | |||
|} | |||
[[Категорија:Рокови]] | [[Категорија:Рокови]] | ||
[[Категорија: | [[Категорија:ОРТ2]] | ||
Тренутна верзија на датум 2. јануар 2024. у 18:49
Испит у јулском року 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 указује на прву слободну меморијску локацију. Процесор нема могућност обраде прекида.
- Пројектовати део операционе јединице процесора која је потребна да се изврши (FETCH + ADDR + EXEC) инструкција ADD 1010h.
- Дати су почетни садржаји регистара и индикатора 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 |