Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсак Тиханський.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
1.03 Mб
Скачать

3.2 Множина інструкцій мікропроцесора

Система команд мікропроцесора Gnome містить 16 інструкцій (табл.3.2.1), — це арифметико-логічні інструкції, інструкції збереження результату та інструкції умовного та безумовного переходів.

Табл.3.2.1. Множина інструкцій мікропроцесора

Інструкція

Код

Призначення

Дія

CLEAR_C

00000000

Встановити значення регістра ознаки переносу С в ‘0’

C<=’0’

SET_C

00000001

Встановити значення регістра ознаки переносу С в ‘1’

C<=’1’

SKIP_C

00000010

Ігнорувати наступну інструкцію, якщо регістр ознаки переносу є встановленим (С=’1’)

PC<=PC+C

SKIP_Z

00000011

Ігнорувати наступну інструкцію, якщо регістр ознаки нуля є встановленим (Z=’1’)

PC<=PC+Z

LOAD_IMM

0001dddd

Завантажити безпосередньо дані dddd/2/ в акумулятор (ACC).

ACC<=IR[3:0]

ADD_IMM

0010dddd

Додати dddd/2/ до акумулятора, результат помістити в акумулятор. Регістр ознаки переносу встановлюється в ‘1’ у разі переповнення регістра акумулятора.

ACC<=ACC+IR[3:0]

if ACC+IR[3:0] > F then C<=’1’

STORE_DIR

0011rrrr

Зберегти вміст акумулятора в регістрі загального призначення RF за номером rrrr/2/.

RF[IR[3:0]]<=ACC

LOAD_DIR

0100rrrr

Завантажити у акумулятор вміст регістра загального призначення RF за номером rrrr/2/.

ACC<=RF[IR[3:0]]

ADD_DIR

0101rrrr

Додати вміст регістра загального призначення RF за номером rrrr/2/ до акумулятора, результат помістити в акумулятор. Регістр ознаки переносу встановлюється в ‘1’ у разі переповнення регістра акумулятора.

ACC<=ACC+

RF[IR[3:0]]

if ACC+RF[IR[3:0]]>F

then C<=’1’

XOR_DIR

0110rrrr

Виконати логічну операцію XOR над вмістом регістра загального призначення RF за номером rrrr/2/ та акумулятора ACC, результат занести в акумулятор.

ACC<=

ACC xor RF[IR[3:0]]

TEST_DIR

0111rrrr

Виконати логічну операцію AND над вмістом регістра загального призначення RF за номером rrrr/2/ та акумулятора ACC, результат занести в акумулятор.

Формується значення регістру нульового результату.

ACC<=

ACC and RF[IR[3:0]]

JNZ

1000dddd

Якщо ознака нульового результату встановлена, то завантажити у лічильник команд таку комбінацію бітів: R0[2:0]&IR[3:0]

if Z=’0’ then

PC<=

R0[2:0]&IR[3:0].

LOAD

1001dddd

Завантажити у акумулятор значення, що знаходиться за адресою R0&IR[3:0]. Це може бути значення із зовнішньої пам`яті або з одного із зовнішніх пристроїв.

if R0[3]=’0’ then

ACC<=

MEM[R0&IR[3:0]]

else

ACC<=

DEV[R0&IR[3:0]]

STORE

1010dddd

Завантажити до певного внутрішнього регістра зовнішнього пристрою значення з акумулятора.

DEV[R0&IR[3:0]]<=ACC

RET

10110000

Відновити у лічильнику команд виконання тої послідовності команд, що була порушена необхідністю виконати обробку апаратного маскованого переривання.

PC<=PC1;

NOP

11000000

Збереження попереднього стану, ніяких дій не виконується.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]