extern io_get_dec, io_print_dec, io_newline
section .bss
x resd 1
y resd 1
z resd 1 ;место для окончательного 96битного произведения
section .text
global main
main:
call io_get_dec ;в eax первое число a
mov ebx, eax ;переложили a в ebx
call io_get_dec ;eax второе число b
mul ebx ;помножили a и b - результат 64 бита
mov esi, edx ;старшие
mov edi, eax ;младшие
call io_get_dec
mov ebx, eax ;берем чиселку c
mov eax, esi ;вытаскиваем старшие биты произведения
mul ebx ;множим - получаем еще 64 бита (но типо старшие)
mov [z], edx ;кладем старшие биты
mov [y], eax ; и средние
mov eax, edi
mul ebx ;тащим младшую часть произведения предыдущего и перемножаем
add [y], edx
mov [x], eax ;учитываем переполнение
adc [z], 0
call io_get_dec
mov ebx, eax ; читаем делитель
mov edx, 0
mov eax, [z] ;тянем старший бит произведения
div ebx
mov eax, [y]
div ebx
mov eax, [x]
div ebx
io_print_dec
xor eax, eax
ret