Online Compiler Nasm

extern io_get_udec, io_print_udec, io_print_string, io_newline section .data yes_str db 'Yes', 0 no_str db 'No', 0 section .text global main main: push ebx push esi push edi call io_get_udec mov esi, eax call io_get_udec mov edi, eax steps_loop: test edi, edi jz check_result push esi call reverse_num add esp, 4 add esi, eax dec edi jmp steps_loop check_result: push esi call reverse_num add esp, 4 cmp eax, esi jne print_no mov eax, yes_str call io_print_string call io_newline mov eax, esi call io_print_udec call io_newline xor eax, eax jmp finish print_no: mov eax, no_str call io_print_string call io_newline xor eax, eax finish: pop edi pop esi pop ebx ret reverse_num: push ebp mov ebp, esp push ebx push ecx push edx push esi mov esi, [ebp + 8] xor ecx, ecx mov ebx, 10 rev_loop: test esi, esi jz rev_done mov eax, esi xor edx, edx div ebx imul ecx, ecx, 10 add ecx, edx mov esi, eax jmp rev_loop rev_done: mov eax, ecx pop esi pop edx pop ecx pop ebx pop ebp ret
1) Этот код проверяет, становится ли число палиндромом после заданного количества шагов. На каждом шаге к числу прибавляется его перевёрнутая версия. Если после всех шагов число равно своему перевёртышу, выводится "Yes" и итоговое число, иначе — "No".

2) Подсказки:
- Функция `reverse_num` использует деление на 10 для разворота числа, сохраняя результат в `ecx`.
- Обрати внимание, что регистр `esi` используется и в `main`, и в `reverse_num` — внутри функции он сохраняется в стеке, чтобы не нарушить значение из основной программы.