QWORD?
FIST как-то не понятно и не логично округляет в -1.
finit
fld [uint64]
fld [int64]
fistp [result_i64] ; тут нормально, 0x7FFFFFFFFFFFFFFF
fistp [result_u64] ; а тут проблема. Вместо 0xFFFFFFFFFFFFFFFF (или хотя бы округления до 0x7FFFFFFFFFFFFFFF) оно пишет 0x8000000000000000.
uint64 dt 18446744073709551615.0
int64 dt 9223372036854775807.0
Нужно сохранить QWORD, а в примере сохраняешь TWORD, явно не указываешь размеры, вот и спотыкаешься.
и мне подскажи решение https://t.me/ChatAssembler/240145
Нет, там правильно QWORD описано result_i64 dq ? result_u64 dq ?
у меня есть код, который переводит число в строку и печатает его. если число = 0x80...0, тогда оно не работает.
Помню я тоже сталкивался с такой проблемой на FPU, в печаталке чисел, решением было проверка ошибочного знака и добавление 2^64.
попробуй заполнять ответ остатком от деления на FF своего числа в fpu
Обсуждают сегодня