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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.12.2017, 21:32   #1
WereW
Новичок
Джуниор
 
Регистрация: 16.04.2017
Сообщений: 1
По умолчанию Сравнение вещественных чисел

Будто бы простая задача: сравнить два действительных числа в стеке, то, которое является меньшим - вытолкнуть. Но почему-то работает некорректно - между 6 и 9 выберет 6 как больше, но между 6 и 4 выберет 4 большим
TASM
Код:
getMax:
        fcom st(1)
        ja B_max
        jmp fin
        B_max:
        fstp trash
        fin:
    ret
WereW вне форума Ответить с цитированием
Старый 16.12.2017, 23:47   #2
7in
(aka Jin X) !RTFM!
Форумчанин
 
Аватар для 7in
 
Регистрация: 14.12.2014
Сообщений: 295
По умолчанию

fcom записывает результат не во флаги CPU, а в слово статуса FPU. Его надо сначала извлечь:
Код:
fcom st(1)
fstsw ax
sahf
ja ...
Во флаги CPU записывает fcomi (fucomi, fcomip, fucomip):
Код:
fcomi st,st(1)
ja ...
Но это уже для Pentium Pro+ (.686)
Делаю лабы на Asm/Delphi/C++/Python/VBA(Excel): asmlabs.ru
7in вне форума Ответить с цитированием
Старый 17.12.2017, 04:06   #3
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,162
По умолчанию

Привет, 7in!
Вещественные числа между собой вполне можно и при помощи целочисленных CMP, TEST, SUB сравнивать, сперва по знаку, потом по модулю. Первыми битами идет степень, если степени одинаковы, то сравниваются мантиссы. А если не по модулю, то придется запомнить, что положительные вещественные сравниваются аналогично целочисленным, а у отрицательных сравнение идет в "обратную сторону"...

Последний раз редактировалось Mikl___; 17.12.2017 в 04:09.
Mikl___ вне форума Ответить с цитированием
Старый 19.12.2017, 17:32   #4
7in
(aka Jin X) !RTFM!
Форумчанин
 
Аватар для 7in
 
Регистрация: 14.12.2014
Сообщений: 295
По умолчанию

Привет, Mikl___!
Если числа находятся в регистрах, то боюсь, cmp, test, sub тут не помогут
Да и даже при сравнении чисел в памяти – какой смысл разводить эту "бодягу"? С несколькими тормознутыми jcc-инструкциями и пр.
Делаю лабы на Asm/Delphi/C++/Python/VBA(Excel): asmlabs.ru
7in вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан массив,состоящий N (N>1) вещественных чисел. Найти среднеарифметическое значение чисел массива. nikola_orsha Паскаль, Turbo Pascal, PascalABC.NET 2 11.10.2016 13:05
Дана последовательность из 100 вещественных чисел. Определить , со скольких чётных чисел она начинается SnS Lazarus, Free Pascal, CodeTyphon 2 22.09.2013 18:48
Сравнение вещественных чисел. _PROGRAMM_ Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 12 20.09.2012 22:47
Дана последовательность вещественных чисел. каждая пара чисел задает границы отрезка. Найти количество целых чисел на отрезках 'studentka' Помощь студентам 6 30.11.2011 18:35
Дано n вещественных чисел а1, а2,…,аn. Определите число соседств двух чисел разного знака (Паскаль) bambam Помощь студентам 1 29.11.2011 11:36