ОРТ2/К2Н 2019

Извор: SI Wiki
< ОРТ2
Датум измене: 20. јануар 2023. у 18:00; аутор: Andrej Šolaja (разговор | доприноси) (→‎Сигнали: los je bio gradr)
(разл) ← Старија измена | Тренутна верзија (разл) | Новија измена → (разл)
Пређи на навигацију Пређи на претрагу

Поставка

Посматра се део рачунара који чине меморија и процесор. Меморија је капацитета 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 указује на прву слободну меморијску локацију. Процесор нема могућност обраде прекида.

  1. Написати изразе за генерисање сигнала gradr који је активан уколико прочитана инструкција има грешку при адресирању.
  2. Написати изразе за генерисање сигнала свих начина адресирања. IR регистар се попуњава од виших ка нижим битовима.
  3. Написати изразе за генерисање сигнала операција и то само за PUSH и DEC.
  4. Нацртати дијаграм тока фазе формирања адресе и читања операнда и фазе извршавање[sic] инструкције.
  5. Дати су почетни садржаји регистара и индикатора: 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 формулара.[1]
Садржај дела меморије из поставке задатка
ЛОКАЦИЈА 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

Решење

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

Сигнали

Дијаграми тока

ADDR

ADDR

EXEC

EXEC

Меморија

# Адресе са којих је учитана инструкција IR31..24 IR23..16 IR15..8 IR7..0 Инструкција PC
1 1000 E0 PUSH 1001
2 1001, 1002, 1003, 1004 EA 00 0A 00 DEC 000A 1005
3 1005, 1006, 1007 00 11 10 JZ 1011 1008
4 1008, 1009 E8 22 LD R2 100A
# Адресе са којих је учитана адреса операнда Адресе са којих је учитан операнд Операнд Садржај промењених регистара
1
2 000A, 000B 0010, 0011 0011
3
4 00E2
# Адресе којима се приступа у овој фази Акумулатор N Z V C Садржај промењених регистара и мем. лок.
1 2000, 1FFF 0006 0 0 0 0 SP[2000] = 06, SP[1FFF] = 00, SP = 1FFE
2 0010 0 0 0 0
3 0010 0 0 0 0
4 00E2 0 0 0 0
  1. Почев од школске 2020/2021. године, оваква ставка долази тек на трећем колоквијуму.