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 – Формулы для вычисления обратных тригонометрических функций

←ST(1)

←ST(0)

 

←ST(1)

←ST(0)

 

←ST(1)

←ST(0)

 

←ST(1)

←ST(0)

 

←ST(1)

←ST(0)

 

←ST(1)

←ST(0)

 

Команда 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
Регистр тэгов Все тэги показывают – "пустой"

Информация о работе «Дополнительные арифметические команды»
Раздел: Информатика, программирование
Количество знаков с пробелами: 10563
Количество таблиц: 9
Количество изображений: 0

Похожие работы

Скачать
15284
8
1

... регистра Rд и аккумулятора (регистра А) и результат сложения запоминает в аккумуляторе. - CARRY - регистра признаков. Разряд (флаг) переноса играет большую роль при выполнении микропроцессором арифметических операций и работает девятым разрядом аккумулятора. По флагу командами IC и INC можно осуществить переход. Применяется он так же при сложении чисел длиннее восьми разрядов, выполняя функции ...

Скачать
181295
4
0

... изменения сегмента (Segment Override). В системе команд насчитывается несколько сотен инструкций, поэтому в данной работе обзорно рассмотрены все команды обработки данных (блоков процессора АЛУ, FPU, MMX, и XMM), а далее более подробно описаны инструкции, появившиеся в процессорах Pentium 3 (блок XMM — SSE) и Pentium 4 (блок XMM — SSE2). Инструкции пересылки данных (см. табл) позволяют ...

Скачать
308601
37
3

... производительных сил, тем быстрее повышается Б. населения. В еще большей степени Б. связано с эффективностью социально-экономической политики в данном обществе. Информатика как наука. Предмет и объект прикладной информатики. Системы счисления Инфоpматика — это основанная на использовании компьютерной техники дисциплина, изучающая структуру и общие свойства информации, а также закономерности и ...

Скачать
37175
0
0

... разрядов масок в регистре I.  Неправильное использование разрядов разрешения прерываний в командах SIM. ВВЕДЕНИЕ В ПРОГРАММНЫЙ РАЗДЕЛ Программный раздел содержит наборы подпрограмм на языке ассемблера для микропроцессоров 8080 и 8085. Каждой подпрограмме предпосланы введение и комментарии; за каждой подпрограммой следует по крайней мере один пример ее использования. Введение содержит следующую ...

0 комментариев


Наверх