Online Compiler Nasm

extern io_get_dec, io_newline, io_print_dec section .bss res resd 1 section .text global main main: call io_get_dec 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_dec call io_newline xor eax, eax ret
1) Этот код считывает 32-битное число, подсчитывает количество единичных битов в нём (вес Хэмминга) и выводит результат.

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