ОРТ2/К2Н 2019 — разлика између измена
(→EXEC) |
|||
| Ред 56: | Ред 56: | ||
=== Кодови операција === | === Кодови операција === | ||
=== Сигнали === | === Сигнали === | ||
<math> gradr = (ST+JADR)\cdot regdir + ST\cdot immed </math> | |||
<math> memind = \overline{IR_{23}} \overline{IR_{22}} \overline{IR_{21}}</math> | |||
<math> regdir = \overline{IR_{23}} \overline{IR_{22}} IR_{21}</math> | |||
<math> regindpom = \overline{IR_{23}} IR_{22} \overline{IR_{21}}</math> | |||
<math> pcrel = \overline{IR_{23}} IR_{22} IR_{21}</math> | |||
<math> immed = IR_{23} \overline{IR_{22}} \overline{IR_{21}}</math> | |||
<math> PUSH = IR_{31}IR_{30}IR_{29}\overline{IR_{28}}\overline{IR_{27}}\overline{IR_{26}}\overline{IR_{25}}\overline{IR_{24}} </math> | |||
<math> DEC = IR_{31}IR_{30}IR_{29}\overline{IR_{28}}IR_{27}\overline{IR_{26}}IR_{25} \overline{IR_{24}} </math> | |||
=== Дијаграми тока === | === Дијаграми тока === | ||
==== ADDR ==== | ==== ADDR ==== | ||
Верзија на датум 13. децембар 2021. у 15:28
- Овај рок није решен. Помозите SI Wiki тако што ћете га решити.
Поставка
Посматра се део рачунара који чине меморија и процесор. Меморија је капацитета 216 бајтова. Ширина меморијске речи је 1 бајт. Процесор је са једноадресним форматом инструкција. Адресе и подаци су дужина 16 бита и заузимају по две суседне меморијске локације, при чему се старији бајт налази на вишој, а млађи бајт на нижој адреси.
У процесору постоји регистар програмског бројача PC дужине 2 бајта, адресни регистар меморије MAR дужине 2 бајта, прихватни регистар податка меморије MDR дужине 1 бајт, прихватни регистар инструкције IR дужине 4 бајта, акумулатор A дужине 2 бајта, прихватни регистар податка B дужине 2 бајта, регистри опште намене R0 до R15 дужине 2 бајта, програмска статусна реч PSW дужине 1 бајт. Инструкције су дужине 1, 2, 3 или 4 бајта.
Битови 7, 6 и 5 првог бајта инструкције су 000 за све инструкције скока. Код инструкција условног скока бит 4 првог бајта инструкције је 0, док код инструкција безусловног скока бит 4 првог бајта инструкције је 1. Инструкција условног скока је инструкција условног скока уколико уколико резултат јесте нула (JZ), а инструкције безусловног скока су инструкција безусловног скока (JMP) и инструкција скока на потпрограм (JSR). Битовима 3 до 0 првог бајта инструкције специфицира се код операције и на основу тога су за инструкције JZ, JMP и JSR усвојени кодови операција 00000000, 00010000 и 00010001, респективно. Инструкције JZ, JMP и JSR се реализују као апсолутни скокови, при чему је адреса скока дата другим и трећим бајтом инструкције. Дужина инструкција је 3 бајта.
Битови 7, 6 и 5 првог бајта инструкције су 111 за све адресне и безадресне инструкције.
Битови 4 и 3 првог бајта инструкције су 00 за безадресне инструкције. Безадресне инструкције су инструкције стављања садржаја акумулатора на стек (PUSH), пуњења акумулатора садржајем са стека (POP) и повратка из потпорграма (RTS). Битовима 2 до 0 првог бајта инструкције специфицира се код операције за безадресне инструкције. На основу тога су за инструкције PUSH, POP и RTS усвојени кодови операција 11100000, 11100001 и 11100010, респективно. Дужина инструкција је 1 бајт.
Битови 4 и 3 првог бајта инструкције су 01 за адресне инструкције. Адресне инструкције су инструкција преноса у акумулатор (LD), инструкција преноса из акумулатора (ST), аритметичка инструкција декрементирања операнда која резултат смешта у акумулатор (DEC), логичка инструкција "и" (AND) и инструкција безусловног скока на срачунату адресу (JADR). Битовима 2 до 0 првог бајта инструкције специфицира се код операције за адресне инструкције. На основу тога су за инструкције LD, ST, DEC, AND и JADR усвојени кодови операција 11101000, 11101001, 11101010, 11101011 и 11101100 респективно. Дужина инструкција је 2 или 4 бајта и зависи од специфицираног начина адресирања.
Начини адресирања су специфицирани битовима 7, 6 и 5 другог бајта инструкције и то на следећи начин: 000-меморијско индиректно адресирање (memind), 001-регистарско директно адресирање (regdir), 010-регистарско индиректно са померајем (regindpom), 011-релативно адресирање са померајем (pcrel) и 100-непосредно адресирање (immed). Код меморијског индиректног адресирања 16 битна адреса меморијске локације је дата трећим и четвртим бајтом инструкције. Битови од 4 до 0 другог бајта инструкције се не користе. Дужина инструкција је 4 бајта. Регистарско директно адресирање користи неке од регистара опште намене R0 до R15 специфициране битовима од 3 до 0 другог бајта инструкције. Бит 4 другог бајта се не користи. Дужина инструкције је 2 бајта. Код регистарског индиректног адресирања са померајем, трећи и четврти бајт инструкције садрже 16 битни померај који је дат као целобројна величина без знака. Један од регистара опште намене R0 до R15 специфициран је битовима од 3 до 0 другог бајта инструкције. Бит 4 другог бајта се не користи. Дужина инструкције је 4 бајта. Код релативног адресирања са померајем трећи и четврти бајт инструкције садрже 16 битни померај који је дат као целобројна величина са знаком. Битови 4 до 0 другог бајта инструкције се не користе. Дужина инструкција је 4 бајта. Код непосредног адресирања 16 битни операнд дат је трећим и четвртим бајтом инструкције. Битови од 4 до 0 другог бајта инструкције се не користе. Дужина инструкција је 4 бајта.
Стек расте према нижим меморијским локацијама, а регистар SP указује на прву слободну меморијску локацију. Процесор нема могућност обраде прекида.
- Написати изразе за генерисање сигнала gradr који је активан уколико прочитана инструкција има грешку при адресирању.
- Написати изразе за генерисање сигнала свих начина адресирања. IR регистар се попуњава од виших ка нижим битовима.
- Написати изразе за генерисање сигнала операција и то само за PUSH и DEC.
- Нацртати дијаграм тока фазе формирања адресе и читања операнда и фазе извршавање[sic] инструкције.
- Дати су почетни садржаји регистара и индикатора: PC=1000h, SP=2000h, ACC = 0006h, R0=00А7h, R1=0011h, R1=00E2h, R1=FFE3h, N=0, Z=0, V=0 и C=0. Индикатори статусне речи на које инструкције не утиче треба да остану непромењени. Извршити 4 сукцесивне наредбе и за сваку наредбу одредити следеће: у фази читања инструкције - меморијске адресе са којих је прочитана инструкција, садржај регистра IR, инструкцију која је прочитана и нови садржај регистра PC; у фази одређивања адресе операнда и читања операнда - меморијске адресе са којих је прочитана адреса операнда, меморијске адресе са којих је прочитан операнд, вредност операнда и нови садржај регистара опште намене који су у овој фази промењени; у фази извршавања операције - меморијске адресе којима се у овој фази приступа, садржај акумулатора A и индикатора N, Z, V и C након извршавања инструкције и нови садржај регистара и меморијских локација који су у овој фази промењени. Резултате представити у табелама 1, 2 и 3 формулара.
| ЛОКАЦИЈА | 000A | 000B | 000C | 000D | 000E | 000F | 0010 | 0011 | 0012 | 0013 |
|---|---|---|---|---|---|---|---|---|---|---|
| ВРЕДНОСТ | 10 | 00 | C0 | 32 | 21 | 77 | 11 | 00 | 0A | 03 |
| ЛОКАЦИЈА | 1000 | 1001 | 1002 | 1003 | 1004 | 1005 | 1006 | 1007 | 1008 | 1009 |
| ВРЕДНОСТ | E0 | EA | 00 | 0A | 00 | 00 | 11 | 10 | E8 | 22 |
| ЛОКАЦИЈА | 100A | 100B | 100C | 100D | 100E | 100F | 1010 | 1011 | 1012 | 1013 |
| ВРЕДНОСТ | 11 | 00 | 10 | AA | 03 | 51 | 00 | 0A | 00 | 52 |
| ЛОКАЦИЈА | 1014 | 1015 | 1016 | 1017 | 1018 | 1019 | 101A | 101B | 101C | 101D |
| ВРЕДНОСТ | 21 | 41 | 10 | AA | 03 | 00 | 21 | 88 | 10 | 13 |
Решење
Кодови операција
Сигнали