Я пишу калькулятор в nasm, и я сталкиваюсь с этой проблемой, которая возникает только после того, как пользователь вычисляет два последовательных ответа и вводит нецелочисленный ответ для приглашения, вызываемого в методе «Prompted».
подсказано:
push prompt ;pushes prompt to stack
call printf ;call printf
add esp, 4 ;remove prompt off stack
push promptval ;push int that scanf will push to
push formatin ;push format for scanf
call scanf ;call scanf function
add esp, 8 ;remove promptval and formatin from stack
mov eax, dword [promptval] ;set eax as promptval
cmp eax, 1 ;figure out if promptval is 1 for 'yes'
je main ;if so then jump to main
call exit ;exit program if doesn't jump
это код, который ломается только при этих обстоятельствах (просто проходит через программу, бесконечно продолжающуюся, даже если предполагается, что он запрашивает пользователя), просто использует ответы последнего циклана все запросы под бесконечным циклом.