ОРТ2/К2 2019
Поставка
Посматра се део рачунара који чине меморија и процесор.
Меморија је капацитета 216 бајтова. Ширина меморијске речи је 1 бајт. Процесор је са једноадресним форматом инструкција. Подаци су целобројне величине са знаком дужине 1 бајт представљени у другом комплементу. Адресе у меморији заузимају две суседне меморијске локације, при чему се млађи бајт налази на вишој локацији, а старији бајт на нижој локацији.
У процесору постоји регистар програмског бројача PC дужине 2 бајта, адресни регистар меморије MAR дужине 2 бајта, прихватни регистар податка меморије MDR дужине 1 бајт, прихватни регистар инструкције IR дужине 3 бајта, акумулатор A дужине 1 бајт, прихватни регистар податка B дужине 1 бајт, регистри опште намене R0 до R3 дужине 2 бајта, програмска статусна реч PSW дужине 1 бајт, указивач на врх стека SP дужине 2 бајта. Инструкције су дужине 1, 2 или 3 меморијске речи.
Подаци се при упису у регистре опште намене смештају у нижих 8 битова, док се виших осам попуњава знаком податка. При читању података из регистара опште намене користе се нижих 8 ботива. Код уписа или читања адресе из регистра опште намене користе се свих 16 битова.
Битови 7, 6, 5 и 4 првог бајта инструкције има вредност 0 за инструкције скока, при чему бит 3 првог бајта инструкције има вредност 0 за инструкције условног скока и 1 за инструкције безусловног скока. Инструкција условног скока је инструкција условног скока уколико није дошло до преноса (BNC). Битовима 2 до 0 првог бајта инструкције специфицира се код операције за инструкције условног скока. На основу тога је за инструкцију BNC усвојен код операције 00000000. Инструкција BNC се реализује као релативни скок у односу на текућу вредност програмског бројача PC, а померај је 8 битна целобројна величина са знаком дата другим бајтом инструкције. Дужина инструкција је два бајта. Инструкције безусловног скока су инструкција безусловног скока (JMP) и инструкција скока на потпрограм (JSR). Битовима 2 до 0 првог бајта инструкције специфицира се код операције за инструкције безусловног скока. На основу тога су за инструкције JMP и JSR усвојени кодови операције 00001000 и 00001001, респективно. Инструкције JMP и JSR се реализују као апсолутни скокови, а адреса скока је дата другим и трећим бајтом инструкције. Дужина инструкција је три бајта.
Битови 7, 6, 5 и 4 првог бајта инструкције има вредност 1 за безадресне инструкције. Безадресне инструкције су инструкције стављања садржаја акумулатора на стек (PUSH), инструкција скидања садржаја са стека у акумулатор (POP), инструкција повратка из потпорграма (RTS) и инструкција аритметичког померања садржаја акумулатора удесно за једно место (ASRA). Битовима 3 до 0 првог бајта инструкције специфицира се код операције за безадресне инструкције. На основу тога су за инструкције PUSH, POP, RTS и ASRA усвојени кодови операција 11110000, 11110001, 11110010 и 11110011, респективно. Дужина инструкција је један бајт.
Битови 7, 6, 5 и 4 првог бајта инструкције има[sic] вредност у опсегу 0001 до 1110 за адресне инструкције. Адресне инструкције су инструкција преноса у акумулатор (LD), инструкција преноса из акумулатора (ST), инструкција увећавања операнд[sic] за један, са тим да се резултат смешта и у операнд и у акумулатор (INC), аритметичка инструкција одузимања (SUB) и логичка инструкција ексклузивно ИЛИ (XOR). На основу тога су за инструкције LD, ST, INC, SUB и XOR усвојени кодови операција 0001, 0010, 0011, 0100 и 0101 респективно. Дужина инструкција је један, два или три бајта и зависи од специфицираног начина адресирања.
Начини адресирања су специфицирани битовима 3 и 2 првог бајта инструкције и то на следећи начин: 00-непосредно адресирање, 01-регистарско директно адресирање, 10-регистарско индиректно адресирање са постинкрементирањем, 11-меморијско индиректно адресирање.
Код непосредног адресирања 8 битни операнд је дат другим бајтом инструкције. Битови од 1 до 0 првог бајта инструкције се не користе. Дужина инструкција је 2 бајта.
Код меморијског индиректног адресирања адреса меморијске локације је дата другим и трећим бајтом инструкције. Битови 1 до 0 првог бајта инструкције се не користе. Дужина инструкција је 3 бајта.
Код регистарског директног и код регистарског индиректног адресирања са постинкрементирањем, битови 1 и 0 другог[1] бајта инструкције се користе за адресирање једног од регистара опште намене R0 до R3. Дужина инструкције је 1 бајта[sic].
Стек расте према вишим адресама у меморији, а регистар SP показује на прву слободну локацију на стеку.
Процесор не садржи подршку за обраду прекида.
- Написати изразе за генерисање сигнала свих начина адресирања. IR регистар се попуњава од виших ка нижим битовима.
- Написати изразе за генерисање сигнала операција и то само за PUSH и INC.
- Нацртати дијаграм тока фазе формирања адресе и читања операнда и фазе извршавање[sic] инструкције.
- Дати су почетни садржаји регистара и индикатора: PC=1000h, SP=2002h, ACC = 00h, R1=000Bh, N=0, Z=1, V=0 и C=0. Индикатори статусне речи на које инструкције не утиче треба да остану непромењени. Извршити 5 сукцесивних наредби и за сваки наредбу одредити следеће: у фази читања инструкције - меморијске адресе са којих је прочитана инструкција, садржај регистра IR, инструкцију која је прочитана и нови садржај регистра PC; у фази одређивања адресе операнда и читања операнда - меморијске адресе са којих је прочитана адреса операнда, меморијске адресе са којих је прочитан операнд, вредност операнда и нови садржај регистара опште намене који су у овој фази промењени; у фази извршавања операције - меморијске адресе којима се у овој фази приступа, садржај акумулатора A и индикатора N, Z, V и C након извршавања инструкције и нови садржај регистара и меморијских локација који су у овој фази промењени. Резултате представити у табелама 1, 2 и 3 формулара.
Решење
Кодови операција
Сигнали
Дијаграми тока
FETCH
ADDR
EXEC
Меморија
Напомене
- ↑ Има много више смисла да ови битови буду у првом бајту инструкције, али је писало овако. Не зна се да ли је овај део грешка.