Задача у меня такая: Нужно разложить вещественное число на целую и дробную часть, и поместить в eax, в ah- целую в al- дробную. Нашел описание вещественных чисел, но что-то я не пойму как это в двоичной системе работает. В дебагере число 1.0f - F380 0000 (1111 0011 1000 0000 0000 0000 0000 0000), 2.0f - 4000 0000, 3.0f - 4040 0000 , 1.1f 3F8CCCCD. Где мантиса? Где знак и степень? И еще почему команда fild вместо -1.0 в регистре сопроцессора показывает 1065353216.0000000000 а fld правильное 1.0. Отладчик ollyDbg10. Извините за нубство. Спасибо заранее.
Там, где им и положено быть. 1.0f := 0x3F800000 == /*знак*/ 0<<31 | (/*экспонента*/ 0+/*смещение*/ 127)<<23 | /*мантисса без лидирующей единицы*/ 0 Потому что fild, как и сказано в мурзилке, грузит целое число со знаком. 0x3F800000 == 1065353216.