Witam napisałem program w assemblerze za pomocą koprocesora podnoszący wszystkie elementy wektora do kwadratu, który następnie umieścia je w tym samym wektorze. Niestesty po wyświetleniu tablicy w main wartości nie zostały podniesione do kwadratu. Też nie wiem czy w prawdłowy sposob umiesciam wartosci podniesione do kwadratu z powrotem do wektora.
Z góry dziękuje za pomoc!
#include "stdafx.h"
#include <iostream>
using namespace std;
void fun(double *tab,int n)
{
double wynik = 0;
__asm{
mov ecx,n; // rozmiar
mov edi,tab; //adres początku wektora
fld [edi]; // tab[0] na wierzchołek
fld st; // to samo
fmul; // st:=st*st(1)
fstp [edi]; // sciągniecie ze stosu
dec ecx;
label:
add edi,8; // następny element wektora
fld [edi]; // tab[1] na wierzchołek
fld st;
fmul;
fstp [edi];
loop label;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int n= 10;
double* tab = new double[n];
for(int i = 0 ; i < n ; i++)
{
tab[i]=2;
}
fun(tab,n);
for(int i = 0 ; i < n;i++)
{
cout << tab[i] << "\n";
}
system("pause");
return 0;
}