Мои Конспекты
Главная | Обратная связь

...

Автомобили
Астрономия
Биология
География
Дом и сад
Другие языки
Другое
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Металлургия
Механика
Образование
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Туризм
Физика
Философия
Финансы
Химия
Черчение
Экология
Экономика
Электроника

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





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

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

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

FCOS — команда вычисляет косинус угла, находящийся в вершине стека сопроцессора — регистре ST(0). Команда не имеет операндов. Результат возвращается в регистр st(0).

FSIN — команда вычисляет синус угла, находящийся в вершине стека сопроцессора — регистре ST(0). Команда не имеет операндов. Результат возвращается в регистр ST(0).

FSINCOS — команда вычисляет синус и косинус угла, находящиеся в вершине стека сопроцессора — регистре ST(0). Команда не имеет операндов. Результат возвращается в регистрах ST(0)и st(1). При этом синус помещается в ST(0), а косинус — в ST(1).

FPTAN — команда вычисляет частичный тангенс угла, находящийся в вершине стека сопроцессора — регистре ST(0). Команда не имеет операндов. Результат возвращается в регистрах ST(0)и ST(1).

FPRATAN — команда вычисляет частичный арктангенс угла, находящийся в вершине стека сопроцессора — регистре ST(0). Команда не имеет операндов. Результат возвращается в регистрах ST(0)и ST(1). (угол от 0 до пи/4)

 

Отметим еще две команды сопроцессора, FPREM и FPREM1.

Команда FPREM — команда получения частичного остатка от деления. Исходные значения делимого и делителя размещаются в стеке — делимое в ST(0), делитель в ST(1). Делитель рассматривается как некоторый модуль. Поэтому в результате работы команды получается остаток от деления по модулю. Но произойти это может не сразу, так как этот результат в общем случае достигается за несколько последовательных обращений к команде FPREM, если значения операндов сильно различаются. Физически работа команды заключается в реализации хорошо известного всем действия: деления в столбик. При этом каждое промежуточное деление осуществляется отдельной командой FPREM. Цикл, центральное место в котором занимает команда FPREM, завершается, когда очередная полученная разность в st(0)становится меньше значения модуля в ST(1). Судить об этом можно по состоянию флага с2 в регистре состояния SWR:

если С2 =0,то работа команды FPREM полностью завершена, так как разность в ST(0) меньше значения модуля в st(1); И если С2 =1,то необходимо продолжить выполнение команды FPREM, так как разность в ST(0) больше значения модуля в ST(1). Таким образом, необходимо анализировать флаг С2 в теле цикла. Для этого С2 записывается в регистр флагов основного процессора с последующим анализом его командами условного перехода. Другой способ заключается в сравнении ST(0) и st(1).

Важно отметить, то команда FPREM не соответствует последнему стандарту IEEE-754 на вычисления с плавающей точкой. По этой причине в систему команд сопроцессора 1387 была введена команда FPREM1,которая отличается от команды FPREM тем, что накладывается дополнительное требование на значение остатка в ST(0).Это значение не должно превышать половины модуля в ST(1). В остальном работа команды FPREM 1 аналогична работе FPREM.

Три трансцендентные команды:

Команда F2XM1 — Команда вычисления значения функции у =2x-1 Исходное значение х размещается в вершине стека сопроцессора в регистре ST(0) и должно лежать в диапазоне -1<=х <=1. Результат у замещает х в регистре ST(0).

Команда FYL2X — команда вычисления значения функции 2 =у log 2 (x). Исходное значение х размещается в вершине стека сопроцессора, а исходное значение у — в регистре sТ(1). Значение х должно лежать в диапазоне 0 <х <+°°, а значение у — в диапазоне -°° <y<+°°. Перед тем как осуществить запись результата z в вершину стека, команда FYL2X выталкивает значения х и у из стека и только после этого производит запись z в регистр ST(0).

Команда FYL2XP1 — команда вычисления значения функции z ==у Iog 2 (x+1). Исходное значение х размещается в вершине стека сопроцессора — регистре ST(0), а исходное значение у — в регистре ST(1).Значение х должно лежать в диапазоне 0 <|х|<1 -1/sqrt(2) ,а значение у — в диапазоне -°° <у <+°° .Перед тем как записать результат z в вершину стека — регистр ST(0), команда FYL2XP1 выталкивает из стека значения х и у.




Поиск по сайту:







©2015-2020 mykonspekts.ru Все права принадлежат авторам размещенных материалов.