
- •Завдання на лабораторну роботу
- •Теоретичні відомості
- •32-Бітний формат чисел з плаваючою комою
- •64-Бітний формат чисел з плаваючою комою
- •80-Бітний формат чисел з плаваючою комою
- •Система команд математичного співпроцесора
- •Система команд співпроцесора Intel 8087 Команди передачі даних
- •Команди порівняння даних
- •Арифметичні команди
- •Трансцендентні функції
- •Команди управління співпроцесором
- •Реалізація функцій через команди співпроцесора
- •Програми, використані для роботи
- •Стандартні функції
- •Правила звернення до функції виведення printf
- •Функція вводу scanf
- •Приклад лабораторної роботи для функції lg(X)
Команди порівняння даних
FCOM |
FCOM Порівняння дійсних чисел ST (0) і ST (1). Прапори встановлюються, як при операції ST (0)-ST (1). | |
FCOM src |
Порівняння ST (0) з операндом в пам'яті. Операнд може бути 32 - або 64-бітним. | |
FCOMP src |
Порівняння дійсного числа в ST (0) з операндом з виштовхуванням ST (0) з стека. Операнд може бути регістром і областю пам'яті. | |
FCOMPP |
Порівняння ST (0) і ST (1) з подвійним виштовхуванням з стека. | |
FICOM src |
Порівняння цілих чисел в ST (0) з операндом. Операнд може бути 16 - або 32-бітним. | |
FICOMP src |
Порівняння цілих чисел в ST (0) з операндом. Операнд може бути 16 - або 32-бітною областю пам'яті або регістром. При виконанні операції відбувається виштовхування ST (0) з стека. | |
FTST |
Перевірка ST (0) на нуль. | |
FUCOM ST(i) |
Порівняння ST (0) з ST (i) без урахування порядків. | |
FUCOMP ST(i) |
Порівняння ST (0) з ST (i) без урахування порядків. При виконанні операції відбувається виштовхування з стека. | |
FUCOMPP ST(i) |
Порівняння ST (0) з ST (i) без урахування порядків. При виконанні операції відбувається подвійне виштовхування з стека. | |
Позначимо операнд команди порівняння як "x". У наступній таблиці наведемо значення бітів кодів умови після виконання команди "FCOM x": C3 = 0, C0 = 0 - ST (0)> x C3 = 0, C0 = 1 - ST (0) <x C3 = 1, C0 = 0 - ST (0) = x C3 = 1, C0 = 1 - ST (0) і x не можна порівнювати Остання комбінація виникає при спробі порівняння не чисел, невизначеностей або нескінченностей, а також в деяких інших випадках. | ||
FXAM |
Біт C1 містить знак аналізованого числа: 0 - позитивний, 1 - негативний.
За допомогою біта C0 можна визначити, є число кінцевим або нескінченним: 0 - кінцеве число, 1 - нескінченне.
Для кінцевих чисел Для нескінченних чисел C3 = 0, C2 = 0 - ненормализованном число C3 = 0, C2 = 0 - Нечісло C3 = 0, C2 = 1 - Нормализованное число C3 = 0, C2 = 1 - Нескінченне число C3 = 1, C2 = 0 - Нульове число C3 = 1, C2 = 0 - Пусте число C3 = 1, C2 = 1 - Число денормалізовано C3 = 1, C2 = 1 - Пусте число |
Арифметичні команди
Співпроцесор використовує шість основних типів арифметичних команд, а також деякі додаткові арифметичні команди Fxxx Перший операнд береться з верхівки стека (джерело), другий - наступний елемент стека. Результат виконання команди записується в стек Fxxx пам'ять Джерело береться з пам'яті, приймачем є верхівка стека ST (0). Покажчик стека ST не змінюється, команда дійсна тільки для операндів з одинарною і подвійною точністю Fixxx пам'ять Аналогічно попереднього типу команди, але операндами можуть бути 16 - або 32-розрядні цілі числа Fxxx ST (i) Для цього типу регістр ST (i) є джерелом, а ST (0) - верхівка стека - приймачем. Покажчик стека не змінюється Fxxx ST (i), ST Для цього типу регістр ST (0) є джерелом, а ST (i) - приймачем. Покажчик стека не змінюється FxxxP ST (i), ST Регістр ST (i) - приймач, реєстр ST (0) - джерело. Після виконання команди джерело ST (0) витягується з стека Рядок "xxx" може приймати такі значення: ADD - Додавання SUB - Віднімання SUBR - Зворотне віднімання, зменшуване і від'ємник міняються місцями MUL - Множення DIV - Ділення DIVR - Зворотне ділення, ділене і дільник міняються місцями | ||
FSQRT |
Розрахувати корінь з ST (0) і помістити назад. | |
FSCALE |
Масштабування.ST(0)=ST(0)*2^ST(1) | |
FEXTRACT |
Виділення мантиси і порядку з числа ST (0). В ST (0) поміщається порядок, в ST (1) - мантиса. | |
FPREM |
FPREM Знаходження залишку від ділення. ST (0) = ST (0) MOD ST (1). Знак результату дорівнює знаку ST (0). | |
FPREM1 |
Знаходження залишку від ділення в стандарті IEEE. | |
FRNDINT |
Округлення до найближчого цілого числа, що знаходиться в ST (0). ST (0) = int (ST (0)) | |
FABS |
Знаходження абсолютного значення. ST (0) = ABS (ST (0)) | |
FCHS |
ЗміназнакуST(0)= -ST(0) |