extern io_get_udec
extern io_get_dec
extern io_print_dec
section .bss
n resd 1
m resd 1
k resd 1
a resd 10000
b resd 10000
c resd 10000
section .text
global main
main:
; Matrix sizes
call io_get_udec
mov [n], eax
call io_get_udec
mov [m], eax
call io_get_udec
mov [k], eax
mov eax, dword [n]
mov edi, dword [m]
mul edi
mov esi, eax
for_a_begin:
cmp esi, 0
jng for_a_end
inner_a_begin:
cmp edi, 0
jl inner_a_end
call io_get_dec
mov ebx, esi
add ebx, edi
add ebx, a
mov [ebx], eax
dec edi
inner_a_end:
mov edi, dword [m]
sub esi, edi
for_a_end:
mov eax, dword [m]
mov edi, dword [k]
mul edi
mov esi, eax
for_b_begin:
cmp esi, 0
jng for_b_end
inner_b_begin:
cmp edi, 0
jng inner_b_end
call io_get_dec
mov ebx, esi
add ebx, edi
add ebx, b
mov [ebx], eax
dec edi
inner_b_end:
mov edi, dword [k]
sub esi, edi
for_b_end:
mov eax, dword [m]
mov edi, dword [k]
mul edi
mov esi, eax
for_print_begin:
cmp esi, 0
jng for_print_end
inner_print_begin:
cmp edi, 0
jng inner_print_end
mov ebx, esi
add ebx, edi
add ebx, b
mov eax, dword [ebx]
call io_print_dec
dec edi
inner_print_end:
mov edi, dword [k]
sub esi, edi
for_print_end:
xor eax, eax
ret