Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Материалы по Архитектуре / 9305_АникинаАА.docx
Скачиваний:
37
Добавлен:
03.06.2014
Размер:
629.5 Кб
Скачать

2.2.6. Разработка системы команд

Система команд включает следующие команды:

1) обращения к памяти по чтению и записи;

2) целочисленные арифметические для чисел со знаком и без знака (сложение, вычитание, умножение, деление, сравнение);

3) арифметические с ПТ (сложение, вычитание, умножение, деление, сравнение);

4) логические (поразрядное “И”, “ИЛИ” и “Исключающее ИЛИ”);

5) сдвигов на произвольное число тактов;

6) условных и безусловных переходов;

7) работы с подпрограммами;

8) загрузки в регистры непосредственных операндов;

9) ввода-вывода;

10) управления вычислительным процессом.

Мнемоника

Название

Содержание

Флаги

Код

Форматы команд

Z

C

S

O

I

T

Арифметические операции с целыми числами

1

ADD

Сложение

R1<-R1+R2

+

+

+

+

-

-

0000001

1.1

2

ADDC

Сложение с учетом переноса

R1<-R1+R2+C

+

+

+

+

-

-

0000010

1.1

3

SUB

Вычитание

R1<-R1-R2

+

+

+

+

-

-

0000011

1.1

4

SUBC

Вычитание с учетом переноса

R1<-R1-R2-C

+

+

+

+

-

-

0000100

1.1

5

MUL

Умножение

без знака

R2,R1<-R1*R2

+

+

-

-

-

-

0000101

1.1*

6

DIV

Деление без знака

R2,R1<-R1\R2

+

+

-

-

-

-

0000110

1.1*

7

CP

Сравнение

R1-R2

+

+

+

-

-

-

0000111

1.1

Арифметические операции с числами с плавающей точкой

8

FADD

Сложение

F1<-F1+F2

+

-

+

+

-

-

1000001

1.1

9

FSUB

Вычитание

F1<-F1-F2

+

-

+

+

-

-

1000010

1.1

10

FMUL

Умножение

F1<-F1*F2

+

-

+

+

-

-

1000011

1.1

12

FDIV

Деление

F1<-F1/F2

+

-

+

+

-

-

1000100

1.1

Логические операции

13

AND

Поразрядное «И»

R1<-R1&R2

+

-

+

-

-

-

0001000

1.1

14

OR

Поразрядное «ИЛИ»

R1<-R1|R2

+

-

+

-

-

-

0001001

1.1

15

XOR

Поразрядное «Исключающее ИЛИ»

R1<-R1xorR2

+

-

+

-

-

-

0001010

1.1

16

CPL

Инверсия

R1<-~R1

+

-

+

-

-

-

0001011

1.3

17

SLL

Логический сдвиг влево

+

+

+

-

-

-

0001100

1.3

18

SRL

Логический сдвиг вправо

+

+

+

-

-

-

0001101

1.3

19

SRA

Арифметический сдвиг вправо

+

+

+

-

-

-

0001110

1.3

Переходы

20

JMP

Безусловный переход

PC<=<R1>

-

-

-

-

-

-

0001111

1.4

21

JZ

Переход по нулю

if (R1 = 0)

PC <- <R1> + K

else

PC <- PC + 1

-

-

-

-

-

-

0010000

2.2

22

JNZ

Переход не по нулю

if (R1 != 0)

PC <- <R1> + K

else

PC <- PC + 1

-

-

-

-

-

-

0010001

2.2

23

JO

Переход по переполнению

if (O = 1)

PC <- <R1>+ K

else

PC <- PC + 1

-

-

-

-

-

-

0010010

2.2

24

JNO

Переход не по переполнению

if (O= 0)

PC <- <R1> + K

else

PC <- PC + 1

-

-

-

-

-

-

0010011

2.2

25

JC

Переход по переносу

if (C = 1)

PC <- PC + K

else

PC <- PC + 1

-

-

-

-

-

-

0010100

2.2

26

JNC

Переход не по переносу

if (C = 0)

PC <- PC + K

else

PC <- PC + 1

-

-

-

-

-

-

0010101

2.2

27

JE

Переход, если равны

if (R1 = R2)

PC <- PC + 1

-

-

-

-

-

-

0010110

2.1

28

JNE

Переход, если не равны

if (R1 != R2)

PC <- PC + 1

-

-

-

-

-

-

0010111

2.1

Команды работы с памятью

29

LDDW

Загрузка двойного слова

R1<-<R2>

+

-

+

-

-

-

0011000

1.4

30

LDW

Загрузка слова

R1<-<R2>

+

-

+

-

-

-

0011001

1.4

31

LDB

Загрузка байта

R1<-<R2>

+

-

+

-

-

-

0011010

1.4

32

STDW

Запись двойного слова

R1<-<R2>

-

-

-

-

-

-

0011011

1.4

33

STW

Запись слова

R1<-<R2>

-

-

-

-

-

-

0011100

1.4

34

STB

Запись байта

R1<-<R2>

-

-

-

-

-

-

0011101

1.4

Специальные

35

MOV

Запись в регистр значения

R1<=R2

+

-

+

-

-

-

0011110

1.4

36

SFLG

Запись регистра флагов

R1<=F1

0011111

1.4

37

LFLG

Загрузка регистра флагов

F1<=R1

0100000

1.4

38

NOP

Нет операции

PC<=PC+1

-

-

-

-

-

-

0100001

1.2

39

CALL

Вызов подпрограммы

<PC><=R3

0100010

1.4

40

RET

Возврат из подпрограммы

0100011

1.4

41

IN

Ввод из порта

R2<=<R1>

0100100

1.4

42

OUT

Вывод в порт

<R1><=R2

0100101

1.4

43

INT

Вызов прерывания

<PC><=R3

F1<=R4

-

-

-

-

-

+

0100110

1.4

45

RETI

Возврат из прерывания

0100111

1.4

46

WAIT

Ожидать завершения вычисления сопроцессора

0101000

1.4

Пояснения к таблице

1.1* - при умножении и делении результат записывается не только в содержимое регистра R1, но и в содержимое регистра R2

Пояснения к командам

IN R2, R1 – прочитать из порта R1 в регистр R2.

OUT R1, R2 – записать в порт R1 значение регистра R2.

Команды сопроцессора

Все команды сопроцессора делятся на группы:

  1. Команды записи и чтения в регистры сопроцессора.

  2. Арифметические команды с плавающей точкой.

сложение, вычитание, умножение, деление

  1. Графические команды

Сопроцессор следит за операциями, поступающими на процессор, и если операция не предназначена сопроцессору, то он её игнорирует, иначе операция исполняется. Результат вместе с исключениями синхронно передается в центральный процессор.

Сопроцессор может генерировать исключения:

  1. Переполнение

  2. Деление на ноль

  3. Неверная операция

Соседние файлы в папке Материалы по Архитектуре