section .text
extern io_get_udec
extern io_print_udec
extern io_print_char
extern io_newline
global main
main:
call io_get_udec
mov ecx, eax
mov esi, 0
mov edi, 1
.loop:
cmp ecx, 0
je .finish
call io_get_udec
mov ebx, eax
call io_get_udec
mov edx, eax
mov eax, esi
imul eax, edx
mov ebp, eax
mov eax, ebx
imul eax, edi
add eax, ebp
mov esi, eax
mov eax, edi
imul eax, edx
mov edi, eax
dec ecx
jmp .loop
.finish:
push edi
push esi
call gcd
add esp, 8
mov ebx, eax
mov eax, esi
xor edx, edx
div ebx
mov esi, eax
mov eax, edi
xor edx, edx
div ebx
mov edi, eax
mov eax, esi
call io_print_udec
mov al, ' '
call io_print_char
mov eax, edi
call io_print_udec
call io_newline
xor eax, eax
ret
gcd:
push ebp
mov ebp, esp
mov eax, [ebp+8]
mov ebx, [ebp+12]
.g:
cmp ebx, 0
je .done
xor edx, edx
div ebx
mov eax, ebx
mov ebx, edx
jmp .g
.done:
pop ebp
ret