[Назад] [Далее] | |
FADD приемник,источник | |
Сложение вещественных чисел | |
FADDP приемник,источник | |
Сложение с выталкиванием из стека | |
FIADD источник | |
Сложение целых чисел | |
8087 |
Команда выполняет сложение источника и приемника и помещает результат в приемник. Команда FADDP после этого выталкивает ST(0) из стека (помечает ST(0) как пустой и увеличивает ТОР на один). Команды сложения могут принимать следующие формы:
FSUB приемник,источник | |
Вычитание вещественных чисел | |
FSUBP приемник,источник | |
Вычитание с выталкиванием из стека | |
FISUB источник | |
Вычитание целых чисел | |
8087 |
Выполняет вычитание источника из приемника и сохраняет результат в приемнике. Команда FSUBP после этого выталкивает ST(0) из стека (помечает ST(0) как пустой и увеличивает ТОР на один). Команды вычитания могут принимать следующие формы:
Если один из операндов — бесконечность, результат — бесконечность соответствующего знака. Если оба операнда — бесконечности одного знака, результат не определен (происходит исключение «недопустимая операция»).
FSUBR приемник,источник | |
Обратное вычитание вещественных чисел | |
FSUBRP приемник,источник | |
Обратное вычитание с выталкиванием | |
FISUBR источник | |
Обратное вычитание целых чисел | |
8087 |
Эти команды эквивалентны FSUB/FSUBP/FISUB во всем, кроме того, что они выполняют вычитание приемника из источника, а не источника из приемника.
FMUL приемник,источник | |
Умножение вещественных чисел | |
FMULP приемник,источник | |
Умножение с выталкиванием из стека | |
FIMUL источник | |
Умножение целых чисел | |
8087 |
Выполняет умножение источника и приемника и помещает результат в приемник. Команда FMULP после этого выталкивает ST(0) из стека (помечает ST(0) как пустой и увеличивает ТОР на один). Так же как и остальные команды базовой арифметики, команды умножения могут принимать следующие формы:
FDIV приемник,источник | |
Деление вещественных чисел | |
FDIVP приемник,источник | |
Деление с выталкиванием из стека | |
FIDIV источник | |
Деление целых чисел | |
8087 |
Выполняет деление приемника на источник и сохраняет результат в приемнике. Команда FDIVP после этого выталкивает ST(0) из стека (помечает ST(0) как пустой и увеличивает ТОР на один). Команды могут принимать следующие формы:
При делении бесконечности на ноль (так же как и на любое число) результат — бесконечность, при делении нуля на бесконечность (так же как и на любое число) результат — ноль. При делении на ноль нормального числа происходит исключение деления на ноль, а если флаг ZM = 1, в качестве результата записывается бесконечность соответствующего знака.
FDIVR приемник,источник | |
Обратное деление вещественных чисел | |
FDIVRP приемник,источник | |
Обратное деление с выталкиванием | |
FIDIVR источник | |
Обратное деление целых чисел | |
8087 |
Эти команды эквивалентны FDIV/FDIVP/FIDIV во всем, кроме того, что они выполняют деление источника на приемник, а не приемника на источник.
FPREM | |
Найти частичный остаток от деления | |
8087 | |
FPREM1 | |
Найти частичный остаток в стандарте IEEE | |
80387 |
Эти команды выполняют деление ST(0) на ST(1) и помещают остаток от деления в ST(0). Деление осуществляется при помощи последовательных вычитаний ST(1) из ST(0), но за один раз выполняется не более 64 таких вычитаний. Если ST(0) не стал меньше ST(1) за это время, говорят, что в ST(0) находится частичный остаток от деления. Если был получен точный остаток, флаг С2 сбрасывается в 0, если частичный — устанавливается в 1, так что можно повторять эту команду до обнуления С2. Если вычисление привело к точному остатку, три младших бита частного (то есть числа потребовавшихся вычитаний) сохраняются в С0, С3, С1 (биты 2, 1, 0 соответственно). Например, используя FPREM1, можно уменьшить аргумент тангенса, вычислив его остаток от деления на /4, тогда потребуются младшие три бита частного, чтобы определить, не поменялся ли при этой операции знак тангенса.
Различие между FPREM и FPREM1 заключается в разном определении значения частного. Сначала эти команды выполняют вещественное деление ST(0) на ST(1), округляют результат (FPREM1 — к ближайшему целому, FPREM — к нулю), а затем, если частное меньше 64, вычисляяют точный остаток, а если больше — частичный.
FABS | |
Найти абсолютное значение | |
8087 |
Если ST(0) был отрицательным числом — переводит его в положительное.
FCHS | |
Изменить знак | |
8087 |
Изменяет знак ST(0), превращая положительное число в отрицательное, и наоборот.
FRNDINT | |
Округлить до целого | |
8087 |
Округляет значение ST(0) до целого числа в соответствии с режимом округления, заданным битами RC.
FSCALE | |
Масштабировать по степеням двойки | |
8087 |
Умножает ST(0) на два в степени ST(1) и записывает результат в ST(0). Значение ST(1) предварительно округляется в сторону нуля до целого числа. Эта команда выполняет действие, обратное FXTRACT.
FXTRACT | |
Извлечь экспоненту и мантиссу | |
8087 |
Разделяет число в ST(0) на мантиссу и экспоненту, сохраняет экспоненту в ST(0) и помещает мантиссу в стек, так что после этого ТОР уменьшается на 1, мантисса оказывается в ST(0), а экспонента — в ST(1).
FSQRT | |
Извлечь квадратный корень | |
8087 |
Вычисляет квадратный корень из ST(0) и сохраняет результат в ST(0).