Войти

Показать полную графическую версию : assembler арифм. сопроцессор


ferrum2688
08-06-2009, 13:00
Делаю лабу по ассемблеру, Использую tasm. Программирую арифметический сопроцессор.
Почему при попытке вычесть из 8 число 8, в результате получается -8.6736173....e-19, а не ноль. Это сильно мешает.
Как это исправить?

DillerInc
08-06-2009, 19:11
ferrum2688, вы в курсе,что есть различия между целочисленными и вещественными данными?
Я думаю,что проблема кроется именно в этом.
Вот код для примера:

local dwTempValue:DWORD

mov dwTempValue, 08
finit
fild dwTempValue ; Загружаем в стек сопроцессора целочисленное значение
fisub dwTempValue ; Выполняем целочисленное вычитание
fistp dwTempValue ; Выталкиваем из стека сопроцессора целочисленный результат

У меня в локальную переменную сохраняется нуль,как и должно быть.

pva
09-06-2009, 07:23
Почему при попытке вычесть из 8 число 8, в результате получается -8.6736173....e-19, а не ноль »
Можно код? у меня и с плавающей точкой нуль получается




© OSzone.net 2001-2012