Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

10.6 Команды трансцендентных функций




10. 6 Команды трансцендентных функций

Команды трансцендентных функций позволяют вычислять значения таких функций как тангенс, арктангенс и некоторых других. Все команды трансцендентных функций требуют в качестве операндов регистры стека сопроцессора. Результаты вычислений также заносятся в регистры стека сопроцессора.

 

Команда FPATAN

Команда FPATAN вычисляет значение арктангенса. При этом вычисляется значение арктангенса частного значений регистров ST(1) и ST(0). Результат заносится в регистр ST(1), после чего из стека выталкивается операнд. Таким образом, после выполнения команды FPATAN в регистре ST(0) оказывается вычисленное значение арктангенса. Результат выполнения команды FPATAN имеет знак операнда в регистре ST(1) и по модулю не превосходит числа p.

Пример использования команды FPATAN:

X DQ 2. 0                   ; определение числа X

Y DQ 1. 0                   ; определение числа Y

. . .

FLD X              ; загрузка числа X

FLD Y              ; загрузка числа Y

FPATAN                   ; ST(0): = atan(X / Y)

 

Команда FPTAN

Команда FPTAN вычисляет значение тангенса. Операндом является регистр ST(0). Результат вычисления тангенса записывается в регистр ST(0) и в стек заносится 1. Таким образом, после выполнения команды FPTAN в регистре ST(0) оказывается 1, а в регистре ST(1) – вычисленное значение тангенса. Операнд команды должен быть в пределах от –263 до +263.

Пример использования команды FPTAN:

 

X DD 1. 0                   ; определение числа X

. . .

FLD X              ; загрузка числа X

FPTAN                      ; ST(0): = 1, ST(1): = tan(X)

 

Команда F2XM1

Команда F2XM1 вычисляет значение функции 2x – 1. Операндом является регистр ST(0). Результат вычисления значения функции заносится в регистр ST(0). Значение операнда должно быть в пределах от –1. 0 до +1. 0, в противном случае результат выполнения команды будет иметь неопределенное значение.

Пример использования команды F2XM1:

X DQ 0. 5                   ; определение числа X

. . .

FLD X              ; загрузка числа X

F2XM1                      ; ST(0): = 2X-1

 

Команда FYL2X

Команда FYL2X вычисляет значение функции y * log2(x). Операндом y является регистр ST(1), а операндом x – ST(0). Результат вычисления значения функции заносится в регистр ST(1), после чего из стека выталкивается операнд. Таким образом, после выполнения команды FYL2X в регистре ST(0) оказывается вычисленное значение функции. Операнд ST(0) должен быть положительным ненулевым числом.

Пример использования команды FYL2X:

X DQ 4. 0                   ; определение числа X

Y DQ 2. 0                   ; определение числа Y

. . .

FLD X              ; загрузка числа X

FLD Y              ; загрузка числа Y

FYL2X                      ; ST(0): = Y * log2(X)

 

Команда FYLPXP1

Команда FYL2XP1 вычисляет значение функции y * log2(x + 1). Операндом y является регистр ST(1), а операндом x – ST(0). Результат вычисления значения функции заносится в регистр ST(1), после чего из стека выталкивается операнд. Таким образом, после выполнения команды FYL2XP1 в регистре ST(0) оказывается вычисленное значение функции. Операнд ST(0) должен быть положительным ненулевым числом.

Пример использования команды FYL2X P1:

X DD 32. 0       ; определение числа X

Y DD 0. 5                   ; определение числа Y

. . .

FLD X              ; загрузка числа X

FLD Y              ; загрузка числа Y

FYL2X                      ; ST(0): = Y * log2(X + 1)

 

 

10. 7 Команды сравнения данных

Команды сравнения данных позволяют сравнивать между собой значения регистров стека сопроцессора и операндов из памяти. Результаты сравнения определяются флагами условий C0, C2 и C3. Все команды сравнения выполняют сравнение значений регистра ST(0) и какого-либо другого регистра или ячейки памяти. Значения флагов условий C0, C2 и C3 в зависимости от результатов сравнения представлены в табл. 16.

 

Таблица 16

Интерпретация значений флагов условий

Условие C0 C2 C3
ST(0) > SRC
ST(0) < SRC
ST(0) = SRC
Особый случай

 

SRC – это второй операнд, с которым производится сравнение. Им может быть регистр стека сопроцессора или ячейка памяти. Особым случаем является сравнение операндов, один из которых является нечисловым значением NaN или не может быть сравнен с другим операндом. Если флаг IM сброшен, то флаги условий при возникновении особого случая не устанавливаются.

В табл. 17 представлены команды сравнения данных сопроцессора.

 

Таблица 17

Команды сравнения данных сопроцессора

Команда сравнения Операнд Назначение
FCOM   сравнение ST(0) и ST(1)
FCOM память сравнение ST(0) и значения ячейки памяти
FCOMP память сравнение ST(0) и значения ячейки памяти, выталкивание из стека операнда
FCOMPP   сравнение ST(0) и ST(1) и выталкивание из стека двух операндов
FTST   сравнение ST(0) с 0. 0

 

Примеры использования команд сравнения данных сопроцессора:

X DD 1. 0                   ; определение числа X

Y DD 1. 01       ; определение числа Y

. . .

FLD X              ; загрузка числа X

FLD Y              ; загрузка числа Y

FCOM                       ; сравнение ST(0) и ST(1)

. . .

FLD X              ; загрузка числа X

FCOMP Y                 ; сравнение ST(0) и Y

. . .

FLD Y              ; загрузка числа Y

FTST                         ; сравнение Y с 0. 0

. . .

FLD X              ; загрузка числа X

FLD Y              ; загрузка числа Y

FCOMPP                   ; сравнение X и Y

10. 8 Команды управления сопроцессором

Команды управления сопроцессором позволяют выполнять инициализацию сопроцессора, сохранение значения регистра состояния и загрузку регистра управления сопроцессора, а также выполнять сохранение значений всех регистров сопроцессора в памяти и загрузку этих значений из памяти.

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...