witam,
pisze prosty program operujacy na tablicach i mam pewien problem odnosnie operowania na tablicy. Zainicjowalem dynamiczna tablice, i w C mi wszystko dziala, ale jak probuje przerobic to na asma to w momencie wrzucenia pod rejestr komurki z tablicy wyswietla mi komunikat o przeciazeniu stosu. Nie moge dojsc do tego czego nie widze, moze ktos spojrzy chociaz na kod
#include "stdafx.h"
#include <stdlib.h>
#include <time.h>
int _tmain(int argc, _TCHAR* argv[])
{
int i,j,b,n;
srand((unsigned)time(0));
printf("\tpodaj n: "); scanf("%d",&n);
int * ciag = new int[n];
printf("\n");
for(i=1;i<=n;i++){
ciag[i-1]=rand()%20+1;
printf("%d\t",ciag[i-1]);
if(i%10==0) printf("\n");
}
printf("\n\n\tKrotnosc wystepowania\n\tpodaj b: ");
scanf("%d",&b);
i=0;
for(j=0;j<n;j++)
if(ciag[j]==b)i++;
printf("\twystepuje %d razy\n\n",i);
__asm{
xor ecx,ecx
mov ecx,n ;wielkosc tablicy
dec ecx
mov ebx,b ;szukana wartosc
xor edi,edi ;licznik powtorzen
petla:
mov eax,ecx
mov esi,ciag[eax]
cmp esi,ebx
jne dalej
inc edi
dalej:
dec ecx
cmp ecx,0
jae petla
mov i,edi
}
delete [] ciag;
printf("\n\twystepuje %d razy",i);
scanf("%d",&n);
return 0;
}