Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых

Аппаратное обеспечение IBM PC

© Александр Фролов, Григорий Фролов
Том 2, книга 1, М.: Диалог-МИФИ, 1992.

[Назад] [Содеожание]

14.12. Команды сопроцессоров 8087/80287/80387

Загрузка данных в стек

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          Установить защищенный режим работы

                        Процессор переходит в защищенный режим работы,
                        возврат в реальный режим возможен только
                        при сбросе сопроцессора.



[Назад] [Содеожание]