Команды пересылки данных FPU
| Команда: |
FLD источник |
| Назначение: |
Загрузить вещественное число в стек |
| Процессор: |
8087 |
Команда помещает содержимое источника (32-, 64- или 80-битная переменная или ST(n)) и уменьшает ТОР на 1. Команда FLD ST(0) делает копию вершины стека.
| Команда: |
FST приемник |
| Назначение: |
Скопировать вещественное число из стека |
| Команда: |
FSTP приемник |
| Назначение: |
Считать вещественное число из стека |
| Процессор: |
8087 |
Копирует ST(0) в приемник (32- или 64-битную переменную или пустой ST(n) в случае FST; 32-, 64- или 80-битную переменную или пустой ST(n) в случае FSTP). FSTP после этого выталкивает число из стека (помечает ST(0) как пустой и увеличивает ТОР на один).
| Команда: |
FILD источник |
| Назначение: |
Загрузить целое число в стек |
| Процессор: |
8087 |
Преобразовывает целое число со знаком из источника (16-, 32- или 64-битная переменная) в вещественный формат, помещает в вершину стека и уменьшает ТОР на 1.
| Команда: |
FIST приемник |
| Назначение: |
Скопировать целое число из стека |
| Команда: |
FISTP приемник |
| Назначение: |
Считать целое число из стека |
| Процессор: |
8087 |
Преобразовывает число из вершины стека в целое со знаком и записывает его в приемник (16- или 32-битная переменная для FIST; 16-, 32- или 64-битная переменная для FISTP). FISTP после этого выталкивает число из стека (помечает ST(0) как пустой и увеличивает ТОР на один). Попытка записи слишком большого числа, бесконечности или не-числа приводит к исключению «недопустимая операция» (и записи целой неопределенности, если IM = 1).
| Команда: |
FBLD источник |
| Назначение: |
Загрузить десятичное число в стек |
| Процессор: |
8087 |
Преобразовывает BCD число из источника (80-битная переменная в памяти), помещает в вершину стека и уменьшает ТОР на 1.
| Команда: |
FBSTP приемник |
| Назначение: |
Считать десятичное число из стека |
| Процессор: |
8087 |
Преобразовывает число из вершины стека в 80-битное упакованное десятичное, записывает его в приемник (80-битная переменная) и выталкивает это число из стека (помечает ST(0) как пустой и увеличивает ТОР на один). Попытка записи слишком большого числа, бесконечности или не-числа приводит к исключению «недопустимая операция» (и записи десятичной неопределенности, если IM = 1).
| Команда: |
FXCH приемник |
| Назначение: |
Обменять местами два регистра стека |
| Процессор: |
8087 |
<
/p>
Обмен местами содержимого регистра ST(0) и источника (регистр ST(n)). Если операнд не указан, обменивается содержимое ST(0) и ST(1).
| Команда: |
FCMOVcc приемник, источник |
| Назначение: |
Условная пересылка данных |
| Процессор: |
P6 |
Это набор команд, каждая из которых копирует содержимое источника (регистр ST(n)) в приемник (только ST(0)), если выполняется соответствующее условие. Реально каждое условие соответствует тем или ным значениям флагов регистра FLAGS, но после команд
fcom (или другие команды сравнения) fstsw ax sahf
в регистр FLAGS загружаются флаги С0, С1 и С3, и последующая команда из набора FCMOVcc приобретает смысл обработки результата предыдущего сравнения (табл. 13).
Таблица 13. Команды FCMOVcc
| Команда |
Значения флагов |
Действие после FCOM |
| FCMOVE |
ZF = 1 |
если равно |
| FCMOVNE |
ZF = 0 |
если не равно |
| FCMOVB |
CF = 1 |
если меньше |
| FCMOVBE |
CF = 1 и ZF = 1 |
если меньше или равно |
| FCMOVNB |
CF = 0 |
если не меньше |
| FCMOVNBE |
CF = 0 и ZF = 0 |
если не меньше или равно |
| FCMOVU |
PF = 1 |
если несравнимы |
| FCMOVNU |
PF = 0 |
если сравнимы |