ОРТ2/К3 2021
Поставка
Посматра се део рачунара који чине меморија и процесор. Меморија је капацитета 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 првог бајта инструкције је 0 за све инструкције скока. Код инструкција условног скока бит 6 првог бајта инструкције је 0, док код инструкција безусловног скока бит 6 првог бајта инструкције је 1. Инструкција условног скока је инструкција условног скока уколико резултат није нула (JNZ), а инструкције безусловног скока су инструкција безусловног скока (JMP). Битовима 5 до 0 првог бајта инструкције специфицира се код операције и на основу тога су за инструкције JNZ, JMP и JSR усвојени кодови операције 00000000 и 01000000, респективно. Инструкције JNZ и JMP се реализују као апсолутни скокови, при чему је адреса дата другим и трећим бајтом инструкције. Дужина инструкција је 3 бајта.
Бит 7 првог бајта инструкције је 1 за све адресне и безадресне инструкције.
Битови 6 и 5 првог бајта инструкције су 01 за безадресне инструкције. Безадресне инструкције су инструкције стављања садржаја на стек (PUSH), пуњења акумулатора садржајем са стека (POP) и декрементирање акумулатора (DEC). Битовима 4 до 0 првог бајта инструкције специфицира се код операције за безадресне инструкције. На основу тога су за инструкције PUSH, POP и DEC усвојени кодови операција 10100000, 10100001 и 10100010, респективно. Дужина инструкција је 1 бајт.
Битови 6 и 5 првог бајта инструкције су 11 за адресне инструкције. Адресне инструкције су инструкција преноса у акумулатор (LD), инструкција преноса из акумулатора (ST), логичка инструкција "или" (OR), инструкција ротирања операнда једно место удесно која смешта резултат у акумулатор (ROR), инструкција безусловног скока на срачунату адресу (JADR), инструкција сабирања (ADD) и инструкција одузимања (SUB). Битовима 4 до 0 првог бајта инструкције специфицира се код операције за адресне инструкције. На основу тога су за инструкције LD, ST, OR, ROR, JADR, ADD и SUB усвојени кодови операција 11100000, 11100001, 11100010, 11100011, 11100100, 11100101 и 11100110 респективно. Дужина инструкција је 2 или 4 бајта и зависи од специфицираног начина адресирања.
Начини адресирања су специфицирани битовима 7, 6 и 5 другог бајта инструкције и то на следећи начин: 000-меморијско директно адресирање (memdir), 001-регистарско индиректно адресирање (regind), 010-регистарско директно адресирање (regdir), 011-релативно адресирање са померајем (pcrel), 100-непосредно адресирање (immed) и 101-регистарско индиректно са померајем адресирање (regindpom). Код меморијског директног адресирања 16 битна адреса меморијске локације је дата трећим и четвртим бајтом инструкције. Битови 4 до 0 другог бајта инструкције се не користе. Дужина инструкција је 4 бајта. Регистарско индиректно адресирање користи неке од регистара опште намене R0 до R15 специфициране битовима од 3 до 0 другог бајта. Бит 4 другог бајта инструкције се не користи. Дужина инструкција је 2 бајта. Регистарско директно адресирање користи неке од регистара опште намене R0 до R15 специфициране битовима од 3 до 0 другог бајта. Бит 4 другог бајта инструкције се не користи. Дужина инструкција је 2 бајта. Код релативног адресирања са померајем трећи и четврти бајт инструкције садрже 16 битни померај који је дат као целобројна величина са знаком. Битови 4 до 0 другог бајта инструкције се не користе. Дужина инструкција је 4 бајта. Код непосредног адресирања 16 битни операнд дат је трећим и четвртим бајтом инструкције. Битови 4 до 0 другог бајта инструкције се не користе. Дужина инструкција је 4 бајта. Код регистарског индиректног адресирања са померајем трећи и четврти бајт инструкције садрже 16 битни померај који је дат као целобројна величина са знаком. Један од регистара опште намене R0 до R15 који се користи специфициран је битовима од 3 до 0 другог бајта инструкције. Бит 4 другог бајта инструкције се не користи. Дужина инструкција је 4 бајта.
Стек расте према вишим меморијским локацијама, а регистар SP указује на последњу заузету меморијску локацију. Процесор нема могућност обраде прекида.
- Пројектовати део операционе јединице процесора која је потребна да се изврши (FETCH + ADDR + EXEC) инструкција JADR (1234h).
- Дати су почетни садржаји регистара и индикатора: PC=1000h, SP=2000h, ACC = 0002h, R0=00F2h, R1=000Ch, R2=00A2h, R3=FFE3h, N=0, Z=0, V=0 и C=0. Индикатори статусне речи на које инструкције не утиче треба да остану непромењени. Извршити 7 сукцесивних наредби и за сваки наредбу одредити следеће: у фази читања инструкције - меморијске адресе са којих је прочитана инструкција, садржај регистра IR, инструкцију која је прочитана и нови садржај регистра PC; у фази одређивања адресе операнда и читања операнда - меморијске адресе са којих је прочитана адреса операнда, меморијске адресе са којих је прочитан операнд, вредност операнда и нови садржај регистара опште намене који су у овој фази промењени; у фази извршавања - меморијске адресе којима се у овој фази приступа, садржај акумулатора A и индикатора N, Z, V и C након извршавања инструкције и нови садржај регистара и меморијских локација који су у овој фази промењени. Резултате представити у табелама 1, 2 и 3 формулара.