спасите меня.....люди......
какой же не понятный этот ассемблер....
необходимо сделать вставку ассемлера в С++
дан пример: |S(Ai + Bi)| * X + X^2
на с++ все верно а на ассемблере где то ошибка....кто понимает помогите мне
#include "stdafx.h"
#include "iostream"
#include "windows.h"
int a[3];
int b[3];
int my_c(int x)
{
int pos,i;
pos=0;
int sum=0;
for(i=0;i<3;i++)
{
pos=0;
{
sum= sum+(a[pos]+ b[i]);
pos++;
}
}
sum=sum*x;
int pow=0;
pow=x*x;
sum= sum+pow;
return sum;
}
int my_assembler(int x)
{
int sum=0, pos=0, pow=0, elem_b=0;
__asm
{
MOV eax,0
MOV ebx,0
MOV ecx,3
MOV esi,0
//вычисление суммы массивов
cycle_i:
PUSH ecx
MOV ecx,3
MOV pos,0
MOV esi,pos
MOV eax,a[esi]
ADD esi,4
MOV pos,esi
MOV esi,elem_b
MOV edx,b[esi]
ADD esi,4
MOV elem_b,esi
//сумма массивов
ADD eax,edx
ADD eax,sum
MOV sum,eax
SUB esi,4
MOV elem_b,esi
POP ecx
LOOP cycle_i
//умножаем sum на x
MOV eax,0
MOV ebx,0
MOV ecx,0
MOV eax,sum
MOV ecx,x
IMUL ecx
MOV sum,eax
//вычисляем квадрат x
MOV edx,x
MOV ecx,x
iMUL cx
//складываем с суммой квадрат x
MOV eax,sum
ADD eax,ecx
MOV sum,eax
}
return sum;
}
void main()
{
int i;
system("title Вычисление значения выражения");
printf("\tWasil'eva Julia CB-901 ZY\n");
printf("|S(Ai + Bi)| * X + X^2 \n");
for(int i=0; i<3; i++)
{
printf("Vvedite element A: ");
scanf("%d",&a[i]);
}
for(int i=0; i<3; i++)
{
printf("Vvedite element B: ");
scanf("%d",&b[i]);
}
int x=0;
printf("Vvedite chislo X: ");
scanf("%d",&x);
printf("C++=%i\n",my_c(x));
printf("Otvet=i\n",my_assembler(x));
system("pause");
}
заранее спасибо)