| [Назад] [Далее] | ![]() |
| 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).