logo

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

Система команд 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

FADD

Сложение

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

IS

IA

D

Z

O

U

P

*

*

*

 

*

*

*

 

Код

Команда

Описание

Проц.

Пример

D8 /0

FADD m32real

ST(0) = m32real + ST(0)

8087

fadd dword ptr [si]

DC /0

FADD m64real

ST(0) = m64real + ST(0)

8087

fadd qword ptr [bx]

D8 C0+i

FADD ST,ST(i)

ST(0) = ST(i) + ST(0)

8087

fadd ST,ST(4)

DC C0+i

FADD ST(i),ST

ST(i) = ST(0) + ST(i)

8087

fadd ST(2),ST

DE C0+i

FADDP ST(i),ST

ST(i) = ST(0) + ST(i), верхний элемент выталкивается из регистрового стека

8087

faddp ST(3),ST

DE C1

FADDP

ST(1) = ST(0) + ST(1), верхний элемент выталкивается из регистрового стека

8087

faddp

DE /0

FIADD m16int

ST(0) = m16int + ST(0)

8087

fiadd word ptr puls

DA /0

FIADD m32int

ST(0) = m32int + ST(0)

8087

fiadd dword ptr memo

Описание:

Команды сложения FADD, FADDP, FIADD прибавляют операнд-источник к операнду-назначения (в однооперандных формах команд сложения в качестве операнда-назначения используется ST) и возвращают сумму на место операнда-назначения. Команда FADDP, кроме этого, выталкивает из регистрового стека FPU верхний элемент (ST). Если в мнемонике команды FADDP не записано никакого операнда, то ST(1) прибавляется к ST.

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

Флаги C0, C2, C3 регистра SW после выполнения команды неопределены, флаг C1 устанавливается равным $(0$) в случае возникновения стековой ошибки #IS, а также указывает направление округления в случае возникновения исключения #P (неточный результат) (C1 = 0 – округление к меньшему, C1 = 1 – округление к большему).

Сумма двух операндов со значениями $(0$) с противоположными знаками дает в результате $(+0$), кроме случая, когда задано округление к -, тогда результатом будет $(-0$). Если операнд-источник — целое равное $(0$), то перед сложением оно преобразуется в $(+0$).

В таблице 6.135. приведены возвращаемые командами сложения значения для различных классов операндов, а также случаи, когда возникает исключение #IA.

Таблица 6.135. Значения, возвращаемые командами FADD, FADDP, FIADD
для различных классов операндов

SRCDEST

-INF

-F

-0

+0

+F

+INF

NaN

-INF

-INF

-INF

-INF

-INF

-INF

#IA

NaN

-F

-INF

-F

SRC

SRC

±F или ±0

+INF

NaN

-I

-INF

-F

SRC

SRC

±F или ±0

+INF

NaN

-0

-INF

DEST

-0

±0

DEST

+INF

NaN

+0

-INF

DEST

±0

+0

DEST

+INF

NaN

+I

-INF

±F или ±0

SRC

SRC

+F

+INF

NaN

+F

-INF

±F или ±0

SRC

SRC

+F

+INF

NaN

+INF

#IA

+INF

+INF

+INF

+INF

+INF

NaN

NaN

NaN

NaN

NaN

NaN

NaN

NaN

NaN

 

 

 

 

 

 

 

 

I - Конечное целое значение

 

 

 

 

 

F - Конечное вещественное значение

 

 

 

 

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

Операция:

DEST = DEST + SRC;

IF (Команда FADDP) THEN Pop(ST); 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) при невыровненной ссылке в память.

Замечание:

Некоторые ассемблеры поддерживают для безоперандной версии команды FADDP мнемонику FADD. То есть безоперандная мнемоника всегда вызывает выталкивание из стека верхнего элемента.


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




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

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

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