- •Завдання на лабораторну роботу
- •Теоретичні відомості
- •32-Бітний формат чисел з плаваючою комою
- •64-Бітний формат чисел з плаваючою комою
- •80-Бітний формат чисел з плаваючою комою
- •Система команд математичного співпроцесора
- •Система команд співпроцесора Intel 8087 Команди передачі даних
- •Команди порівняння даних
- •Арифметичні команди
- •Трансцендентні функції
- •Команди управління співпроцесором
- •Реалізація функцій через команди співпроцесора
- •Програми, використані для роботи
- •Стандартні функції
- •Правила звернення до функції виведення printf
- •Функція вводу scanf
- •Приклад лабораторної роботи для функції lg(X)
Система команд співпроцесора Intel 8087 Команди передачі даних
|
При виконанні цих команд операнд зчитується з оперативної пам'яті, перетвориться в формат з розширеною точністю. Потім поле ST регістра стану зменшується на одиницю і виконується запис операнда в чисельний регістр, який визначається новим значенням поля ST. Тобто операнд записується в стек чисельних регістрів, а покажчик стека (поле ST) зменшується на одиницю. За своєю дією ці команди нагадують команду PUSH центрального процесора.
Безпосередньо перед завантаженням чисельного регістра перевіряється вміст поля TAG0. Якщо цей вміст не дорівнює 11 (порожній регістр), в регістрі стану встановлюється прапор IE (недійсна операція) і викликається переривання (якщо в регістрі управління не встановленамаска IM - маска недійсноїоперації). | |||
|
FLD src |
Завантажити дійсне число в ST (0) (вершину стека) з області пам'яті. Область пам'яті може бути 32 -, 64 -, 80-бітною. | ||
|
FILD src |
Завантажити ціле число в ST (0) з пам'яті. Область пам'яті може бути 16 -, 32 -, 64-бітною. | ||
|
FBLD src |
Завантажити BCD-число в ST (0) з 80-бітної області пам'яті. | ||
|
Завантаження констант виконується набагато швидше спеціальними командами, ніж командами завантаження даних з оперативної пам'яті. | |||
|
FLDZ |
Завантажити0 вST(0). | ||
|
FLD1 |
Завантажити1вST(0). | ||
|
FLDPI |
ЗавантажитиPIвST(0). | ||
|
FLDL2T |
ЗавантажитиLOG2(10)вST(0). | ||
|
FLDL2E |
ЗавантажитиLOG2(e)вST(0). | ||
|
FLDLG2 |
ЗавантажитиLG(2)вST(0). | ||
|
FLDLN2 |
ЗавантажитиLN(2)вST(0). | ||
|
Ці команди пересилають дані з верхівки стека в область пам'яті, зазначену операндом команди. При цьому вміст покажчика стека (поля ST) не змінюється.
| |||
|
FST dest |
Запис дійсного числа з ST (0) в пам'ять. Область пам'яті 32 -, 64 - або 80-бітна, також як операнд можна використати посилання на чисельний регістр ST (i), тому цю команду можна використовувати для копіювання верхівки стека в будь-який інший чисельний регістр. | ||
|
FBST dest |
Запис BCD-числа в пам'ять. Область пам'яті 80-бітна. | ||
|
FIST dest |
Запис цілого числа в пам'ять. Область пам'яті може бути 16 -, 32 -, 64-бітною. | ||
|
Ці команди спочатку зберігають вершину стека в пам'яті, а потім виштовхують (видаляють) дані з вершини стека. Вміст чисельного регістра, номер якого визначається полем ST регістра стану, перетворюється в необхідний формат і записується в комірки оперативної пам'яті, які задані операндом команди. Після запису вміст поля ST збільшується на одиницю. Ці дії аналогічні виконуваним командою POP центрального процесора. | |||
|
FSTP dest |
Запис дійсного числа з ST (0) в пам'ять. Область пам'яті 32 -, 64 - або 80-бітна. При цьому відбувається виштовхування вершини з стека. | ||
|
FBSTP dest |
Запис BCD-числа в пам'ять. Область пам'яті 80-бітна. При цьому відбувається виштовхування вершини з стека. | ||
|
FISTP dest |
Запис цілого числа в пам'ять. Область пам'яті може бути 16 -, 32 -, 64-бітною. При цьому відбувається виштовхування вершини з стека. | ||
|
FXCH st(i) |
Обмін значеннями вершини стека і регістра i. | ||
