logo

Главная Система команд x86 Система команд FPU FLD

Система команд x86

Программирование - Архитектура и система команд микропроцессоров x86
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

FLD

Загрузить вещественное значение

Влияние команды на флаги и форматы команды:

IS

IA

D

Z

O

U

P

*

*

*

 

 

 

 

 

Код

Команда

Описание

Проц.

Пример

D9 /0

FLD m32real

Загрузить m32real в регистровый стек

8087

fld dword ptr [bx]

DD /0

FLD m64real

Загрузить m64real в регистровый стек

8087

fld qword ptr [bp]

DB /5

FLD m80real

Загрузить m80real в регистровый стек

8087

fld tbyte ptr [si+12]

D9 C0+i

FLD ST(i)

Загрузить ST(i) в регистровый стек

8087

fld ST(3)

Описание:

Команда FLD помещает операнд-источник в стек FPU. Если операндом-источником является регистр, то номер регистра используется прежде, чем происходит уменьшение указателя вершины стека. В частности, код FLD ST(0) дублирует вершину стека.

Если операнд-источник представлен коротким или длинным вещественным, то он автоматически преобразуется к формату временного вещественного.

Флаги C0, C2, C3 регистра SW после выполнения команды неопределены, флаг C1 устанавливается равным 0 в случае возникновения стековой ошибки #IS.

Исключение #IA возникает, если операнд-источник SNaN или представлен в неподдерживаемом формате.

Операция:

IF SRC это ST(i) THEN temp = ST(i); FI;

TOP = TOP - 1;

IF SRC это операнд в памяти

THEN

  ST(0) = ExtendedReal(SRC);

ELSE (* SRC это ST(i) *)

  ST(0) = temp;

FI;

Особые ситуации защищенного режима:

#GP(0), если используется некорректный эффективный адрес операнда в памяти в сегментах CS, DS, ES, FS, GS или нулевой селектор.
#SS(0) при использовании некорректного эффективного адреса в сегменте SS.
#NM, если CR0.EM = 1 или CR0.TS = 1.
#PF(Код ошибки) при страничной ошибке.
#AC(0) при невыровненной ссылке в память при текущем уровне привилегий равном 3.

Особые ситуации режима реальной адресации:

#GP, если любая часть операнда находится вне пространства эффективных адресов в сегментах CS, DS, ES, FS или GS.
#SS, если любая часть операнда находится вне пространства эффективных адресов в сегменте SS.
#NM, если CR0.EM = 1 или CR0.TS = 1.

Особые ситуации режима V86:

Такие же, как и в режиме реальной адресации.
#PF(Код ошибки) при страничной ошибке.
#AC(0) при невыровненной ссылке в память.

Замечание:

Команда FLD m80real на процессорах Intel387, Intel486, … не может вызывать исключение #D, т.к. это не арифметическая команда. На сопроцессорах Intel287 и 8087 исключение #D возможно. Это не влияет на совместимость программного обеспечения.

В командах FLDm32real и FLDm64real для процессоров Intel387, Intel486, … загружаемое денормализованное значение будет точно конвертировано к временному вещественному. Для сопроцессоров Intel287 и 8087 загружаемое денормализованное значение будет конвертировано к ненормализованному. Если в программе далее следует команда FXTRACT или FXAM, процессоры Intel387, Intel486, … дадут результат отличный от сопроцессоров Intel287 и 8087. Данное изменение было введено для совместимости со стандартом IEEE-754.

В командах FLD m32real и FLD m64real, когда загружается SNaN, в процессорах Intel387, Intel486, … возникает исключение #IA, а в сопроцессорах Intel287 и 8087 — нет. Обработчик исключения необходимо скорректировать для обработки этого условия. Изменение было внесено для совместимости со стандартом IEEE-754.


Входит в группу команд: Система команд FPU




Все права защищены © Алексей Ровдо, 1994-2023. Перепечатка возможна только по согласованию с владельцем авторских прав. admin@club155.ru

Top.Mail.Ru       Сервер радиолюбителей России - схемы, документация,

 соревнования, дипломы, программы, форумы и многое другое!   схемы новости электроники