Дополнительные арифметические команды
Коды условий после сравнения. Элементарные трансцендентные функции. Формулы для вычисления тригонометрических функций. Команды управления сопроцессора х87. Формулы для вычисления показательный и гиперболических функций. Инициализация сопроцессора х87.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 01.12.2010 |
Размер файла | 36,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Контрольная работа по теме:
ДОПОЛНИТЕЛЬНЫЕ АРИФМЕТИЧЕСКИЕ КОМАНДЫ
Введение
Дополнительные арифметические команды без явных операндов выполняют действия над содержимым вершины стека, результат помещают туда же БЕЗ МОДИФИКАЦИИ УКАЗАТЕЛЯ СТЕКА.
Ш 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.
1. КОМАНДЫ СРАВНЕНИЙ
Команды сравнений включают:
Ш 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):
0 <= ST(0) <= 1/4.
Для СОПРОЦЕССОРОВ 387+ аргумент команды FPTAN (в радианах) может быть любым:
-263 <= ST(0) <= +264.
Значение тангенса исходного угла tg(ST(0)) замещает аргумент и в стек включается сверху 1,0 (для программной совместимости с предыдущими сопроцессорами 87/287).
Значения остальных тригонометрических функций (для сопроцессоров 87/287) можно вычислить, используя формулы тангенса половинного угла (табл. 3). Поэтому перед началом вычисления тригонометрических функций с использованием команды FPTAN необходимо аргумент в ST(0) поделить на 2. Новое значение аргумента «z» должно также удовлетворять условию: 0 z 1/4.
Таблица 3 - Формулы для вычисления тригонометрических функций
3. команды управления сопроцессора х87
В СОПРОЦЕССОРАХ 387+ появились новые команды:
Ш FSIN - вычисление синуса;
Ш FCOS - вычисление косинуса;
Ш FSINCOS - вычисление синуса и косинуса.
Все они воспринимают в ST(0) исходный угол, измеряемый в радианах и находящийся в диапазоне: -263 <= ST(0) <= +263. Команды FSIN и FCOS возвращают результат на место аргумента, а команда FSINCOS возвращает значение синуса на место аргумента и включает значение косинуса в стек.
Команда FPATAN вычисляет arctg (ST(1)/ST(0)). Два операнда извлекаются из стека, а результат включается в стек. Поэтому окончательно, УКАЗАТЕЛЬ СТЕКА УВЕЛИЧИВАЕТСЯ НА 1. Операнды этой команды для сопроцессоров 8087/287 должны удовлетворять условию:
0 < ST(1) < ST(0).
В сопроцессорах 387+ ограничений на диапазон допустимых аргументов команды FPATAN не существует.
Для вычисления остальных обратных тригонометрических функций по аргументу «z» необходимо предварительно подготовить операнды в ST(0) и ST(1) в соответствии с табл. 4 (делить операнды не нужно).
Таблица 4 - Формулы для вычисления обратных тригонометрических функций
Команда FYL2X вычисляет функцию: ST(1) * log2 ST(0). Два операнда извлекаются из стека, а затем результат включается в стек. Поэтому УКАЗАТЕЛЬ СТЕКА УВЕЛИЧИТСЯ НА 1. В команде требуется удовлетворение естественного для логарифмической функции условия:
ST(0) > 0.
Значения других логарифмических функций вычисляются по формулам в табл. 5 с загрузкой в регистр ST(1) необходимых констант командами: FLDLN2 и FLDLG2.
Таблица 5 - Формулы для вычисления логарифмических функций
log2 (x) FLD1; FLD x; FYL2X; ln (x) = ln (2) * log2 (x) FLDLN2; FLD x; FYL2X; lg (x) = lg (2) * log2 (x) FLDLG2; FLD x; FYL2X. |
Еще одна логарифмическая команда FYL2XP1 вычисляет функцию: ST(1) * log2 (ST(0) + 1). Причина появления этой команды заключается в получении более высокой точности вычисления функции: log(1 + x). Эта функция часто встречается в финансовых расчетах, а также при вычислении обратных гиперболических функций.
Команда показательной функции F2XM1 вычисляет:
F2XM1 [ST(0)] = 2(ST(0)) - 1.
Аргумент показательной функции должен находится в диапазоне: для сопроцессоров 87/287: 0 <= ST(0) <= 0.5;
для сопроцессоров 387+: -1 <= ST(0) <= +1.
Вычисление функции 2х - 1 вместо функции 2х позволяет избежать потери точности, когда аргумент «х» близок к 0 (а значение функции 2х близко к 1). Остальные показательные функции вычисляются по формулам в табл. 6.
Таблица 6 - Формулы для вычисления показательных функций
2x = [2x - 1] + 1 = F2XM1 (x) + 1; ex = 1 + [2(x * log2(e)) - 1] = 1 + F2XM1 (x * log2(e)); 10x = 1 + [2(x * log2(10))- 1] = 1 + F2XM1 (x * log2(10)); аx = 1 + [2(x * log2(а)) - 1] = 1 + F2XM1 (x * log2(a)). |
Таблица 7 - Формулы для вычисления гиперболических функций
Cинус гиперболический |
||
Косинус гиперболический |
||
Тангенс гиперболический |
||
Котангенс гиперболический |
||
Косеканс гиперболический |
||
Секанс гиперболический |
Таблица 8 - Формулы для вычисления обратных гиперболических функций
где: |
|
где: |
|
где: |
|
КОМАНДЫ УПРАВЛЕНИЯ СОПРОЦЕССОРОМ х87
Команды управления сопроцессором х87 обеспечивают доступ к нечисловым регистрам. Мнемоники, которые начинаются с FN, соответствуют командам «БЕЗ ОЖИДАНИЯ», т.е. процессор х86 передает их для выполнения в сопроцессор х87, не проверяя занятость сопроцессора и игнорируя численные особые случаи.
Мнемоники без буквы «N» соответствуют командам «С ОЖИДАНИЕМ», т.е. заставляют процессор х86 реагировать на незамаскированные особые случаи и ожидать завершения выполнения команд в сопроцессоре х87. В общем случае, программистам рекомендуется избегать форм команд «без ожидания».
Ш Команда - FNSTCW mem (FSTCW mem) - передает содержимое регистра управления (CW) в ячейку памяти.
Ш Команда - FLDCW mem - загружает регистр управления (CW) из ячейки памяти. Эти две команды применяются для изменения режима работы сопроцессора х87.
Ш Команда - FNSTSW mem (FSTSW mem) - передает содержимое регистра состояния (SW) сопроцессора х87 в ячейку памяти.
Ш Команда - FNSTSW AX (FSTSW AX) - передает содержимое регистра состояния (SW) сопроцессора в регистр AX микропроцессора х86.
Ш Команда - FNCLEX (FCLEX) - сбрасывает в регистре состояния сопроцессора флаги особых случаев, а также биты ES и BUSY. Эти флаги не сбрасываются аппаратно и должны явно сбрасываться программистом.
Ш Команда - FNINIT (FINIT) - инициализирует регистры управления, состояния и тэгов на значения, приведенные в табл. 9. Такое же действие производит аппаратный сигнал сброса - RESET.
Таблица 9 - Инициализация сопроцессора х87
Регистр |
Выбор |
Режим работы |
|
Регистр управления |
(Режим бесконечности) |
Проективный - (287) Афинный - (387+) |
|
Режим округления |
Округление к ближайшему |
||
Точность |
Расширенная |
||
Все особые случаи |
Замаскированы |
||
Регистр Состояния |
Бит занятости |
В = 0: Не занят |
|
Код условия |
Не определен |
||
Указатель стека |
TOP = 000 |
||
Бит суммарной ошибки |
ES = 0 |
||
Регистр тэгов |
Все тэги показывают - "пустой" |
Подобные документы
Основные понятия математического сопроцессора. Изучение принципа работы и функций устройства: точное деление, вычисление тригонометрических функций, извлечение квадратного корня и нахождение логарифма. Расчет себестоимости и экономической эффективности.
дипломная работа [2,2 M], добавлен 15.05.2014Модель целочисленного MMX-расширения и особенности работы сопроцессора. Отображение ММХ-регистров на регистры стека сопроцессора. Система команд MMX: команды пересылки, сложения и вычитания, сравнения, логических операций, сдвига, упаковки и распаковки.
презентация [240,3 K], добавлен 11.12.2013Анализ процесса обработки информации и выбор структур данных для хранения. Методы решения задачи и разработка основных алгоритмов предметной области. Структурная схема программного продукта. Описание эмуляции команды FSUB математического сопроцессора.
курсовая работа [172,6 K], добавлен 22.02.2011Вычисления в Excel. Формулы и функции: Использование ссылок и имен, перемещение и копирование формул. Относительные и абсолютные ссылки. Понятиеи и типы функций. Рабочая книга Excel. Связь между рабочими листами. Построение диаграмм в EXCEL.
лабораторная работа [39,1 K], добавлен 28.09.2007Принципы разработки математических моделей, алгоритмов и программ. Составление программы вычисления функции с использованием нестандартных функций. Нахождение значения корней нелинейного уравнения по методу касательных. Программа для вычисления интеграла.
курсовая работа [568,3 K], добавлен 07.03.2015Разработка различных программ для вычисления X и Y по формуле, для вычисления интеграла, для вычисления таблицы значений функции и для вычисления элементов вектора. Составление блок-схемы программы. Ввод значений, описание переменных и условия расчета.
контрольная работа [148,1 K], добавлен 08.11.2013Программная реализация приложения для вычисления заданных функций. Процедура поиска минимума функции. Применение методов Хука-Дживса и градиентного спуска для решения задачи. Исследование функции в окрестности базисной точки, определение ее координат.
контрольная работа [767,1 K], добавлен 02.02.2014Формулы. Использование ссылок и имен. Перемещение и копирование формул. Относительные и абсолютные ссылки. Понятие функции. Типы функций. Основным достоинством электронной таблицы Excel является наличие мощного аппарата формул и функций.
реферат [13,4 K], добавлен 15.02.2003Электронная таблица как компьютерная программа, позволяющая проводить вычисления с данными, представленными в виде двухмерных массивов. Перечень и краткая характеристика подобных программных продуктов, формулы и основные параметры. Ссылки и функции Excel.
презентация [481,3 K], добавлен 06.12.2013Арифметические команды языка Assembler в архитектуре x86. Организация ветвлений и циклов в программах. Ввод строк с клавиатуры и команды пакетной обработки (строковые команды). Алгоритм вывода на экран в текстовом режиме с использованием средств BIOS.
контрольная работа [18,0 K], добавлен 05.07.2014