Online Compiler Nasm

section .bss a resd 1 b resd 1 c resd 1 d resd 1 section .text global main extern io_get_dec, io_print_dec main: call io_get_dec mov [a], eax call io_get_dec mov [b], eax call io_get_dec mov [c], eax call io_get_dec mov [d], eax mov eax, [a] mov ebx, [b] call gcd mov ebx, [c] call gcd mov ebx, [d] call gcd call io_print_dec ret gcd: test ebx, ebx jz .done .loop: xor edx, edx div ebx mov eax, ebx mov ebx, edx cmp ebx, 0 jne .loop .done: ret
1) Этот код вычисляет наибольший общий делитель (НОД) четырёх чисел, введённых пользователем, используя алгоритм Евклида.

2) Обрати внимание, что в процедуре `gcd` регистр `eax` не инициализируется перед инструкцией `div` — убедись, что в нём находится делимое. Также помни, что `div` использует пару регистров `edx:eax`, поэтому обнуление `edx` обязательно.