logo

Главная Система команд x86 Система команд FPU FPTAN

Система команд x86

Программирование - Архитектура и система команд микропроцессоров x86
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

FPTAN

Вычислить частичный тангенс

Влияние команды на флаги и форматы команды:

IS

IA

D

Z

O

U

P

*

*

*

 

 

*

*

 

Код

Команда

Описание

Проц.

Пример

D9 F2

FPTAN

ST(0) = tg(ST(0)), затем загрузить в регистровый стек значение 1.0

8087

fptan

Описание:

Команда FPTAN замещает содержимое ST значением tg(ST) и затем помещает 1.0 в стек FPU. Входное значение в ST выражается в радианах и должно лежать в диапазоне |X| < 263.

Если операнд в ST находится вне приемлемого диапазона, то устанавливается флаг C2, и ST остается неизмененным (в противном случае флаг C2 сбрасывается), исключения #IA не возникает. Программа далее должна уменьшить величину операнда до абсолютного значения, меньшего чем 263. Это можно сделать путем вычитания подходящего целого, умноженного на 2p.

Исключение #IA возникает, если операнд SNaN, ±∞ или представлен в неподдерживаемом формате. Если #IA имеет место, когда соответствующий бит маски в CW установлен, то в результате операции в ST и ST(1) будет находиться неопределенность QNaN.

Флаги C0, C3 регистра SW после выполнения команды неопределены. В случае возникновения стековой ошибки #IS, флаг C1 устанавливается равным 1 при переполнении регистрового стека и сбрасывается, если ST помечен как пустой. Этот флаг также указывает направление округления в случае возникновения исключения #P (неточный результат): 0 – округление к меньшему, 1 – округление к большему, если C2=1, значение флага C1 неопределено.

Тот факт, что FPTAN помещает 1.0 в стек FPU после вычисления tg(ST), поддерживает совместимость с математическими сопроцессорами 8087, Intel287 и упрощает вычисление других тригонометрических функций. Например, котангенс (который является обратной величиной тангенса) может быть вычислен при помощи выполнения команды FDIVR сразу после FPTAN.

Операция:

IF (Операнд в диапазоне)

THEN

  C2 = 0;

  ST = tan(ST);

Декремент указателя вершины стека FPU;

  ST = 1.0;

ELSE

  C2 = 1;

FI;

Особые ситуации защищенного режима:

#NM, если CR0.EM = 1 или CR0.TS = 1.

Особые ситуации режима реальной адресации:

#NM, если CR0.EM = 1 или CR0.TS = 1.

Особые ситуации режима V86:

#NM, если CR0.EM = 1 или CR0.TS = 1.

Замечание:

Для сопроцессоров Intel286 и 8087 входное значение операнда в ST(0) ограничено |X| < p/4, поэтому оно предварительно должно корректироваться командой FPREM.

В случае возникновения ошибки, когда исключение #IA замаскировано, процессоры Intel387, Intel486, … помещают в ST и ST(1) неопределенность QNAN (это обеспечивает совместимость со стандартом IEEE-754), сопроцессоры Intel287 и 8087 в этом случае помещают неопределенность QNaN только в ST, а в ST(1) возвращается исходный операнд (бывший ранее в ST).


Входит в группу команд: Система команд FPU




Все права защищены © Алексей Ровдо, 1994-2023. Перепечатка возможна только по согласованию с владельцем авторских прав. admin@club155.ru

Top.Mail.Ru       Сервер радиолюбителей России - схемы, документация,

 соревнования, дипломы, программы, форумы и многое другое!   схемы новости электроники