Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВМСиС.docx
Скачиваний:
25
Добавлен:
22.04.2019
Размер:
278.98 Кб
Скачать

46.Математический сопроцессор: инструкции вычисления функций.

Трансцендентные операции FPU

 Команда:

FSIN

 Назначение:

Синус

 Процессор:

80387

Вычисляет синус числа, находящегося в ST(0), и сохраняет результат в этом же регистре. Операнд считается заданным в радианах и не может быть больше 263 или меньше -263 (можно воспользоваться FPREM с делителем 2π, если операнд слишком велик). Если операнд выходит за эти пределы, флаг С2 устанавливается в 1 и значение ST(0) не изменяется.

 Команда:

FCOS

 Назначение:

Косинус

 Процессор:

80387

Вычисляет косинус числа, находящегося в ST(0), и сохраняет результат в этом же регистре. Операнд считается заданным в радианах и не может быть больше 263 или меньше -263 (так же, как и в случае синуса, можно воспользоваться FPREM с делителем 2π, если операнд слишком велик). Если операнд выходит за эти пределы, флаг С2 устанавливается в 1 и значение ST(0) не изменяется.

 Команда:

FSINCOS

 Назначение:

Синус и косинус

 Процессор:

80387

Вычисляет синус и косинус числа, находящегося в ST(0), помещает синус в ST(0) и затем помещает косинус в стек (так что синус оказывается в ST(1), косинус — в ST(0), и ТОР уменьшается на 1). Операнд считается заданным в радианах и не может быть больше 263 или меньше -263. Если операнд выходит за эти пределы, флаг С2 устанавливается в 1 и значение ST(0) и стек не изменяются.

 Команда:

FPTAN

 Назначение:

Тангенс

 Процессор:

8087

Вычисляет тангенс числа, находящегося в регистре ST(0), заменяет его на вычисленное значение и затем помещает 1 в стек, так что результат оказывается в ST(1), ST(0) содержит 1, а ТОР уменьшается на единицу. Как и для остальных тригонометрических команд, операнд считается заданным в радианах и не может быть больше 263 или меньше -263. Если операнд выходит за эти пределы, флаг С2 устанавливается в 1 и значение ST(0) и стек не изменяются. Единица помещается в стек для того, чтобы можно было получить котангенс вызовом команды FDIVR сразу после FPTAN.

 Команда:

FPATAN

 Назначение:

Арктангенс

 Процессор:

8087

Вычисляет арктангенс числа, получаемого при делении ST(1) на ST(0), сохраняет результат в ST(1) и выталкивает ST(0) из стека (помечает ST(0) как пустой и увеличивает TOP на 1). Рeзyльтaт всегда имеет тот же знак, что и ST(1), и меньше π по абсолютной величине. Смысл этой операции в том, что FPATAN вычисляет угол между осью абсцисс и линией, проведенной из центра координат в точку ST(1),ST(0).

FPATAN может выполняться над любыми операндами (кроме не-чисел), давая результаты для различных нулей и бесконечностей, определенные в соответствии со стандартом IEEE (как показано в табл. 17).

Таблица 17. Результаты работы команды FPATAN1

 

ST(0)

ST(1)

 

-

-F

0

0

+F

+

-

-3/4

-/2

-/2

-/2

-/2

-/4

-F

-

от - до -/2

-/2

-/2

от -/2 до -0

0

0

-

-

-

0

0

0

0

+

+

+

0

0

0

+F

+

от + до +/2

+/2

+/2

от +/2 до +0

0

+

+3/4

+/2

+/2

+/2

+/2

+/4

1 F в этой таблице — конечное вещественное число.