| Додаткові арифметичні команди[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.
скачати
Контрольна робота по темі: ДОДАТКОВІ Арифметичні КОМАНДИ Введення Додаткові арифметичні команди без явних операндів виконують дії над вмістом вершини стека, результат поміщають туди ж БЕЗ МОДИФІКАЦІЇ покажчик стека. 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 - Коди умов після порівняння С3 | С0 | Умова | 0 0 1 1 | 0 1 0 1 | ST (0)> x ST (0) <x ST (0) = x ST (0) і x - не порівняти |
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 + з'явилися нові команди:
FSIN - обчислення синуса;
FCOS - обчислення косинуса;
FSINCOS - обчислення синуса і косинуса.
Всі вони сприймають у 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 числами Арифметичні основи обчислювальної техніки Додаткові операції банку Додаткові відпустки у трудовому праві Додаткові способи захисту біженців в ЄС Основні і додаткові послуги в сфері туризму
|