Mam problem: muszę napisać mnożenie macierzy pod x86 a w żaden sposób nie chce mi działać.
Bardzo proszę o pomoc... już nie mam pomysłów co tu można poprawić a muszę to wysłać przed północą :(
#include <iostream>
using namespace std;
int main()
{
int mac1[4][4] = {{2, 5, 6, 12}, {3, -2, 2, 3}, {3, 5, 1, 8}, {0, 5, 1, 3}},
mac2[4][4] = {{7, 1, 5, 21}, {9, 4, 12, 5}, {4, 7, 4, 5}, {3, 7, 2, 9}},
wyn [4][4],
sum = 0,
n = 4*4,
i = 4, j = 4, k = 4;
__asm
{
lea edi, mac1
lea esi, mac2
lea edx, wyn
mov ebx, n // wielkość tablicy mac1
mov ecx, n // wielkość tablicy mac2
mov ebp, n // wielkość tablicy wyn
petla_i:
petla_k:
petla_j:
mov eax, [edi + 4*ebx - 4]//mac1
mul [esi + 4*ecx - 4]//mac2
add sum, eax
cmp j, 0
dec j
dec ebx
dec ecx
jne petla_j
mov eax, sum
mov [edx + 4*ebp - 4], eax
mov eax, n
mul i
mov ebx, eax
cmp k, 0
dec ebp
dec k
mov sum, 0
jne petla_k
mov ecx, n
sub ebx, 4
cmp i, 0
dec i
jne petla_i
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
cout << wyn[i][j];
}
cout << endl;
}
return 0;
}