Учебная работа. Контрольная работа: Дополнительные арифметические команды

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (6 оценок, среднее: 4,83 из 5)
Загрузка...
Контрольные рефераты

Учебная работа. Контрольная работа: Дополнительные арифметические команды

Введение

Доп арифметические команды без очевидных операндов делают деяния над содержимым верхушки стека, итог помещают туда же БЕЗ МОДИФИКАЦИИ УКАЗАТЕЛЯ СТЕКА.

— 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) с целым числом в памяти.

— FCOMPST(i)/mem – подобна команде FCOM, но опосля сопоставления производит извлечение операнда из верхушки стека.

— FCOMPP ST(i) – ассоциирует ST(0) c ST(i) и извлекает из стека оба операнда.

— FTST – ассоциирует верхушку стека с нулем.

— FXAM – ассоциирует верхушку стека с нулем, но выставляет 4 флага критерий (а именно, определяется ненормализованная мантисса, бесконечность, нечисло и др.).

— FCOMIST(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 аргумент задается в радианах и должен находится в спектре (сопроцессоры 87/287):

0 <= ST(0) <= 1/4.

Для СОПРОЦЕССОРОВ 387+ аргумент команды FPTAN (в радианах) быть может хоть каким:

–263
<= ST(0) <= +264
.

аргумент и в стек врубается сверху 1,0 (для программной сопоставимости с прошлыми сопроцессорами 87/287).

значения других тригонометрических функций (для сопроцессоров 87/287) можно вычислить, используя формулы тангенса половинного угла (табл. 3). Потому перед началом вычисления тригонометрических функций с внедрением команды FPTAN нужно аргумент в ST(0) поделить на 2. Новое

Таблица 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

Регистр тэгов
Все тэги демонстрируют – «пустой»]]>