extern io_get_udec
extern io_get_dec
extern io_print_dec
section .bss
a resd 10000
b resd 10000
c resd 10000
size_a resd 1
size_b resd 1
size_c resd 1
n resd 1
m resd 1
k resd 1
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
mul dword [n]
mov [size_c], eax
mov eax, dword [n]
mul dword [m]
mov [size_a], eax
mov eax, dword [m]
mul dword [k]
mov [size_b], eax
mov esi, dword [size_b]
mov edi, dword [b]
a_for_beg:
cmp esi, 0
jng a_for_end
sub esi, dword [size_b]
a_in_beg:
cmp edi, 0
jng a_in_end
dec edi
mov eax, esi
add eax, edi
mov ebx, dword [size_a]
sub ebx, eax
shl ebx, byte 2
mov ebx, n
call io_get_dec
mov [ebx], eax
a_in_end:
a_for_end:
mov esi, dword [size_b]
mov edi, dword [b]
apr_for_beg:
cmp esi, 0
jng apr_for_end
sub esi, dword [size_b]
apr_in_beg:
cmp edi, 0
jng apr_in_end
dec edi
mov eax, esi
add eax, edi
mov ebx, dword [size_a]
sub ebx, eax
shl ebx, byte 2
mov ebx, n
mov eax, dword [ebx]
call io_get_dec
apr_in_end:
apr_for_end:
call io_print_dec
xor eax, eax
ret