Online Compiler Nasm

exterm 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 [res], 0 .start: mov ebx, 0 cmp ecx, 32 jge .end mov ebx, eax shr ebx, ecx and ebx, 1 add [res], ebx add ecx, 1 jmp .start .end: mov eax, [res] call io_print_udec xor eax, eax ret
1) Этот код считывает 32-битное беззнаковое число, затем подсчитывает количество единиц в его двоичном представлении (вес Хэмминга) и выводит результат.

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