Помощь - Поиск - Пользователи - Календарь
Полная версия: сложение и деление вещественных чисел
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ассемблер
amega
Добрый день!
помогите с идеей а то сосвсем чет туплю, как мне реализовать 1/5+(1/5)^2?
вместо 5 может быть любое число от 1 до 65535.
volvo
    fild i ; грузим целое число
fld1 ; грузим единицу
fdivr ; делим 1 на i
fld st(0) ; дублируем результат
fmul st(0) ; возводим 1/i в квадрат
fadd ; складываем 1/i и (1/i)^2
fst f ; сохраняем результат
?
amega
м забыл про сопроцесор совсем, написал

.8087
.model small
.stack 100h
.data
f dw ?
i dw 5
.code
start:
mov ax,@data
mov ds,ax

fild i ; грузим целое число
fld1 ; грузим единицу
fdivr ; делим 1 на i
fld st(0) ; дублируем результат
fld st(1) ; дублируем результат
fmul ; возводим 1/i в квадрат
fadd ; складываем 1/i и (1/i)^2
fst f ; сохраняем результат

mov ah,4Ch
int 21h
end start



выдает ошибку что ф не тго типа поменял на дд получилось в ст(0)=0.24 а в ф не то число совсе, я так понял это из за того что разный тип, но как эт исправить ?
Нажмите для просмотра прикрепленного файла





volvo
Цитата
но как эт исправить ?
В каком смысле "исправить"? Посмотреть на содержимое переменной F? Не проблема: запустил программу, дошел до строки FST f, выполнил ее, выбрал в меню Дебаггера View->Dump, в его контекстном меню - сначала Display As -> Float, потом GoTo -> название переменной, то есть F... Результат - на скриншоте:
Нажмите для просмотра прикрепленного файла
... Все нормально, значение правильное, что еще надо?
amega
спасибо, разобрался!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.