zapis do tablicy dynamicznej

0

Witam, uczę się asma i napisałem krótki programik "iloczyn skalarny wektorów" jednak mam problem z uzyskaniem dostępu i zapisu wyniku do pamięci dynamicznej.

void iloczyn_skal_wektorow(int *a, int *b, int *w, int N)
{
	__asm
	{
		pushad;
		mov esi, a;
		mov edi, b;
		mov edx, w;
		mov ecx, N; //rozmiar tablic dla licznika
ILOCZYN:
		mov eax, [esi+4*ecx-4]; //pobieram wartosc tablicy a[N-1]
		mov ebx, [edi+4*ecx-4]; //pobieram wartosc tablicy b[N-1]
		imul ebx; //mnożę i wynik zapisywany jest w eax;
		mov [edx+4*ecx-4], eax; //tu się program wysypuje i nie wiem dlaczego. Próbuję przenieść obliczoną wartość z eax
		loop ILOCZYN;
		popad;
	}
}
 

Taka prośba żeby mnie ktoś oświecił i pokierował :)

0
 imul ebx; //mnożę i wynik zapisywany jest w eax;
 mov [edx+4*ecx-4], eax; //tu się program wysypuje i nie wiem dlaczego. Próbuję przenieść obliczoną wartość z eax

http://www.jegerlehner.ch/intel/IntelCodeTable.pdf
Mul modyfikuje rejestr edx.

0

dzięki, dzięki. Też to znalazłem :)

dla potomnych powiem jeszcze raz:

uwaga na użycie rejestru edx przy wykonywaniu mnożenia. Podczas tej operacji jest on zerowany (jeżeli nie nastąpi przepełnienie) lub zostaje tam umieszczona wartość nadmiaru z operacji mnożenia.

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