Asm - wstawka w Visual c++ - tablica jednowymiarowa

0

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;
}
0

sorry zapomnialem zmienic przed wklejeniem, tam we wstawce powinno byc troche inaczej

	;mov eax,ecx           ;bez tego
	mov esi,ciag[ecx*4]  ;bo int ma 4bajty a tablica rozposciera sie od 0 do n-1 i dalej nie wiem czemu nie smiga,jak ide od konca zmniejszajac ecx
0

Temat zamkniety: ;]

_asm{
mov ebx,ciag
mov edx,[ebx]
mov a,edx
}
printf("%d ",a);

i potem kroczyc w ebx co 4 bo int zapisany na 32bitach ;]

1 użytkowników online, w tym zalogowanych: 0, gości: 1