Введение
Дополнительные арифметические команды без явных операндов выполняют действия над содержимым вершины стека, результат помещают туда же БЕЗ МОДИФИКАЦИИ УКАЗАТЕЛЯ СТЕКА.
Ø FABS – нахождение абсолютной величины.
Ø FCHS – изменение знака операнда.
Ø FRNDINT – округление операнда до целого в формате с плавающей точкой.
Ø FSQRT – извлечение квадратного корня.
Ø FPREM – вычисляет остаток от деления содержимого ST(0) на число из ST(1). Остаток замещает число в ST(0).
Ø FSCALE – масштабирование на степень числа 2 – прибавляет целое число из ST(1) к порядку в регистре ST(0), т.е. умножает (или делит) ST(0) на число 2(ST(1)). Эту команду можно использовать для возведения числа 2 в целую степень (положительную или отрицательную).
Ø FXTRACT – разлагает содержимое ST(0) на два числа: несмещенный порядок (замещает старое значение в ST(0)) и знаковую мантиссу (включаемую сверху, т.е. в ST(7)).
Команда FSCALE, находящаяся после команды FXTRACT, восстанавливает исходное число.
Все дополнительные арифметические команды группируются в три группы:
- команды сравнений:
- трансцендентные команды;
- команды управления сопроцессора х87.
Команды сравнений включают:
Ø 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 – не сравнимы |
Ø FICOM mem – сравнивает содержи мое вершины стека ST(0) с целым числом в памяти.
Ø FCOMP ST(i)/mem – аналогична команде FCOM, но после сравнения производит извлечение операнда из вершины стека.
Ø FCOMPP ST(i) – сравнивает ST(0) c ST(i) и извлекает из стека оба операнда.
Ø FTST – сравнивает вершину стека с нулем.
Ø FXAM – сравнивает вершину стека с нулем, но выставляет 4 флага условий (в частности, определяется ненормализованная мантисса, бесконечность, нечисло и др.).
Ø FCOMI ST(0),ST(i) – сравнение вещественных чисел и установка флагов в EFLAGS (P6+).
Ø FCOMIР ST(0),ST(i) – сравнение вещественных чисел и установка флагов в EFLAGS и извлечение операнда из вершины стека (P6+).
Флаги условий (С0, С3) сопроцессора х87 используются для организации условных переходов микропроцессором х86. Для этого командой – FSTSW AX – содержимое регистра состояния х87 копируется в аккумулятор АХ микропроцессора х86. После этого командой – SAHF – старший байт аккумулятора (АН) передается в младший байт регистра флагов. При этом условию С0 соответствует флаг СF, а условию С3 - флаг ZF.
2. ТРАНСЦЕНДЕНТНЫЕ КОМАНДЫК элементарным трансцендентным функциям относятся:
Ø тригонометрические функции (sin, cos, tg и др.),
Ø обратные тригонометрические функции (arcsin, arctg и др.),
Ø логарифмические функции (log2(x), log10(x), loge(x)),
Ø показательные функции (xy, 2x, 10x, ex),
Ø гиперболические функции (sh, ch, th и др.),
Ø обратные гиперболические функции (arsh, arch, arth и др.).
Таблица 2 – Трансцендентные команды
Мнемоника | Описание команды | Вычисляемая функция |
FPTAN | Частичный тангенс | ST(1) / ST(0) = tg (ST(0)) |
FSIN | Синус(387+) | ST(0) = sin (ST(0)) |
FCOS | Косинус (387+) | ST(0) = cos (ST(0)) |
FSINCOS | Синус, косинус (387+) | ST(7) = sin (ST(0)); ST(0) = cos (ST(0)) |
FPATAN | Частичный арктангенс | ST(0) = arctg (ST(1)/ST(0) |
FYL2X | Двоичный логарифм | ST(0) = ST(1) * log2 (ST(0)) |
FYL2XP1 | Двоичный логарифм | ST(0) = ST(1) * log2 (ST(0)+1) |
F2XM1 | Показательная функция | ST(0) = 2(ST(0)) – 1 |
Сопроцессор х87 вычисляет любую из элементарных трансцендентных функций от аргументов двойной точности, давая результат двойной точности с ошибкой младшего разряда округления. Аргументы трансцендентных команд должны быть нормализованными.
Команда FPTAN нахождения частичного тангенса в качестве результата выдает два числа (сопроцессоры 87/287):
y / x = tg (ST(0)).
Число «y» заменяет старое содержимое ST(0), а число «x» включается сверху. Поэтому, после выполнения команды указатель стека уменьшится на 1, число «х» будет записано в новую вершину стека ST(0), а число «y» – в регистр ST(1).
Для получения значения тангенса необходимо выполнить команду FDIV. Две команды FPTAN и FDIV выбирают аргумент из вершины стека и туда же помещают значение тангенса (БЕЗ МОДИФИКАЦИИ УКАЗАТЕЛЯ ВЕРШИНЫ СТЕКА). Две команды FPTAN и FDIVR вычисляют значение котангенса.
Для команды FPTAN аргумент задается в радианах и должен находится в диапазоне (сопроцессоры 87/287):
... регистра Rд и аккумулятора (регистра А) и результат сложения запоминает в аккумуляторе. - CARRY - регистра признаков. Разряд (флаг) переноса играет большую роль при выполнении микропроцессором арифметических операций и работает девятым разрядом аккумулятора. По флагу командами IC и INC можно осуществить переход. Применяется он так же при сложении чисел длиннее восьми разрядов, выполняя функции ...
... изменения сегмента (Segment Override). В системе команд насчитывается несколько сотен инструкций, поэтому в данной работе обзорно рассмотрены все команды обработки данных (блоков процессора АЛУ, FPU, MMX, и XMM), а далее более подробно описаны инструкции, появившиеся в процессорах Pentium 3 (блок XMM — SSE) и Pentium 4 (блок XMM — SSE2). Инструкции пересылки данных (см. табл) позволяют ...
... производительных сил, тем быстрее повышается Б. населения. В еще большей степени Б. связано с эффективностью социально-экономической политики в данном обществе. Информатика как наука. Предмет и объект прикладной информатики. Системы счисления Инфоpматика — это основанная на использовании компьютерной техники дисциплина, изучающая структуру и общие свойства информации, а также закономерности и ...
... разрядов масок в регистре I. Неправильное использование разрядов разрешения прерываний в командах SIM. ВВЕДЕНИЕ В ПРОГРАММНЫЙ РАЗДЕЛ Программный раздел содержит наборы подпрограмм на языке ассемблера для микропроцессоров 8080 и 8085. Каждой подпрограмме предпосланы введение и комментарии; за каждой подпрограммой следует по крайней мере один пример ее использования. Введение содержит следующую ...
0 комментариев