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, botów: 0