Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ряд Тэйлора 
:(
    Опции темы
БабушкаБу
Дата 13.12.2005, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 13.12.2005

Репутация: нет
Всего: нет



Мне нужна программка на BASM c использованием математчиеского сопроцессора - Нахождение
sin (x) или cos(x) либо ln(x+1) через разложение в ряд Тэйлора.

например:
...............m........(n-1).......n
ln(x+1) = E......-1.......*..(x )/n!;
...............n=1

x и m вводятся клавиатуры...

Помогите пожалуйста...

Это сообщение отредактировал(а) БабушкаБу - 13.12.2005, 22:43
PM MAIL   Вверх
БабушкаБу
Дата 14.12.2005, 00:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 13.12.2005

Репутация: нет
Всего: нет



//функция на с++
double lnNew(double x)
{
double Sum;
int k;
double current;
Sum=0;
k=1;
current=x;
while (fabs(current) > 1e-6)
{
Sum += current;
k++;
current *= -x;
current /= k;
}
return Sum;
}

//переведена в ассемблер
lnNew:
pushl %ebp
movl %esp, %ebp
subl $24, %esp
fldz fstpl -8(%ebp)
movl $1, -12(%ebp)
fldl 8(%ebp)
fstpl -24(%ebp).L2:
fldl -24(%ebp)
fabs fldl .LC1
fxch %st(1)
fucompp
fnstsw %ax
testb $69, %ah
je .L4
jmp .L3.L4:
fldl -8(%ebp)
faddl -24(%ebp)
fstpl -8(%ebp)
leal -12(%ebp), %eax
incl (%eax)
fldl 8(%ebp)
fchs fldl -24(%ebp)
fmulp %st, %st(1)
fstpl -24(%ebp)
fildl -12(%ebp)
fldl -24(%ebp)
fdivp %st, %st(1)
fstpl -24(%ebp)
jmp .L2.L3:
fldl -8(%ebp)
leave ret

Как мне использовать этот код в паскале???
P.s.32-битный код

Это сообщение отредактировал(а) БабушкаБу - 14.12.2005, 00:08
PM MAIL   Вверх
Chingachguk
Дата 14.12.2005, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: 11
Всего: 18



Это ассемблер AT (unix), в дельфи такой не пойдет. Сделай асм-листинг в VC (ну или другой, но под win32).

А вообще-то примерно так:

{ //переведена в ассемблер }
function lnNew(x: double): double;
var
Sum, current: double;
k: integer;
begin
asm
{ Sum:=0; }
{fldz}
fldz
{fstpl -8(%ebp)}
fstp Sum

{ k:=1; }
{movl $1, -12(%ebp) }
mov dword ptr k,1

{ current:=x; }
{fldl 8(%ebp) }
fld x
{fstpl -24(%ebp).}
fstp current

{ while (fabs(current) > 1e-6) - начало цикла }
@L2:
...

end;
end;



--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0411 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.