Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
A_K_2-2.doc
Скачиваний:
11
Добавлен:
18.11.2019
Размер:
478 Кб
Скачать
☆

Арифметические команды

Базовые арифметические команды – сложение, вычитание умножение и деление – имеют два операнда (источник и приемник) и реализуют действия:

ПРИЕМНИК  ПРИЕМНИК $ ИСТОЧНИК,

где: $ - основные команды : +, –, *, / .

Для некоммутативных команд вычитания и деления имеются обратные варианты команд (в конце мнемоники добавляется буква R – reveres):

ПРИЕМНИК  ИСТОЧНИК $ ПРИЕМНИК.

ВО ВСЕХ КОМАНДАХ ОДИН ОПЕРАНД ДОЛЖЕН БЫТЬ В ВЕРШИНЕ СТЕКА. Мнемоники всех базовых арифметических команд приведены в табл. 2.25.

Таблица 2.25 – Мнемоники базовых арифметических команд

Команды

Основная

Целое в памяти

С извлечением

Сложение

Вычитание

Обратное вычитан.

Умножение

Деление

Обратное деление

FADD

FSUB

FSUBR

FMUL

FDIV

FDIVR

FIADD

FISUB

FISUBR

FIMUL

FIDIV

FIDIVR

FADDP

FSUBP

FSUBRP

FMULP

FDIVP

FDIVRP

Имеется 6 форм базовых команд. Действия всех шести форм команд иллюстрируется на примере команды вычитания.

  • FSUB mem,

  • FISUB mem – адресуемый операнд в памяти является источником, а регистр вершины стека ST(0) – приемником. Преобразование в расширенный формат с плавающей точкой осуществляется в процессе выполнения команды. УКАЗАТЕЛЬ СТЕКА НЕ МОДИФИЦИРУЕТСЯ.

  • FSUB ST, ST(i) – любой численный регистр ST(i) служит источником, а ST(0) – приемником. УКАЗАТЕЛЬ СТЕКА НЕ МОДИФИЦИРУЕТСЯ.

  • FSUB ST(i), ST – вершина стека является источником, а ST(i) - приемником. УКАЗАТЕЛЬ СТЕКА НЕ МОДИФИЦИРУЕТСЯ.

  • FSUBP ST(i), ST – вершина стека является источником, а ST(i) – приемником. По окончании операции источник ST(0) извлекается из стека с последующим ИНКРЕМЕНТОМ УКАЗАТЕЛЯ СТЕКА (рис. 2.16).

  • FSUB – (команда с классической стековой адресацией – использует только ST1, ST0) – извлекает из вершины стека источник (потом инкрементирует указатель стека), затем извлекает приемник (еще раз инкрементирует указатель стека), выполняет операцию и перед включением результата в стек декрементирует указатель. В итоге – ВЕРШИНА СТЕКА СДВИНУЛАСЬ В СТОРОНУ УВЕЛИЧЕНИЯ (рис. 2.17). Последняя форма является частным случаем предыдущей.

ST

x

ST(0)

y

ST(1)

ST

y

ST(0)

z

ST(i)

z - x

ST(i-1)

Рис. 2.16 – Действие команды FSUBP ST(i),ST

ST

x

ST(0)

y

ST(1)

ST

y - x

ST(0)

z

z

Рис. 2.17 – Действие команды FSUB

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