[Назад] [Далее] | |
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 |
Обмен местами содержимого регистра 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 | если сравнимы |