Online Compiler Nasm

extern io_get_udec, io_print_string, io_print_udec section .data x dd 0 n dd 0 K dd 0 msg1 db `NO\n`,0 msg2 db `YES\n`,0 section .text global main reverse: push ebp mov ebp, esp push ebx mov eax, [ebp + 8] mov dword [K], 0 mov ebx, 10 .L: cmp eax, 0 je .END mov edx, 0 div ebx mov ecx, [K] imul ecx, ebx mov dword [K], ecx add dword [K], edx jmp .L .END: mov eax, [K] mov dword [K], 0 pop ebx leave ret main: call io_get_udec mov [x],eax call io_get_udec mov [n],eax mov eax,[x] mov ecx,0 .L: cmp ecx,[n] jge .END push ecx push eax call reverse add esp, 4 pop ecx add [x],eax mov eax,[x] inc ecx jmp .L .END: mov ebx,eax push ecx push eax call reverse add esp, 4 pop ecx cmp eax, ebx je THEN mov eax,msg1 call io_print_string jmp END THEN: mov eax,msg2 call io_print_string mov eax,[x] call io_print_udec END: xor eax,eax ret
1) Этот код считывает два беззнаковых числа: `x` и `n`. Затем он `n` раз выполняет операцию: `x = x + reverse(x)`, где `reverse(x)` — число, полученное перестановкой цифр `x` в обратном порядке. После цикла проверяется, является ли полученное `x` палиндромом (равно ли `reverse(x)`). Если да, выводится "YES" и само число, иначе — "NO".

2) Обрати внимание, что функция `reverse` использует глобальную переменную `K` для вычислений, но обнуляет её перед возвратом. Убедись, что это не вызывает проблем при многократном вызове.  
Также проверь, что в цикле `main` после вызова `reverse` значение `eax` корректно используется для обновления `x`.