124
FDIV ; ST(0) = ST(1) / ST(0) (с выталкиванием).
FDIVP ST(1), ST ; ST(0) = ST(1) / ST(0) (с выталкиванием).
FDIV ST(2) ; ST(0) = ST(0) / ST(2).
Дополнительные команды. К арифметическим командам также
относятся семь дополнительных команд, имеющих безоперандную форму, т.
е. работают с вершиной стека.
Команда FSQRT – извлечение квадратного корня, заменяет число,
находящееся в вершине стека, значением квадратного корня. При
использовании этой команды необходимо помнить об области определения
операнда (содержимое вершины стека должно быть больше или равно нулю).
Команда FSCALE – масштабирование интерпретирует содержимое
регистра ST(1) как целое двоичное число и прибавляет его к смещенному
порядку числа, находящегося в вершине стека:
FSCALE ; ST(0) = ST(0) * 2
ST(1)
Таким образом, команда FSCALE осуществляет быстрое умножение
(когда ST(1) > 0) или деление (когда ST(1) < 0) содержимого вершины стека
на целую степень 2. В этой команде предполагается, что масштабный
коэффициент в ST(1) является целым числом в диапазоне –2
15
< ST(1) < 2
15
.
Если он не является целым числом, но находится в указанном диапазоне и
больше по абсолютному значению 1, в команде принимается ближайшее
целое, меньшее по абсолютному значению исходного масштабного
коэффициента (усечение дробной части).
Команда FPREM вычисляет частичный остаток от деления числа,
находящегося в вершине стека ST(0), на следующий элемент стека ST(1) и
загружает результат в ST(0):
FPREM ; ST(0) = ST(0) – (q * ST(1)),
где q – целое число. Другими словами, содержимое ST(1) выступает модулем
в операции деления. Например, если ST(1) = 2, тогда получаем деление по
модулю 2. Знак остатка имеет знак исходного делимого, т. е. содержимого
ST(0).
Команда FRNDINT осуществляет округление числа, находящегося в
вершине стека ST(0), до целого. Режим округления показывает поля RC в
слове управления сопроцессора.
Команда FXTRACT выделяет компоненты числа с плавающей точкой,
преобразует число, находящееся в вершине стека ST(0), в два числа,
представляющих собой фактическое значение его порядка и мантиссы.
Выделенный порядок заменяет исходный операнд в вершине стека, а
мантисса включается в стек (с декрементом указателя стека). Например, если
в ST(0) находилось число 5.766754, то после выполнения команды FXTRACT
ST(0) = =1.4416885, а ST(1) = 2. Соответственно 5.766754 = 1.4416885*2
2
.