ОРТ2/К2 Фебруар 2021 — разлика између измена
Нема описа измене |
м (Ispravke u postavci) |
||
(Није приказано 11 међуизмена 2 корисника) | |||
Ред 3: | Ред 3: | ||
== Поставка == | == Поставка == | ||
Посматра се део рачунара који чине меморија и процесор. Меморија је капацитета 2<sup>16</sup> бајтова. Ширина меморијске речи је 1 бајт. Процесор је са једноадресним форматом инструкција. | Посматра се део рачунара који чине меморија и процесор. Меморија је капацитета 2<sup>16</sup> бајтова. Ширина меморијске речи је 1 бајт. Процесор је са једноадресним форматом инструкција. Подаци су дужине 8 бита без знака, а адресе дужине 16 бита и заузимају по две суседне меморијске локације, при чему се старији бајт налази на вишој, а млађи бајт на нижој адреси. | ||
У процесору постоји регистар програмског бројача PC дужине 2 бајта, адресни регистар меморије MAR дужине 2 бајта, прихватни регистар податка меморије MDR дужине 1 бајт, прихватни регистар инструкције IR дужине 4 бајта, акумулатор A дужине 1 бајт, прихватни регистар податка B дужине 1 бајт, регистри опште намене R0 до R15 дужине 2 бајта, програмска статусна реч PSW дужине 1 бајт. Инструкције су дужине 1, 2, 3 или 4 бајта. | У процесору постоји регистар програмског бројача PC дужине 2 бајта, адресни регистар меморије MAR дужине 2 бајта, прихватни регистар податка меморије MDR дужине 1 бајт, прихватни регистар инструкције IR дужине 4 бајта, акумулатор A дужине 1 бајт, прихватни регистар податка B дужине 1 бајт, регистри опште намене R0 до R15 дужине 2 бајта, програмска статусна реч PSW дужине 1 бајт. Инструкције су дужине 1, 2, 3 или 4 бајта. | ||
Ред 11: | Ред 11: | ||
Битови 7 и 6 првог бајта инструкције су 00 за све инструкције скока. Код инструкција условног скока бит 5 првог бајта инструкције је 0, док код инструкција безусловног скока бит 5 првог бајта инструкције је 1. Инструкција условног скока је инструкција условног скока уколико је резултат нула (JZ), а инструкције безусловног скока су инструкција безусловног скока (JMP) и инструкција скока на потпрограм (JSR). Битовима 4 до 0 првог бајта инструкције специфицира се код операције и на основу тога су за инструкције JZ, JMP и JSR усвојени кодови операције 00000000, 00100000 и 00100001, респективно. Инструкције JZ, JMP и JSR се реализују као апсолутни скокови, при чему је адреса дата другим и трећим бајтом инструкције. Дужина инструкција је 3 бајта. | Битови 7 и 6 првог бајта инструкције су 00 за све инструкције скока. Код инструкција условног скока бит 5 првог бајта инструкције је 0, док код инструкција безусловног скока бит 5 првог бајта инструкције је 1. Инструкција условног скока је инструкција условног скока уколико је резултат нула (JZ), а инструкције безусловног скока су инструкција безусловног скока (JMP) и инструкција скока на потпрограм (JSR). Битовима 4 до 0 првог бајта инструкције специфицира се код операције и на основу тога су за инструкције JZ, JMP и JSR усвојени кодови операције 00000000, 00100000 и 00100001, респективно. Инструкције JZ, JMP и JSR се реализују као апсолутни скокови, при чему је адреса дата другим и трећим бајтом инструкције. Дужина инструкција је 3 бајта. | ||
Бит 7 | Бит 7 и 6 првог бајта инструкције су 11 за све адресне и безадресне инструкције. | ||
Бит 5 првог бајта инструкције је 0 за безадресне инструкције. Безадресне инструкције су инструкције стављања садржаја акумулатора на стек (PUSH), пуњења акумулатора садржајем са стека (POP), инкрементирање акумулатора ( | Бит 5 првог бајта инструкције је 0 за безадресне инструкције. Безадресне инструкције су инструкције стављања садржаја акумулатора на стек (PUSH), пуњења акумулатора садржајем са стека (POP), инкрементирање акумулатора (INC) и повратка из потпрограма (RTS). Битовима 4 до 0 првог бајта инструкције специфицира се код операције за безадресне инструкције. На основу тога су за инструкције PUSH, POP, INC и RTS усвојени кодови операција 11000000, 11000001, 11000010 и 11000011, респективно. Дужина инструкција је 1 бајт. | ||
Бит 5 првог бајта инструкције | Бит 5 првог бајта инструкције је 1 за адресне инструкције. Адресне инструкције су инструкција преноса у акумулатор (LD), инструкција преноса из акумулатора (ST), логичка инструкција "и" (AND), инструкција аритметичког померања операнда једно место удесно која смешта резултат у акумулатор (ASR) и инструкција безусловног скока на срачунату адресу (JADR). Битовима 4 до 0 првог бајта инструкције специфицира се код операције за адресне инструкције. На основу тога су за инструкције LD, ST, AND, ASR и JADR усвојени кодови операција 11100000, 11100001, 11100010, 11100011 и 11100100 респективно. Дужина инструкција је 2 или 4 бајта и зависи од специфицираног начина адресирања. | ||
Начини адресирања су специфицирани битовима 7, 6 и 5 другог бајта инструкције и то на следећи начин: 000- | Начини адресирања су специфицирани битовима 7, 6 и 5 другог бајта инструкције и то на следећи начин: 000-регистарско индиректно адресирање (regind), 001-регистарско директно адресирање (regdir), 010-меморијско индиректно адресирање (memind), 011-релативно адресирање са померајем (pcrel) и 100-непосредно адресирање (immed). Код регистарског директног и регистарског индиректног адресирања користи неке од регистара опште намене R0 до R15 специфицираних битовима од 4 до 1 другог бајта. Бит 0 другог бајта инструкције се не користи. Дужина инструкција је 2 бајта. Код меморијског индиректног адресирања 16 битна адреса меморијске локације је дата трећим и четвртим бајтом инструкције. Битови 4 до 0 другог бајта интрукције се не користе. Дужина инструкције је 4 бајта. Код релативног адресирања са померајем трећи и четврти бајт инструкције садрже 16 битни померај који је дат као целобројна величина без знака. Битови 4 до 0 другог бајта инструкције се не користе. Дужина инструкција је 4 бајта. Код непосредног адресирања 8 битни операнд дат је трећим бајтом инструкције. Битови 4 до 0 другог бајта инструкције се не користе. Дужина инструкција је 3 бајта. | ||
Стек расте према нижим меморијским локацијама, а регистар SP указује на последњу заузету меморијску локацију. Процесор нема могућност обраде прекида. | Стек расте према нижим меморијским локацијама, а регистар SP указује на последњу заузету меморијску локацију. Процесор нема могућност обраде прекида. | ||
Процесор нема подршку за детектовање грешке у адресирању у првој фази, већ тако | Процесор нема подршку за детектовање грешке у адресирању у првој фази, већ тако прочитане инструкције игноришу у осталим фазама. | ||
Први корак сваке фазе сматрати да се означава са FETCH, | Први корак сваке фазе сматрати да се означава са FETCH, ADDR, EXEC. | ||
<div class="abc-list"> | <div class="abc-list"> | ||
Ред 33: | Ред 33: | ||
== Решење == | == Решење == | ||
=== Кодови операција === | === Кодови операција === | ||
/ | |||
=== Сигнали === | === Сигнали === | ||
Ред 49: | Ред 49: | ||
<math> INC = IR_{31}IR_{30}\overline{IR_{29}}\overline{IR_{28}}\overline{IR_{27}}\overline{IR_{26}} IR_{25}\overline{IR_{24}} </math> | <math> INC = IR_{31}IR_{30}\overline{IR_{29}}\overline{IR_{28}}\overline{IR_{27}}\overline{IR_{26}} IR_{25}\overline{IR_{24}} </math> | ||
<math> AND = IR_{31}IR_{30}IR_{29}\overline{IR_{28}}\overline{IR_{27}} IR_{26} IR_{25}\overline{IR_{24}} </math> | <math> AND = IR_{31}IR_{30}IR_{29}\overline{IR_{28}}\overline{IR_{27}}\overline{IR_{26}} IR_{25}\overline{IR_{24}} </math> | ||
<math> ASR = IR_{31}IR_{30}IR_{29}\overline{IR_{28}}\overline{IR_{27}} IR_{26} IR_{25}IR_{24} </math> | <math> ASR = IR_{31}IR_{30}IR_{29}\overline{IR_{28}}\overline{IR_{27}}\overline{IR_{26}} IR_{25}IR_{24} </math> | ||
=== Дијаграми тока === | === Дијаграми тока === | ||
==== ADDR ==== | ==== ADDR ==== | ||
[[Датотека:ORT2 K2 Februar 2021 ADDR.svg|оквир| | [[Датотека:ORT2 K2 Februar 2021 ADDR.svg|оквир|центар|ADDR]] | ||
==== EXEC ==== | ==== EXEC ==== | ||
[[Датотека:ORT2 K2 Februar 2021 EXEC.svg|оквир|центар|EXEC]] | |||
[[Категорија:ОРТ2]] | [[Категорија:ОРТ2]] | ||
[[Категорија:Рокови]] | [[Категорија:Рокови]] |
Тренутна верзија на датум 12. децембар 2021. у 18:38
К2 2020 је одржан у фебруарском испитном року 2021.
Поставка
Посматра се део рачунара који чине меморија и процесор. Меморија је капацитета 216 бајтова. Ширина меморијске речи је 1 бајт. Процесор је са једноадресним форматом инструкција. Подаци су дужине 8 бита без знака, а адресе дужине 16 бита и заузимају по две суседне меморијске локације, при чему се старији бајт налази на вишој, а млађи бајт на нижој адреси.
У процесору постоји регистар програмског бројача PC дужине 2 бајта, адресни регистар меморије MAR дужине 2 бајта, прихватни регистар податка меморије MDR дужине 1 бајт, прихватни регистар инструкције IR дужине 4 бајта, акумулатор A дужине 1 бајт, прихватни регистар податка B дужине 1 бајт, регистри опште намене R0 до R15 дужине 2 бајта, програмска статусна реч PSW дужине 1 бајт. Инструкције су дужине 1, 2, 3 или 4 бајта.
Приликом читања података из регистра опште намене, узима се нижих 8 бита.
Битови 7 и 6 првог бајта инструкције су 00 за све инструкције скока. Код инструкција условног скока бит 5 првог бајта инструкције је 0, док код инструкција безусловног скока бит 5 првог бајта инструкције је 1. Инструкција условног скока је инструкција условног скока уколико је резултат нула (JZ), а инструкције безусловног скока су инструкција безусловног скока (JMP) и инструкција скока на потпрограм (JSR). Битовима 4 до 0 првог бајта инструкције специфицира се код операције и на основу тога су за инструкције JZ, JMP и JSR усвојени кодови операције 00000000, 00100000 и 00100001, респективно. Инструкције JZ, JMP и JSR се реализују као апсолутни скокови, при чему је адреса дата другим и трећим бајтом инструкције. Дужина инструкција је 3 бајта.
Бит 7 и 6 првог бајта инструкције су 11 за све адресне и безадресне инструкције.
Бит 5 првог бајта инструкције је 0 за безадресне инструкције. Безадресне инструкције су инструкције стављања садржаја акумулатора на стек (PUSH), пуњења акумулатора садржајем са стека (POP), инкрементирање акумулатора (INC) и повратка из потпрограма (RTS). Битовима 4 до 0 првог бајта инструкције специфицира се код операције за безадресне инструкције. На основу тога су за инструкције PUSH, POP, INC и RTS усвојени кодови операција 11000000, 11000001, 11000010 и 11000011, респективно. Дужина инструкција је 1 бајт.
Бит 5 првог бајта инструкције је 1 за адресне инструкције. Адресне инструкције су инструкција преноса у акумулатор (LD), инструкција преноса из акумулатора (ST), логичка инструкција "и" (AND), инструкција аритметичког померања операнда једно место удесно која смешта резултат у акумулатор (ASR) и инструкција безусловног скока на срачунату адресу (JADR). Битовима 4 до 0 првог бајта инструкције специфицира се код операције за адресне инструкције. На основу тога су за инструкције LD, ST, AND, ASR и JADR усвојени кодови операција 11100000, 11100001, 11100010, 11100011 и 11100100 респективно. Дужина инструкција је 2 или 4 бајта и зависи од специфицираног начина адресирања.
Начини адресирања су специфицирани битовима 7, 6 и 5 другог бајта инструкције и то на следећи начин: 000-регистарско индиректно адресирање (regind), 001-регистарско директно адресирање (regdir), 010-меморијско индиректно адресирање (memind), 011-релативно адресирање са померајем (pcrel) и 100-непосредно адресирање (immed). Код регистарског директног и регистарског индиректног адресирања користи неке од регистара опште намене R0 до R15 специфицираних битовима од 4 до 1 другог бајта. Бит 0 другог бајта инструкције се не користи. Дужина инструкција је 2 бајта. Код меморијског индиректног адресирања 16 битна адреса меморијске локације је дата трећим и четвртим бајтом инструкције. Битови 4 до 0 другог бајта интрукције се не користе. Дужина инструкције је 4 бајта. Код релативног адресирања са померајем трећи и четврти бајт инструкције садрже 16 битни померај који је дат као целобројна величина без знака. Битови 4 до 0 другог бајта инструкције се не користе. Дужина инструкција је 4 бајта. Код непосредног адресирања 8 битни операнд дат је трећим бајтом инструкције. Битови 4 до 0 другог бајта инструкције се не користе. Дужина инструкција је 3 бајта.
Стек расте према нижим меморијским локацијама, а регистар SP указује на последњу заузету меморијску локацију. Процесор нема могућност обраде прекида.
Процесор нема подршку за детектовање грешке у адресирању у првој фази, већ тако прочитане инструкције игноришу у осталим фазама.
Први корак сваке фазе сматрати да се означава са FETCH, ADDR, EXEC.
- Написати изразе за генерисање сигнала свих начина адресирања. IR регистар се попуњава од виших ка нижим битовима.
- Написати изразе за генерисање сигнала операција и то само за INC, AND и ASR.
- Нацртати дијаграм тока фазе формирања адресе и читања операнда и фазе извршавање[sic] инструкције.
Решење
Кодови операција
/
Сигнали