Скачиваний:
46
Добавлен:
03.06.2014
Размер:
676.35 Кб
Скачать

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

Обязательно надо сказать о реакции центрального процессора и сопроцессора на сигнал аппаратного сброса RESET. Вообще, в принципе, можно при сбросе менять только значение PCR и управляющих флагов, а остальные регистры оставлять без изменения. Но для удобства программиста при сбросе я решил инициализировать все регистры.

Арифметические операции с ПТ

FADD

Сложение

<F0><= <F1>+<F2>

+

+

+

+

-

-

-

0111000

-

FSUB

Вычитание

<F0><= <F1>-<F2>

+

+

+

+

-

-

-

0111001

-

FMUL

Умножение

<F0><= <F1>*<F2>

+

+

+

+

-

-

-

0111010

-

FDIV

Деление

<F0><= <F1>/<F2>

+

+

+

+

-

-

-

0111011

-

FMOV

Обмен RG<>RG

F0<=<F1>

-

-

-

-

-

-

-

0111100

-

FRDW

Чтение

<F0><= <R1>+R2

-

-

-

-

-

-

-

0111101

-

FWRW

Запись

<F0><= <R1>+R2

-

-

-

-

-

-

-

0111110

-

MFC

Преобр ПТ-ФТ

<R0><= <F1>

+

+

+

+

-

-

-

0111111

-

MCF

Преобр ФТ-ПТ

<R0>=> <F1>

+

-

+

+

-

-

-

1000000

-

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

Эти операции используются для загрузки данных и записи их в память. Поскольку разрядность регистров – 32 разряда, то загрузка 64-х разрядных чисел должна осуществляться посредством выполнения операции загрузки слова дважды для разных адресов. Аналогично поступать и с записью данных в память.

  1. целочисленные арифметические для чисел со знаком и без знака:

Позволяют выполнять все операции над числами с ФТ. Сравнение выполняется программно посредством выполнения операций перехода по меньше нуля и по не меньше нуля.

  1. арифметические с ПТ:

Аналогично допускают выполнение различных операций над числами с ПТ.

  1. логические:

Позволяют выполнять обычные логические операции, а также циклический сдвиг вправо и влево.

  1. условные и безусловные переходы:

Предусмотрены различные способы переходов, в том числе по сравнению признаков или безусловно.

  1. работы с подпрограммами:

Используются вызов подпрограммы, переход в системный режим и возврат из него, а также вызов прерывания.

  1. ввод-вывод:

Ввод-вывод осуществляется при загрузке данных по особым адресам памяти или при чтении из памяти, поскольку работа с портами организована как с обычными ячейками памяти.

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

Доступны команды смены режима, вызова подпрограмм, программные прерывания, пропуск операции, ожидание захвата шины.

Name

Содержание

Функция

Флаги

Код

Сист.

режим

Z

C

S

O

I

T

U

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

RDW

Чтение слова

<R0><= <R1>+R2

-

-

-

-

-

-

-

0000010

-

WRW

Запись слова

<R0>=> <R1>+R2

-

-

-

-

-

-

-

0000101

-

MOV

Обмен RG<>RG

<R0><=<R0>

-

-

-

-

-

-

-

0000110

-

MOVD

Обмен RG<>RG

<R0><=<R0>

-

-

-

-

-

-

-

0000111

-

MOVI

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

<R0><= R2

-

-

-

-

-

-

-

0001000

-

Арифметические операции с ФТ

ADDS

Сложение

(со знаком)

<R0><= <R1>+<R2>

+

+

+

+

-

-

-

0001001

-

SUBS

Вычитание

(со знаком)

<R0><= <R1>-<R2>

+

+

+

+

-

-

-

0001010

-

MULS

Умножение

(со знаком)

<R0><= <R1>*<R2>

+

+

+

+

-

-

-

0001011

-

DIVS

Деление

(со знаком)

<R0><= <R1>/<R2>

+

+

+

-

-

-

-

0001100

-

ADD

Сложение

(без знака)

<R0><= <R1>+R2

+

+

+

+

-

-

-

0001101

-

SUB

Вычитание

(без знака)

<R0><= <R1>-R2

+

+

+

+

-

-

-

0001110

-

MUL

Умножение

(без знака)

<R0><= <R1>*R2

+

+

+

+

-

-

-

0001111

-

DIV

Деление

(без знака)

<R0><= <R1>/R2

+

+

+

-

-

-

-

0010000

-

Логические оперции с ФТ

AND

«И»

<R0><= <R1>&<R2>

+

-

+

-

-

-

-

0010001

-

OR

«ИЛИ»

<R0><= <R1>v<R2>

+

-

+

-

-

-

-

0010010

-

XOR

Искл «ИЛИ»

<R0><= <R1>^<R2>

+

-

+

-

-

-

-

0010011

-

NOT

«НЕ»

<R0><= ~<R1>

+

-

+

-

-

-

-

0010100

-

RCL

Cдвиг влево

-

+

-

+

-

-

-

0010101

-

RCR

Cдвиг вправо

-

+

-

+

-

-

-

0010110

-

Команды переходов и прерываний

CLI

Очистить флаг разрешения прерываний

0

0010111

-

STI

Разрешить прерывания

1

0011000

-

INT

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

<R7><=PC

<R6><=flags

+

+

+

+

+

+

+

0011001

-

IRET

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

<PC><=R7

flags<=R6

+

+

+

+

+

+

+

0011010

-

CALL

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

<R7><=PC

PC<=<R1>+R2

-

-

-

-

-

-

-

0011011

-

RET

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

<PC><=R7

-

-

-

-

-

-

-

0011100

-

JMP

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

PC<=<R1>+R2

-

-

-

-

-

-

-

0011101

-

JZ

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

PC<=<R1>+R2

+

-

-

-

-

-

-

0011110

-

JNZ

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

PC<=<R1>+R2

+

-

-

-

-

-

-

0011111

-

JO

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

PC<=<R1>+R2

-

-

-

+

-

-

-

0100000

-

JNO

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

PC<=<R1>+R2

-

-

-

+

-

-

-

0100001

-

JC

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

PC<=<R1>+R2

-

+

-

-

-

-

-

0100010

-

JNC

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

PC<=<R1>+R2

-

+

-

-

-

-

-

0100011

-

JS

Переход по меньше нуля

PC<=<R1>+R2

-

-

+

-

-

-

-

0100100

-

JNS

Переход по не меньше нуля

PC<=<R1>+R2

-

-

+

-

-

-

-

0100101

-

Специальные операции

RFL

Чтение флагов

<R1><=Flags

-

-

-

-

-

-

-

0100110

+

WFL

Запись флагов

<R1>=>Flags

+

+

+

+

+

+

+

0100111

+

RTLB

Чтение TLBP

<R1><=TLBP

-

-

-

-

-

-

-

0101110

+

WTLB

Запись TLBP

<R1>=>TLBP

-

-

-

-

-

-

-

0101111

+

RTIN

Чтение TINT

<R1><=TINT

-

-

-

-

-

-

-

0110000

+

WTIN

Запись TINT

<R1>=>TINT

-

-

-

-

-

-

-

0110001

+

RFE

Возврат в пользователя

-

-

-

-

-

-

0

0110010

+

SCALL

Переход в супервизора

-

-

-

-

-

-

1

0110011

-

NOP

Нет операции

PC<=<PC>+1

-

-

-

-

-

-

-

0110101

-

Соседние файлы в папке kurs