Online Compiler Nasm

extern io_get_dec, io_print_dec, io_newline section .text global main main: call io_get_dec mov ebx, eax ; N call io_get_dec mov dl, al ; K mov dh, 0 add dh, 33 sub dh, dl ; сколько комбинаций подряд идущих битов mov dl, 0 ; сохраним обратку (для корректных сдвигов) start_loop: cmp dh, 0 jl end_loop mov ecx, ebx mov cl, dl shl ecx, cl mov cl, dh shr ecx, cl sub dh, 1 add dl, 1 ; сделали чиселку cmp ecx, esi jg new_chiselka jmp end_if new_chiselka: mov esi, ecx end_if: jmp start_loop end_loop: mov eax, esi call io_print_dec xor eax, eax ret
1) Этот код считывает два числа: N (32-битное) и K (8-битное). Затем он находит максимальное значение среди всех возможных последовательностей из K подряд идущих битов в двоичном представлении N.

2) Подсказки:
- Обрати внимание, что регистр `esi` используется без начальной инициализации, что может привести к неопределённому поведению.
- Условие выхода из цикла `cmp dh, 0 / jl end_loop` может сработать некорректно, так как `dh` уменьшается, но изначально рассчитывается через `add dh, 33`.