Online Compiler Nasm

extern io_get_dec, io_print_dec, io_newline, io_print_char section .text global main main: call io_get_dec mov ebx, eax mov edi, 0 mov esi, 3 .Lz: xor edx, edx cmp ebx, 0 je .Lx mov eax, ebx div esi mov ebx, eax cmp edx, 1 jne .Ly add edi, 1 .Ly: jmp .Lz .Lx: mov eax, edi call io_print_dec xor eax, eax
1) Этот код считывает целое число, затем подсчитывает, сколько раз остаток от деления этого числа на 3 равен 1 в процессе последовательного деления числа на 3, пока оно не станет равным нулю. Результат (счётчик) выводится на экран.

2) Обрати внимание, что цикл использует `div esi`, где `esi` всегда равно 3 — это деление на 3. Убедись, что понимаешь, как работает инструкция `div` и что она помещает в регистры `eax` и `edx`.

Подсказка 2: В коде есть безусловный переход `jmp .Lz`, который создаёт вечный цикл. Подумай, какое условие должно остановить программу и где оно проверяется.