Сопроцессор использует шесть основных типов арифметических команд:
Команда |
Описание |
Fxxx |
Первый операнд берется из верхушки стека (источник), второй - следующий элемент стека. Результат выполнения команды записывается в стек |
Fxxx память |
Источник берется из памяти, приемником является верхушка стека ST(0). Указатель стека ST не изменяется, команда действительна только для операндов с одинарной и двойной точностью |
Fixxx память |
Аналогично предыдущему типу команды, но операндами могут быть 16- или 32-разрядные целые числа |
Fxxx ST, ST(i) |
Для этого типа регистр ST(i) является источником, а ST(0) - верхушка стека – приемником. Указатель стека не изменяется |
Fxxx ST(i), ST |
Для этого типа регитр ST(0) является источником, а ST(i) - приемником. Указатель стека не изменяется |
FxxxP ST(i), ST |
Регистр ST(i) - приемник, регистр ST(0) – источник. После выполнения команды источник ST(0) извлекается из стека |
Строка "xxx" может принимать следующие значения:
Значение |
Операция |
ADD |
Сложение |
SUB |
Вычитание |
SUBR |
Обратное вычитание, уменьшаемое и вычитаемое меняются местами |
MUL |
Умножение |
DIV |
Деление |
DIVR |
Обратное деление, делимое и делитель меняются местами |
Кроме основных арифметических команд имеются дополнительные арифметические команды:
Команда |
Описание |
FSQRT |
Извлечение квадратного корня |
FSCALE |
Масштабирование на степень числа 2 |
FPREM |
Вычисление частичного остатка |
FRNDINT |
Округление до целого |
FXTRACT |
Выделение порядка числа и мантиссы |
FABS |
Вычисление абсолютной величины числа |
FCHS |
Изменение знака числа |
По команде FSQRT вычисленное значение квадратного корня записывается в верхушку стека ST(0).
Команда FSCALE изменяет порядок числа, находящегося в ST(0). По этой команде значение порядка числа ST(0) складывается с масштабным коэффициентом, который должен быть предварительно записан в ST(1). Действие этой команды можно представить следующей формулой: