Online Compiler Nasm

extern io_get_udec, io_print_udec section .text global main main: call io_get_udec xor ecx, ecx loopstage: test eax, eax jz donestage lea edx, [eax - 1] and eax, edx inc ecx jmp loopstage donestage: mov eax, ecx call io_print_udec xor eax, eax ret
1) Этот код читает беззнаковое число, подсчитывает количество единичных битов в его двоичном представлении (вес Хэмминга) и выводит результат.

2) Обрати внимание, что инструкция `and eax, edx` изменяет значение в `eax`. Подумай, как это связано с обнулением младшего единичного бита.
   Счётчик `ecx` увеличивается на каждой итерации, пока `eax` не станет нулём — это ключ к пониманию алгоритма.