Додаткові арифметичні команди

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати











Контрольна робота по темі:

ДОДАТКОВІ Арифметичні КОМАНДИ

Введення

Додаткові арифметичні команди без явних операндів виконують дії над вмістом вершини стека, результат поміщають туди ж БЕЗ МОДИФІКАЦІЇ покажчик стека.

  • 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) з цілим числом в пам'яті.

  • FCOMP ST (i) / mem - аналогічна команді FCOM, але після порівняння виробляє витяг операнда з вершини стека.

  • FCOMPP ST (i) - порівнює ST (0) c ST (i) і витягує із стека обидва операнда.

  • FTST - порівнює вершину стека з нулем.

  • FXAM - порівнює вершину стека з нулем, але виставляє 4 прапори умов (зокрема, визначається ненормалізоване мантиса, нескінченність, нечісло та ін.)

  • FCOMI ST (0), ST (i) - порівняння чисел і установка прапорів у EFLAGS (P 6 +).

  • FCOMI Р ST (0), ST (i) - порівняння чисел і установка прапорів у EFLAGS і витяг операнда з вершини стека (P 6 +).

Прапори умов (С0, С3) співпроцесора х87 використовуються для організації умовних переходів мікропроцесором х86. Для цього командою - FSTSW AX - вміст регістру стану х87 копіюється в акумулятор АХ мікропроцесора х86. Після цього командою - SAHF - старший байт акумулятора (АН) передається в молодший байт регістра прапорів. При цьому умові С0 відповідає прапор СF, а умові С3 - прапор ZF.

2. Трансцендентна КОМАНДИ

До елементарним трансцендентним функцій відносяться:

  • тригонометричні функції (sin, cos, tg та ін),

  • зворотні тригонометричні функції (arcsin, arctg та ін),

  • логарифмічні функції (log 2 (x), log 10 (x), log e (x)),

  • показові функції (x y, 2 x, 10 x, e x),

  • гіперболічні функції (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)

FYL 2 X

Двійковий логарифм

ST (0) = ST (1) * log 2 (ST (0))

FYL 2 XP 1

Двійковий логарифм

ST (0) = ST (1) * log 2 (ST (0) +1)

F 2 XM 1

Показова функція

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 і FDIV R обчислюють значення котангенс.

Для команди FPTAN аргумент задається в радіанах і повинен знаходиться в діапазоні (співпроцесори 87/287):

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

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

- Лютий 1963 <= ST (0) <= +2 64.

Значення тангенса вихідного кута tg (ST (0)) заміщає аргумент і в стек включається зверху 1,0 (для програмної сумісності з попередніми сопроцессорами 87/287).

Значення інших тригонометричних функцій (для співпроцесорів 87/287) можна обчислити, використовуючи формули тангенса половинного кута (табл. 3). Тому перед початком обчислення тригонометричних функцій з використанням команди FPTAN необхідно аргумент на ST (0) поділити на 2. Нове значення аргументу «z» має також задовольняти умові: 0 £ z £ 1 / 4.

Таблиця 3 - Формули для обчислення тригонометричних функцій

3. команди управління співпроцесора х87

У СПІВПРОЦЕСОР 387 + з'явилися нові команди:

Всі вони сприймають у ST (0) вихідний кут, вимірюваний в радіанах і знаходиться в діапазоні: -2 63 <= ST (0) <= +2 63. Команди 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 - Формули для обчислення зворотних тригонометричних функцій

Команда FYL 2 X обчислює функцію: ST (1) * log 2 ST (0). Два операнда витягуються з стека, а потім результат включається до стек. Тому Покажчик стека ЗБІЛЬШИТЬСЯ НА 1. У команді потрібно задоволення природного для логарифмічної функції умови:

ST (0)> 0.

Значення інших логарифмічних функцій обчислюються за формулами в табл. 5 із завантаженням в регістр ST (1) необхідних констант командами: FLDLN2 і FLDLG2.

Таблиця 5 - Формули для обчислення логарифмічних функцій

log 2 (x) ® FLD1; FLD x; FYL2X;

ln (x) = ln (2) * log 2 (x) ® FLDLN2; FLD x; FYL2X;

lg (x) = lg (2) * log 2 (x) ® FLDLG2; FLD x; FYL2X.

Ще одна логарифмічна команда FYL2XP1 обчислює функцію: ST (1) * log 2 (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 - Формули для обчислення показових функцій

2 x = [2 x - 1] + 1 = F2XM1 (x) + 1;

e x = 1 + [2 (x * log2 (e)) - 1] = 1 + F2XM1 (x * log 2 (e));

10 x = 1 + [2 (x * log2 (10)) - 1] = 1 + F2XM1 (x * log 2 (10));

а x = 1 + [2 (x * log2 (а)) - 1] = 1 + F2XM1 (x * log 2 (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

Регістр тегів


Всі теги показують - "порожній"

Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Контрольна робота
47.3кб. | скачати


Схожі роботи:
Арифметичні команди
Арифметичні пристрої
Арифметичні основи роботи ЕОМ
Арифметичні операції з BCD числами
Арифметичні основи обчислювальної техніки
Додаткові операції банку
Додаткові відпустки у трудовому праві
Додаткові способи захисту біженців в ЄС
Основні і додаткові послуги в сфері туризму
© Усі права захищені
написати до нас