Коды условий после сравнения. Элементарные трансцендентные функции. Формулы для вычисления тригонометрических функций. Команды управления сопроцессора х87. Формулы для вычисления показательный и гиперболических функций. Инициализация сопроцессора х87.
Аннотация к работе
Дополнительные арифметические команды без явных операндов выполняют действия над содержимым вершины стека, результат помещают туда же БЕЗ МОДИФИКАЦИИ УКАЗАТЕЛЯ СТЕКА. O FSCALE - масштабирование на степень числа 2 - прибавляет целое число из ST(1) к порядку в регистре ST(0), т.е. умножает (или делит) ST(0) на число 2(ST(1)). O FXTRACT - разлагает содержимое ST(0) на два числа: несмещенный порядок (замещает старое значение в ST(0)) и знаковую мантиссу (включаемую сверху, т.е. в ST(7)). Команда FSCALE, находящаяся после команды FXTRACT, восстанавливает исходное число. Команды сравнений включают: O FCOM ST(i)/mem - сравнивает содержимое ST(0) с операндом "x" (в численном регистре или в памяти), т.е. производит вычитание операндов без запоминания результата и устанавливает коды условий в регистре состояния (таблица 1).К элементарным трансцендентным функциям относятся: O тригонометрические функции (sin, cos, tg и др.), O обратные тригонометрические функции (arcsin, arctg и др.), O логарифмические функции (log2(x), log10(x), loge(x)), O показательные функции (xy, 2x, 10x, ex), O гиперболические функции (sh, ch, th и др.), O обратные гиперболические функции (arsh, arch, arth и др.). Команда FPTAN нахождения частичного тангенса в качестве результата выдает два числа (сопроцессоры 87/287): y / x = tg (ST(0)). Две команды FPTAN и FDIV выбирают аргумент из вершины стека и туда же помещают значение тангенса (БЕЗ МОДИФИКАЦИИ УКАЗАТЕЛЯ ВЕРШИНЫ СТЕКА). Для команды FPTAN аргумент задается в радианах и должен находится в диапазоне (сопроцессоры 87/287): 0 <= ST(0) <= 1/4. Команды FSIN и FCOS возвращают результат на место аргумента, а команда FSINCOS возвращает значение синуса на место аргумента и включает значение косинуса в стек.
Введение
Дополнительные арифметические команды без явных операндов выполняют действия над содержимым вершины стека, результат помещают туда же БЕЗ МОДИФИКАЦИИ УКАЗАТЕЛЯ СТЕКА.
O FABS - нахождение абсолютной величины.
O FCHS - изменение знака операнда.
O FRNDINT - округление операнда до целого в формате с плавающей точкой.
O FSQRT - извлечение квадратного корня.
O FPREM - вычисляет остаток от деления содержимого ST(0) на число из ST(1). Остаток замещает число в ST(0).
O FSCALE - масштабирование на степень числа 2 - прибавляет целое число из ST(1) к порядку в регистре ST(0), т.е. умножает (или делит) ST(0) на число 2(ST(1)). Эту команду можно использовать для возведения числа 2 в целую степень (положительную или отрицательную).
O FXTRACT - разлагает содержимое ST(0) на два числа: несмещенный порядок (замещает старое значение в ST(0)) и знаковую мантиссу (включаемую сверху, т.е. в ST(7)).
Команда FSCALE, находящаяся после команды FXTRACT, восстанавливает исходное число.
Все дополнительные арифметические команды группируются в три группы: - команды сравнений: - трансцендентные команды;
- команды управления сопроцессора х87.
1.
КОМАНДЫ СРАВНЕНИЙ
Команды сравнений включают: O FCOM ST(i)/mem - сравнивает содержимое ST(0) с операндом "x" (в численном регистре или в памяти), т.е. производит вычитание операндов без запоминания результата и устанавливает коды условий в регистре состояния (таблица 1).
Таблица 1 - Коды условий после сравнения
С3 С0 Условие
0 0 1 1 0 1 0 1 ST(0) > x ST(0) < x ST(0) = x ST(0) и x - не сравнимы
O FICOM mem - сравнивает содержи мое вершины стека ST(0) с целым числом в памяти.
O FCOMP ST(i)/mem - аналогична команде FCOM, но после сравнения производит извлечение операнда из вершины стека.
O FCOMPP ST(i) - сравнивает ST(0) c ST(i) и извлекает из стека оба операнда.
O FTST - сравнивает вершину стека с нулем.
O FXAM - сравнивает вершину стека с нулем, но выставляет 4 флага условий (в частности, определяется ненормализованная мантисса, бесконечность, нечисло и др.).
O FCOMI ST(0),ST(i) - сравнение вещественных чисел и установка флагов в EFLAGS (P6 ).
O FCOMIP ST(0),ST(i) - сравнение вещественных чисел и установка флагов в EFLAGS и извлечение операнда из вершины стека (P6 ).
Флаги условий (С0, С3) сопроцессора х87 используются для организации условных переходов микропроцессором х86. Для этого командой - FSTSW AX - содержимое регистра состояния х87 копируется в аккумулятор АХ микропроцессора х86. После этого командой - SAHF - старший байт аккумулятора (АН) передается в младший байт регистра флагов. При этом условию С0 соответствует флаг CF, а условию С3 - флаг ZF.