Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Приложение. Набор команд сопроцессора




Операнды любых команд могут быть закодированы несколькими способами. Например, команда FADD (сложение вещественное) может быть записана без операндов, только с операндом-источником или и с источником, и с приемником. При описании команд для разделения альтернативных форм представления операндов используется наклонная черта, причем черта без последующей спецификации означает отсутствие явно задаваемых операндов. Таким образом, для команды FADD возможные комбинации операндов будут представлены как:

//источник/приемник, источник

Это означает, что, например, команда FADD может быть записана в одной из следующих форм:

FADD

FADD источник

FADD приемник, источник.

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

В мнемониках команд приняты следующие соглашения:

первая буква всегда F (Floating) и обозначает команду сопроцессора;

вторая буква I (Integer) обозначает операцию с целыми числами, буква B (BCD) – с целыми в BCD-формате, отсутствие букв I и B – операцию с вещественными числами;

предпоследняя или последняя буква R Reversed) указывает обратную операцию;

последняя буква P (Pop) идентифицирует команду, заканчивающуюся извлечением из стека.

Для некоторых команд управления работой сопроцессора имеются альтернативные мнемоники, второй буквой которых является N (например, FSAVE/FNSAVE). Мнемоники такого типа сообщают ассемблеру, автоматически вставляющему в программе для процессора 8086 перед каждой командой сопроцессора команду WAIT (ожидания), что перед этой командой вставлять WAIT не нужно. Команды с такой формой игнорируют незамаскированные ошибки, а команды с ожиданием контролируют их наличие.

 

Система команд сопроцессора

Мнемоника Операнды Описание
Команды пересылки данных
FLD ST(i) Загрузка новой вершины стека
  short_real  
  long_real  
  temp_real  
FBLD bcd  
FILD word_integer  
  short_integer  
  long_integer  
FSTP ST(i) Извлечение из стека
  short_real  
  long_real  
  temp_real  
FISTP word_integer  
  short_integer  
  long_integer  
FBSTP bcd  
FST ST(i) Копирование вершины стека
  short_real  
  long_real  
FIST word_integer  
  short_integer  
FXCH //ST(i) Обмен вершины стека с заданным регистром стека
FLDLG2   Загрузка новой вершины стека константой lg2
FLDLN2   Загрузка новой вершины стека константой ln2
FLDL2E   Загрузка новой вершины стека константой log2e
FLDL2T   Загрузка новой вершины стека константой log210
FLDPI   Загрузка новой вершины стека константой π
FLDZ   Загрузка новой вершины стека нулем
FLD1   Загрузка новой вершины стека единицей
Команды арифметических операций
Базовые арифметические команды
FADD //ST, ST(i) / ST(i), ST Сложение
  short_real  
  long_real  
FADDP ST(i), ST  
FIADD word_integer  
  short_integer  
FSUB //ST, ST(i) / ST(i), ST Вычитание
  short_real  
  long_real  
FSUBP ST(i),ST  
FISUB word_integer  
  short_integer  
FSUBR //ST, ST(i) / ST(i), ST  
  short_real  
  long_real  
FSUBRP ST(i), ST  
FISUBR word_integer  
  short_integer  
FMUL //ST, ST(i) / ST(i), ST Умножение
  short_real  
  long_real  
FMULP ST(i), ST  
FIMUL word_integer  
  short_integer  
FDIV //ST, ST(i) /ST(i), ST Деление
  short_real  
  long_real  
FDIVP ST(i), ST  
FIDIV word_integer  
  short_integer  
FDIVR //ST, ST(i) /ST(i), ST  
  short_real  
  long_real  
FDIVRP ST(i), ST  
FIDIVR word_integer  
  short_integer  
Дополнительные арифметические команды
FABS   Нахождение модуля
FCHS   Смена знака
FSQRT   Извлечение квадратного корня
FRNDINT   Округление до целого
FPREM   Нахождение частичного остатка
FSCALE   Масштабирование
FXTRACT   Нахождение мантиссы и несмещенного порядка
Команды сравнения
FCOM // ST(i) Сравнение
  short_real
  long_real
FCOMP //ST(i) Сравнение с извлечением из стека
  short_real
  long_real
FCOMPP   Сравнение с двойным извлечением из стека
FICOM word_integer Сравнение с целым операндом в памяти
  short_integer
FICOMP word_integer Сравнение с целым операндом в памяти и извлечение из стека
  short_integer
FCOMI ST,ST(i) Сравнение и установка флагов CF, ZF центрального процессора (начиная с Pentium II). Машинный код: db 0dbh, 0fih.
FCOMIP   Сравнение с извлечением из стека и установка флагов CF, ZF центрального процессора (начиная с Pentium II). Машинный код: db 0dfh, 0fih.
FTST   Сравнение с нулем
FXAM   Проверка содержимого st(0)
Трансцендентные команды
FPATAN   Вычисление частичного арктангенса
FPTAN   Вычисление частичного тангенса
FCOS   Вычисление косинуса (начиная с 80387)
FSINCOS   Вычисление синуса и косинуса (начиная с 80387)
F2XM1   Вычисление функции 2 x - 1
FYL2X   Вычисление функции y log2 x
FYL2XP1   Вычисление функции y log2 (x +1)
Команды управления
FCLEX   Сброс флагов ошибок, флага запроса на прерывание и флага занятости в слове состояния
FNCLEX  
FDECSTP   Уменьшение на 1 указателя стека в слове состояния
FDISI   Запрещение прерываний в слове состояния
FNDISI  
FENI   Разрешение прерываний в слове состояния
FNENI  
FFREE ST(i) Освобождение регистра в слове тэгов
FINCSTP   Увеличение на 1 указателя стека в слове состояния
FINIT   Инициализация (сброс) сопроцессора
FNINIT  
FLDCW word Загрузка слова управления
FLDENV address Загрузка программной среды сопроцессора (всех регистров, кроме стековых)
FNOP   Пустая операция
FRSTOR address Загрузка полного состояния сопроцессора (всех регистров, включая стековые)
FSAVE address Сохранение полного состояния сопроцессора (всех регистров, включая стековые)
FNSAVE address
FSTCW word Сохранение слова управления
FSTENV address Сохранение программной среды сопроцессора (всех регистров, кроме стековых)
FSTSW word Сохранение слова состояния в памяти
FNSTSW word
FSTSW AX   Сохранение слова состояния в регистре AX центрального процессора (начиная с 80287)
FWAIT   Ожидание (альтернативная мнемоника команды центрального процессора WAIT)

 

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...