ОРТ2/К3 Фебруар 2023 — разлика између измена
м (→Меморија: malo lepse) |
м (Ispravka postavke, 2^16, ne 216) |
||
(Није приказана једна међуизмена другог корисника) | |||
Ред 1: | Ред 1: | ||
{{tocright}} | {{tocright}} | ||
'''Фебруарски испитни рок 2023. године''' одржан је 11. фебруара 2023. | '''Фебруарски испитни рок 2023. године''' одржан је 11. фебруара 2023. | ||
== Поставка == | == Поставка == | ||
Посматра се део рачунара који чине меморија и процесор. Меморија је капацитета | Посматра се део рачунара који чине меморија и процесор. Меморија је капацитета 2<sup>16</sup> бајтова. Ширина меморијске речи је 1 бајт. Процесор је са једноадресним форматом инструкција. Подаци и адресе су дужине 2 бајта и заузимају две суседне меморијске локације, при чему се старији бајт налази на нижој, а млађи на вишој адреси. | ||
У процесору постоји регистар програмског бројача PC дужине 2 бајта, адресни регистар меморије MAR дужине 2 бајта, прихватни регистар податка меморије MDR дужине 1 бајт, прихватни регистар инструкције IR дужине 4 бајта, акумулатор A дужине 2 бајта, прихватни регистар податка B дужине 2 бајта, регистри опште намене R0 до R15 дужине 2 бајта, програмска статусна реч PSW дужине 1 бајт. Инструкције су дужине 1, 2, 3 или 4 бајта. | У процесору постоји регистар програмског бројача PC дужине 2 бајта, адресни регистар меморије MAR дужине 2 бајта, прихватни регистар податка меморије MDR дужине 1 бајт, прихватни регистар инструкције IR дужине 4 бајта, акумулатор A дужине 2 бајта, прихватни регистар податка B дужине 2 бајта, регистри опште намене R0 до R15 дужине 2 бајта, програмска статусна реч PSW дужине 1 бајт. Инструкције су дужине 1, 2, 3 или 4 бајта. | ||
Ред 123: | Ред 122: | ||
== Решење == | == Решење == | ||
=== Операциона јединица === | |||
{{делимично решено}} | |||
=== Меморија === | === Меморија === | ||
{| class="wikitable" | {| class="wikitable" |
Тренутна верзија на датум 30. јун 2023. у 13:27
Фебруарски испитни рок 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 указује на последњу заузету меморијску локацију. Процесор нема могућност обраде прекида.
- Пројектовати део операционе јединице процесора која је потребна да се изврши (FETCH + ADDR + EXEC) инструкција ADD (R0)-. Потребно је да се нацрта само једна минимална операциона јединица која је довољна да се изврши цела споменута инструкција.
- Дати су почетни садржаји регистара и индикатора: 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 |