Online Compiler Nasm

extern io_get_udec, io_newline, io_print_udec section .bss res resd 1 section .text global main main: call io_get_udec mov ecx, 0 mov ebx, 0 mov dword[res], 0 .start: cmp ecx, 32 jge .end mov ebx, eax shr ebx, ecx and ebx, 1 add dword[res], ebx add ecx, 1 jmp .start .end: mov eax, dword[res] call io_print_udec call io_newline xor eax, eax ret
1) Этот код считывает 32-битное беззнаковое число, подсчитывает количество единичных битов в его двоичном представлении (вес Хэмминга) и выводит результат.

2) Подсказки:
- Обрати внимание, что в регистре `ecx` хранится счётчик сдвига, а цикл выполняется ровно 32 раза — по количеству бит в двойном слове.
- После каждой итерации значение `ebx` содержит результат побитового И между сдвинутым числом и 1, то есть проверяет конкретный бит.