Online Compiler Nasm

extern io_get_dec, io_print_dec section .bss a resd 1 b resd 1 section .data c dd 1 section .text global main main: call io_get_dec mov [a], eax call io_get_dec mov [b], eax mov eax, dword[a] mov ebx, dword[b] cmp eax, ebx cmovl eax, dword[b] cmovl ebx, dword[a]; eax = max(a, b), ebx = min(a, b) .beg: mov edi, eax xor edx, edx idiv ebx; eax = a / b, edx = a % b mov eax, edi cmp edx, 0 je .done jmp .beg .done: cmp edx, 0 cmove eax, 1 cmovne eax, edx call io_print_dec xor eax, eax ret
1) Этот код находит наибольший общий делитель (НОД) двух чисел, введённых пользователем, используя алгоритм Евклида.

2) Подсказки:
- Обрати внимание, что после метки `.beg` регистр `eax` перезаписывается значением из `edi`, что сбрасывает результат предыдущего деления.
- Условие выхода из цикла проверяется дважды: внутри цикла и после метки `.done`, что может привести к логической ошибке.