TITLE C:\USERS\JJOHNSON\CLASSES\FA00\CS570\ASSIGNMENTS\ASSIGN3\mmult\matrixprod.c .386P include listing.inc if @Version gt 510 .model FLAT else _TEXT SEGMENT PARA USE32 PUBLIC 'CODE' _TEXT ENDS _DATA SEGMENT DWORD USE32 PUBLIC 'DATA' _DATA ENDS CONST SEGMENT DWORD USE32 PUBLIC 'CONST' CONST ENDS _BSS SEGMENT DWORD USE32 PUBLIC 'BSS' _BSS ENDS _TLS SEGMENT DWORD USE32 PUBLIC 'TLS' _TLS ENDS ; COMDAT _matrix_prod _TEXT SEGMENT PARA USE32 PUBLIC 'CODE' _TEXT ENDS FLAT GROUP _DATA, CONST, _BSS ASSUME CS: FLAT, DS: FLAT, SS: FLAT endif PUBLIC _matrix_prod EXTRN _zero_matrix:NEAR EXTRN __fltused:NEAR ; COMDAT _matrix_prod _TEXT SEGMENT _m1$ = 8 _n1$ = 12 _n2$ = 20 _A$ = 24 _B$ = 28 _C$ = -4 _matrix_prod PROC NEAR ; COMDAT ; 15 : { push ecx push ebp ; 16 : int i,j,k; ; 17 : float **C; ; 18 : ; 19 : C = zero_matrix(1,m1,1,n2); mov ebp, DWORD PTR _n2$[esp+4] push esi mov esi, DWORD PTR _m1$[esp+8] push ebp push 1 push esi push 1 call _zero_matrix add esp, 16 ; 00000010H ; 20 : for (i=1;i<=m1;i++) cmp esi, 1 mov DWORD PTR _C$[esp+12], eax jl SHORT $L631 mov ecx, DWORD PTR _A$[esp+8] push ebx mov ebx, DWORD PTR _n1$[esp+12] sub ecx, eax push edi lea edi, DWORD PTR [eax+4] mov DWORD PTR 24+[esp+16], ecx mov DWORD PTR 8+[esp+16], esi $L629: ; 21 : for (j=1;j<=n2;j++) mov esi, 1 cmp ebp, esi jl SHORT $L630 $L632: ; 22 : for (k=1;k<=n1;k++) mov ecx, 1 cmp ebx, ecx jl SHORT $L633 $L635: ; 23 : C[i][j] = C[i][j] + A[i][k] * B[k][j]; mov eax, DWORD PTR [edi] mov ebp, DWORD PTR 24+[esp+16] inc ecx mov ebp, DWORD PTR [edi+ebp] lea edx, DWORD PTR [eax+esi*4] mov eax, DWORD PTR _B$[esp+16] cmp ecx, ebx mov eax, DWORD PTR [eax+ecx*4-4] fld DWORD PTR [eax+esi*4] fmul DWORD PTR [ebp+ecx*4-4] fadd DWORD PTR [edx] fstp DWORD PTR [edx] jle SHORT $L635 mov eax, DWORD PTR _C$[esp+20] mov ebp, DWORD PTR _n2$[esp+16] $L633: inc esi cmp esi, ebp jle SHORT $L632 $L630: ; 20 : for (i=1;i<=m1;i++) mov ecx, DWORD PTR 8+[esp+16] add edi, 4 dec ecx mov DWORD PTR 8+[esp+16], ecx jne SHORT $L629 pop edi pop ebx $L631: pop esi pop ebp ; 24 : return C; ; 25 : } pop ecx ret 0 _matrix_prod ENDP _TEXT ENDS END