Помощь - Поиск - Пользователи - Календарь
Полная версия: Вычисление значения функции
Форум «Всё о Паскале» > Delphi, Assembler и другие языки. > Assembler
perfect
Тема работы - изучение прикладной архитектуры процессора Intel 8086 -80486, команд обработки целых двоичных чисел в целочисленном устройстве процессора Intel 80486, вещественных и целых десятичных в устройстве FPU


3. Разрабатываемая программа должна содержать следуюцие разделы:
· Ввод значения Х в символьном виде в десятичном представлении посредством клавиатуры;
· Преобразование значения Х в выбранное внутреннее представление.
· Вычисление заданного выражения y = f (X) с сохранением результата вычисления в памяти.
· Преобразование результата вычисления в десятичное представление.
· Преобразование результата вычисления в символьное десятичное представление
· Вывод результата вычисления в символьном вид.на экран.
1. Все цифровые данные определить в программе как соответствующие константы.
2. Вычислить Y – вычисления произвести, используя 16 или 32 – битную арифметику в зависимости от требуемого диапазона представления данных
3. Вывести значения Y на экран монитора в шестнадцатеричном представлении.
4. Преобразовать Y в десятичное представление и результат вывести на экран монитора.
Примечание. 1. Задача решается с использованием шелых и вещественных чисел. Тип чисел выбирается студентом сомостоятельно.
2. Рекомендуется первоначально решить задачу с определением переменной X как константы в разделе сегмента данных и после правильного решнения вычислительной части задания перейти к решению задачи ввода переменной X и вывода результата решений Y.


Выражение для вычисления
1)y=2(x-1)^3
2)y=(x^2+2x+2)e^(-x)
FreeMan
Проблема с вводом числа
тут есть ввод, фпу, вывод...
FreeMan
Цитата
как вычислить e^x ?

2^(log2e*x)
команды фпу: FLDL2E - загрузить log2e, F2XM1 - (получить 2 в степени st(0)) -1
perfect
спасибо Олежкин!!!!!! heart.gif wub.gif
FreeMan и тебе спасибо. только я ничего не понимаю в ассемблере smile.gif поэтому та ссылка мне не помогла, но все равно СПАСИБО!!!!
Altair
на самом деле нифига..
Цитата
2^(log2e*x)
команды фпу: FLDL2E - загрузить log2e, F2XM1 - (получить 2 в степени st(0)) -1

не выходит так..

вот код
 FINIT	  

fild con1
fldl2e
fmul
fild con1
fsubr st(1), st
f2xm1
fistp stp; 2^ (log2e)
fild p_d
fild con2
fscale
fistp tw
fild tw
fild stp
fmul


fistp rw

нифига не поучается считаь так...

примеры из интерена вооще не работают..
напримре отсюда:
http://club.shelek.com/viewart.php?id=101
;########### MYEXP ###########
; Мой вариант вычисления экспоненты
fld ARGUMENT
fldl2e
fmul
ffld st(0)
ffld st(0)
frndint
fsub
f2xm1
fld1
fadd
fxch
frndint
fld1
fscale
fxch
ffree st(0)
fincstp
fmul
fstp RESULT
он не компилируется вообще...

что можно скзаать.... ужас.... нигде не найти описаний, документации.... примеров...

вот случай когда еще раз поклонишься дедушке ВИрту, которые нас избавил от подобного .....
кхм..
Altair
вот что я пытался сделать
Нажмите для просмотра прикрепленного файла
при запуске программы вводим 2-х значное число (например 02) и жмем вволд..
результат - у меня получается только 2^х..
вот почему..

e^x = 2^ (xlog2e)
НО!
когда мы вычисляем 2^ ... асму требуется что бы степень ьыла от -1 до 1...
а если например 2^14 ?
я решил сделать так..
2^ (x*log2e) = 2^x * 2^log2e
2^x вычилсяем командой scale. а 2^log2e = 2* 2*(log2e-1)
тогда вролде бы долно работать но получаю единицу, и в результате
протсо вычисление
2^x вместо e^x
sad.gif
FreeMan
Цитата
2^ (x*log2e) = 2^x * 2^log2e

2^x*2^log2e=2^(x+log2e)
команда fscale работает с любыми показателями. она умножает st(0) на 2^st(1), но перед этим округляет st(1) до целого в сторону 0.
теперь смотри. есть команда F2XM1. она работает только с числами от -1 до +1, то есть подходит для работы с дробной частью
2^(дробь)=2^(целая часть+дробная часть)=2^(целая часть)*2^(дробная часть). число x*log2e = дробное число. а значит нахождение e^x сводится к разбиению дробного числа на целое и остаток и вычисление 2 в соответствующих степенях соответствующими командами
Цитата
он не компилируется вообще...

там есть ошибки. дома посмотрю где эти ошибки и исправлю
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.