Аппаратное обеспечение IBM PC
© Александр Фролов, Григорий Фролов
Том 2, книга 1, М.: Диалог-МИФИ, 1992.
Загрузка данных в стек
FLD src Загрузка вещественного числа
st(0) <- src (mem32/mem64/mem80)
FILD src Загрузка целого числа
st(0) <- src (mem16/mem32/mem64)
FBLD src Загрузка десятичного числа
st(0) <- src (mem80)
Загрузка констант
FLDZ Загрузка нуля
st(0) <- 0.0
FLD1 Загрузка единицы
st(0) <- 1.0
FLDPI Загрузка числа Pi
st(0) <- Pi
FLDL2T Загрузка log2(10)
st(0) <- log2(10)
FLDL2E Загрузка log2(e)
st(0) <- log2(e)
FLDLG2 Загрузка log10(2)
st(0) <- log10(2)
FLDLN2 Загрузка loge(2)
st(0) <- loge(2)
Запись данных
FST dest Запись вещественного числа
dest <- st(0) (mem32/mem64)
FSTP dest Запись вещественного числа с извлечением
его из стека численных регистров
dest <- st(0) (mem32/mem64/mem80)
FIST dest Запись целого числа
dest <- st(0) (mem32/mem64)
FISTP dest Запись целого числа с извлечением
его из стека численных регистров
dest <- st(0) (mem16/mem32/mem64)
FBST dest Запись десятичного числа
dest <- st(0) (mem80)
FBSTP dest Запись десятичного числа с извлечением
его из стека численных регистров
dest <- st(0) (mem80)
Сравнение
FCOM Сравнение вещественных чисел
Установка флагов по результатам операции
st(0) - st(1)
FCOM op Сравнение вещественных чисел
Установка флагов по результатам операции
st(0) - op (mem32/mem64)
FCOMP op Сравнение вещественных чисел с извлечением
из стека
Установка флагов по результатам операции
st(0) - op (mem32/mem64)
FCOMPP Сравнение вещественных чисел с двойным извлечением
из стека численных регистров
Установка флагов по результатам операции
st(0) - st(1)
FICOM op Сравнение целых чисел
Установка флагов по результатам операции
st(0) - op (mem16/mem32)
FICOMP op Сравнение целых чисел с извлечением
из стека численных регистров
Установка флагов по результатам операции
st(0) - op (mem16/mem32)
FTST Сравнение с нулем
Сравнивается st(0) и 0.0
FUCOM st(i) Неупорядоченное сравнение (только 80486)
Содержимое st(0) сравнивается с st(i)
FUCOMP st(i) Неупорядоченное сравнение (только 80486)
с извлечением из стека численных регистров
Содержимое st(0) сравнивается с st(i)
FUCOMPP st(i) Неупорядоченное сравнение (только 80486)
с двойным извлечением из стека численных регистров
Содержимое st(0) сравнивается с st(i)
FXAM Проверка верхушки стека
По состоянию st(0) устанавливаются коды условий
Арифметические команды
FADD Сложение вещественных чисел
st(0) <- st(0) + st(1)
FADD src Сложение вещественных чисел
st(0) <- st(0) + src (mem32/mem64)
FADD st(i),st Сложение вещественных чисел
st(i) <- st(i) + st(1)
FADDP st(i),st Сложение вещественных чисел с извлечением
из стека численных регистров
st(i) <- st(i) + st(1)
FIADD src Сложение целых чисел
st(0) <- st(0) + src (mem16/mem32)
FSUB Вычитание вещественных чисел
st(0) <- st(0) - st(1)
FSUB src Вычитание вещественных чисел
st(0) <- st(0) - src
FSUB st(i),st Вычитание вещественных чисел
st(i) <- st(i) - st(1)
FSUBP st(i),st Вычитание вещественных чисел с извлечением
из стека численных регистров
st(i) <- st(i) - st(1)
FSUBR st(i),st Вычитание вещественных чисел обратное
st(0) <- st(i) - st(0)
FSUBRP st(i),st Вычитание вещественных чисел обратное
с извлечением из стека численных регистров
st(0) <- st(i) - st(0)
FISUB src Вычитание целых чисел
st(0) <- st(0) - src (mem16/mem32)
FISUBR src Вычитание целых чисел обратное
st(0) <- src (mem16/mem32) - st(0)
FMUL Умножение вещественных чисел
st(0) <- st(0) * st(1)
FMUL st(i) Умножение вещественных чисел
st(0) <- st(0) * st(i)
FMUL st(i),st Умножение вещественных чисел
st(i) <- st(0) * st(i)
FMULP st(i),st Умножение вещественных чисел с извлечением
из стека численных регистров
st(i) <- st(0) * st(i)
FIMUL src Умножение целых чисел
st(0) <- st(0) * src (mem16/mem32)
FDIV Деление вещественных чисел
st(0) <- st(0) / st(1)
FDIV st(i) Деление вещественных чисел
st(0) <- st(0) / st(i)
FDIV st(i),st Деление вещественных чисел
st(i) <- st(0) / st(i)
FDIVP st(i),st Деление вещественных чисел с извлечением
из стека численных регистров
st(i) <- st(0) / st(i)
FIDIV src Деление целых чисел
st(0) <- st(0) / src (mem16/mem32)
FDIVR st(i),st Деление вещественных чисел обратное
st(0) <- st(i) / st(0)
FDIVRP st(i),st Деление вещественных чисел обратное
с извлечением из стека численных регистров
st(0) <- st(i) / st(0)
FIDIVR src Деление целых чисел обратное
st(0) <- src (mem16/mem32) / st(0)
FSQRT Извлечение квадратного корня
st(0) <- v st(0)
FSCALE Масштабирование на степень числа 2
st(0) <- 2 | st(0)
FXTRACT Извлечение экспоненты
st(0) <- значение экспоненты st(0)
FPREM Вычисление частичного остатка
st(0) <- st(0) MOD st(1)
FPREM1 Вычисление частичного остатка в стандарте IEEE,
только для 80486
st(0) <- st(0) MOD st(1)
FRNDINT Округление до ближайшего целого
st(0) <- INT(st(0))
FABS Вычисление абсолютного значения
st(0) <- ABS(st(0))
FCHS Изменение знака
st(0) <- -st(0)
Трансцендентные команды
FCOS Вычисление косинуса
st(0) <- COS(st(0))
FPTAN Вычисление частичного тангенса
st(0) <- TAN(st(0))
FPATAN Вычисление частичного арктангенса
st(0) <- ATAN(st(0))
FSIN Вычисление синуса
st(0) <- SIN(st(0))
FSINCOS Вычисление синуса и косинуса
st(1) <- SIN(st(0))
st(0) <- COS(st(0))
F2XM1 Вычисление выражения 2x-1
st(0) <- 2st(0)-1
FYL2X Вычисление Y * log2(X)
Y = st(0), X = st(1)
st(0) <- Y * log2(X)
FYL2XP1 Вычисление Y * log2(X+1)
Y = st(0), X = st(1)
st(0) <- Y * log2(X+1)
Управляющие команды
FINIT Инициализация арифметического сопроцессора
FSTSW AX Запись слова состояния
AX <- MSW
FSTSW dest Запись слова состояния
dest (mem16) <- MSW
FLDCW src Загрузка управляющего слова
CW <- src (mem16)
FSTCW dest Запись управляющего слова
dest (mem16) <- CW
FCLEX Сброс флагов особых случаев
FSTENV dest Запись содержимого всех регистров
сопроцессора, кроме численных
FLDENV src Загрузка содержимого всех регистров
сопроцессора, кроме численных
FSAVE dest Запись содержимого всех регистров
сопроцессора
FRSTOR src Загрузка содержимого всех регистров
сопроцессора
FINCSTP Увеличение указателя стека численных
регистров на 1
st(6) <- st(5)
st(5) <- st(4)
st(4) <- st(3)
st(3) <- st(2)
st(2) <- st(1)
st(1) <- st(0)
st(0) <- пустой
FDECSTP Уменьшение указателя стека численных
регистров на 1
st(0) <- st(1)
st(1) <- st(2)
st(2) <- st(3)
st(3) <- st(4)
st(4) <- st(5)
st(5) <- st(6)
st(6) <- st(7)
st(7) <- пустой
FFREE Освобождение регистра st(i)
Команда помечает численный регистр st(i)
как неинициализированный, записывая в
соответствующее поле регистра тегов значение 11
FNOP Холостая команда
st(0) <- st(0)
WAIT/FWAIT Синхронизация центрального процессора и
арифметического сопроцессора
Центральный процессор будет находиться
в состоянии ожидания до тех пор, пока
сопроцессор не завершит выполнение текущей команды.
FSETPM Установить защищенный режим работы
Процессор переходит в защищенный режим работы,
возврат в реальный режим возможен только
при сбросе сопроцессора.
![[Назад]](../../prev.gif) |
![[Содеожание]](../../sod.gif) |
|