Научите, как преобразовать целое число в вещественное. Такой вариант не прокатывает, их стека возвразается целое число: fild [x] fstp [x] Как правильно делается? Компилятор - FASM.
aaleksander Конкретно по FASM сказать не могу. Но общий совет - не полагаться на компилятор и явно указывать размер операндов: fild dword ptr [offset i] ;dword fst dword ptr [offset f] ;float\single 4 байта fst qword ptr [offset d] ;double 8 байт fstp tbyte ptr [offset t] ;extended 10 байт Это должно работать всегда и везде. А почему у тебя возвращается целое число: 1) либо "умный" компилятор заменяет fstp на fistp, если у тебя x определено как целое (хотя должен бы выдать Error) 2) либо fstp выдает все-таки double или extended, первый dword которых ты воспринимаешь как целое; если это так, то попробуй отрицательное число - результат должен измениться.
Вот код который компилируется FASM'ом и работает без проблем: Код (Text): fild [foo] fstp [foo] foo dd -2 А вот так можно сразу загружать вещественные числа: Код (Text): fld [foo] foo dd -2.0