Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2009, 16:44   #11
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

Команды fcomi, fcomip, fucomi, fucomip сравнивают st0 с другим регистром FPU и ставят, в зависимости от результатов, флаги ZF, PF и CF. fcomip и fucomip ещё выталкивают вершину стека после завершения сравнения. Отличие команды fcomi от fucomi заключается в том что команда генерирует исключение в случае если один из операндов NaN. Аналогично для команд fcomip и fucomip.
Семейство команд fcmovxx сравнивает операнды и перемещает операнд-источник в операнд-адресат, если условие выполняется, операнд-адресат всегда регистр st0. Например, fcmovb st0,st2 переводит st2 в st0 если st0 меньше чем st2. Таблица «окончаний» для команды fcmovxx.

Цитата:
Мнемоника Тестируемое условие Описание
b CF = 1 меньше
e ZF = 1 равно
be CF or ZF = 1 меньше или равно
u PF = 1 ненормализованное
nb CF = 0 не меньше
ne ZF = 0 не равно
nbe CF and ZF = 0 не меньше и не равно
nu PF = 0 нормализованное
NiCola999 вне форума Ответить с цитированием
Старый 07.12.2009, 07:52   #12
airyashov
Форумчанин
 
Регистрация: 02.04.2008
Сообщений: 358
По умолчанию

Цитата:
Сообщение от NiCola999 Посмотреть сообщение
Команды fcomi, fcomip, fucomi, fucomip сравнивают st0 с другим регистром FPU и ставят, в зависимости от результатов, флаги ZF, PF и CF. fcomip и fucomip ещё выталкивают вершину стека после завершения сравнения. Отличие команды fcomi от fucomi заключается в том что команда генерирует исключение в случае если один из операндов NaN. Аналогично для команд fcomip и fucomip.
Семейство команд fcmovxx сравнивает операнды и перемещает операнд-источник в операнд-адресат, если условие выполняется, операнд-адресат всегда регистр st0. Например, fcmovb st0,st2 переводит st2 в st0 если st0 меньше чем st2. Таблица «окончаний» для команды fcmovxx.
с какой радости эти команды взаимодействуют с регистром флагов, у fpu свои флаги в SW регистре
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666
mail: airyashov(а)inbox.ru
airyashov вне форума Ответить с цитированием
Старый 07.12.2009, 20:52   #13
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

кстати я свою проблему понял( почему тогда не работал fcom)
fcom сравнивает два числа но не трогает EFlags
вместо него надо было использовать
fcomi
NiCola999 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
e^x в FPU NiCola999 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 19 21.11.2009 23:16
работа с FPU NiCola999 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 14 04.11.2009 00:01