Дополнительные арифметические команды
Далее перечислены команды, входящие в группу дополнительных арифметических команд:
FSQRT — вычисление квадратного корня из значения, находящегося в вершине стека сопроцессора — регистре ST(0). Команда не имеет операндов. Результат вычисления помещается в регистр ST(0).
FABS — вычисление модуля значения, находящегося в вершине стека сопроцессора — регистре ST(0). Команда не имеет операндов. Результат вычисления помещается в регистр ST(0);
FCHS — изменение знака значения, находящегося в вершине стека сопроцессора — регистре ST(0). Команда не имеет операндов. Результат вычисления помещается обратно в регистр ST(0). Отличие команды FCHS от команды FABS в том, что команда FCHS только инвертирует знаковый разряд значения в регистре ST(0), не меняя значения остальных битов. Команда вычисления модуля FABS при наличии отрицательного значения в регистре ST(0), наряду с инвертированием знакового разряда, выполняет изменение остальных битов значения таким образом, чтобы в ST(0) получилось соответствующее положительное число.
FXTRACT — команда выделения порядка и мантиссы значения, находящегося в вершине стека сопроцессора — регистре ST(0). Команда не имеет операндов. Результат выделения помещается в два регистра стека — мантисса в ST(0), а порядок в ST(1). При этом мантисса представляется вещественным числом с тем же знаком, что и у исходного числа, и порядком равным нулю. Порядок, помещенный в ST(1), представляется как истинный порядок, то есть без константы смещения, в виде вещественного числа со знаком и соответствует величине Р формулы (17.1).
Команда масштабирования
FSCALE – Эта команда изменяет порядок значения, находящегося в вершине стека сопроцессора – регистре ST(0), на величину в ST(1). Команда не имеет операндов. Величина в ST(1)рассматривается как число со знаком. Его прибавление к полю порядка вещественного числа в st(0)означает его умножение на величину 2
Сопроцессор имеет программно-аппаратные средства для округления тех результатов работы команд, которые не могут быть точно представлены. Но операция округления может быть проведена к значению в регистре st(0) и принудительно, для этого предназначена последняя команда в группе дополнительных команд — команда FRNDINT. Эта команда округляет до целого значение, находящееся в вершине стека сопроцессора — регистре st(0). Команда не имеет операндов.
Возможны четыре режима округления величины в ST(0), которые определяются значениями в двухразрядном поле RC управляющего регистра сопроцессора. Как изменить режим округления? С помощью двух команд FSTCWR и FLDCWR, которые, соответственно, записывают в память содержимое управляющего регистра сопроцессора и восстанавливают его обратно. Таким образом, пока содержимое этого регистра находится в памяти, вы имеете возможность установить необходимое значение поля RC.
Дата добавления: 2015-04-15; просмотров: 1025;