Whenever I try entering a letter or symbol into my scanf for unsigned integers after previously entering an accepted number previously in the loop, it continually enters the previous number, causing the program to run indefinitely. How do I fix this? Here's an example code I wrote:
[bits 32]
global _main
extern _scanf
extern _printf
section .data
prompt_number db "Please select a number. Enter 0 to escape. ", 0
display_number db "You entered %u. ", 0
number_fmt db "%u", 0
number_input dd 0
section .bss
section .text
_main:
push ebp
mov ebp, esp
and esp, 0xfffffff0
_Label:
sub esp, 16
mov dword[esp], prompt_number
call _printf
add esp, 16
sub esp, 16
mov dword[esp], number_fmt
mov dword[esp+4], number_input
call _scanf
add esp, 16
sub esp, 16
mov dword[esp], display_number
mov eax, [number_input]
mov dword[esp+4], eax
call _printf
add esp, 16
cmp dword[number_input], 0
jne _Label
mov esp, ebp
mov eax, 1
pop ebp
ret