Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2010, 18:32   #1
DartDayring
Пользователь
 
Регистрация: 10.02.2010
Сообщений: 55
Стрелка Организация цикла

помогите сделать вставку на ассемблере в СИ
Вставка должна выполнять цикл

Код:
#include "stdafx.h"
#include <conio.h>
#include "iostream"
#include <math.h> 
 
int _tmain(int argc, _TCHAR* argv[])
{

	setlocale(LC_ALL,"Russian");
	float x;
	printf("\nВведите X = ");scanf("%f",&x);
	float e=1;
	float xpow=x;
	float de=xpow;
	int fact=1;
	int i=1;
	while(de>(x/1000))
	{
		e += de;
		xpow *= x;
		fact *= (++i);
		de = xpow/fact;
	}
	printf("\ne^x = %f\n\n",e);
	return 0;
}
DartDayring вне форума Ответить с цитированием
Старый 18.03.2010, 12:13   #2
DartDayring
Пользователь
 
Регистрация: 10.02.2010
Сообщений: 55
По умолчанию

Код:
#include "stdafx.h"
#include <conio.h>
#include "iostream"
#include <math.h> 
 
int _tmain(int argc, _TCHAR* argv[])
{

	setlocale(LC_ALL,"Russian");
	float x;
	printf("\nВведите X = ");scanf("%f",&x);
	float e=1;
	float xpow=x;
	float de=xpow;
	int fact=1;
	int i=1;
	while(de>(x/1000))
	{
		e += de;
		xpow *= x;
		fact *= (++i);
		de = xpow/fact;
	}
	printf("\ne^x = %f\n\n",e);
	
	float S=x/1000,k;
	i=1;
	e=1;
	xpow=x;
	de=xpow;
	fact=1;
	__asm
	{
l:	mov eax,de
		mov ebx,S
		cmp eax,ebx
		je c

		fld xpow
		fmul x
		fdiv fact
		fld i
		fadd i
		fstp k
		fdiv k
		fadd e
		fstp de

		jmp l

	}
	printf("\ne^x = %f\n\n",de);
c:	return 0;
}

Последний раз редактировалось Stilet; 18.03.2010 в 12:52.
DartDayring вне форума Ответить с цитированием
Старый 18.03.2010, 21:59   #3
DartDayring
Пользователь
 
Регистрация: 10.02.2010
Сообщений: 55
По умолчанию

Можите подсказать каким образом организуется цикл в этом случае ??
DartDayring вне форума Ответить с цитированием
Старый 20.03.2010, 12:12   #4
DartDayring
Пользователь
 
Регистрация: 10.02.2010
Сообщений: 55
По умолчанию

#include "stdafx.h"
#include <conio.h>
#include "iostream"
#include <math.h>

int _tmain(int argc, _TCHAR* argv[])
{

setlocale(LC_ALL,"Russian");
float x;
printf("\nВведите X = ");scanf("%f",&x);
float e=1;
float xpow=x;
float de=xpow;
int fact=1;
int i=1;
float eps=1e-10;
while(de>eps )
{
e += de;
xpow *= x;
++i;
fact *= i;
de = xpow/fact;
}
printf("\ne^x = %f\n\n",e);
i=1;
e=1;
xpow=x;
de=xpow;
fact=1;
__asm
{

l:
fld de
fcom eps
jnge c

fld e
fadd de
fstp e
fld xpow
fmul x
fstp xpow
inc i
fld fact
fimul i
fstp fact
fld xpow
fidiv fact
fstp de

jmp l

}
c: printf("\ne^x = %f\n\n",e);
return 0;
}
DartDayring вне форума Ответить с цитированием
Старый 21.03.2010, 12:58   #5
DartDayring
Пользователь
 
Регистрация: 10.02.2010
Сообщений: 55
По умолчанию

Прошу, проверьте код
Код:
#include "stdafx.h" 
#include <conio.h> 
#include "iostream" 
#include <math.h> 

int _tmain(int argc, _TCHAR* argv[]) 
{ 

        setlocale(LC_ALL,"Russian"); 
        float x; 
        printf("\nВведите X = ");scanf("%f",&x); 
        float e=1; 
        float xpow=x; 
        float de=xpow; 
        int fact=1; 
        int i=1;
        float eps=1e-10; 
        while(de>eps )
        { 
                e += de; 
                xpow *= x; 
                ++i;
                fact *= i; 
                de = xpow/fact; 
        } 
        printf("\ne^x = %f\n\n",e); 
        i=1;
        e=1; 
        xpow=x;
        de=xpow;
        fact=1; 
        __asm 
        { 
l: 
	fld de
	fcomp eps
	fstsw ax
	sahf
	jbe c    

            fld e
            fadd de 
            fstp e 
            fld xpow 
            fmul x 
            fstp xpow
	inc i
            fld fact 
            fimul i 
            fstp fact 
            fld xpow 
            fidiv fact 
            fstp de 

            jmp l 

        } 
    c:      printf("\ne^x = %f\n\n",e); 
            return 0; 
}

Последний раз редактировалось DartDayring; 22.03.2010 в 12:50.
DartDayring вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Организация цикла mephist Microsoft Office Excel 2 17.07.2009 16:27
Переход от цикла к циклу не выходя из цикла (без multithreading) Qousio Общие вопросы C/C++ 2 16.05.2009 09:27
Организация сокетов mar4elo Работа с сетью в Delphi 1 01.01.2009 16:50
Организация сети ryton Свободное общение 7 25.06.2008 07:46
Оператор цикла с предусловием While. Оператор цикла с пост условием Repeat McMilin Помощь студентам 7 11.11.2007 14:10