Loops 汇编代码中的循环计数问题
我的程序陷入了一个循环,有人知道为什么吗 基本上,我想通过用户输入来确定循环次数,然后用户输入他们想要的值正数或负数。然后将它们与0进行比较。如果数字为正,则将其添加到正堆栈地址。如果为负,则将其添加到负堆栈地址并打印结果Loops 汇编代码中的循环计数问题,loops,assembly,x86,Loops,Assembly,X86,我的程序陷入了一个循环,有人知道为什么吗 基本上,我想通过用户输入来确定循环次数,然后用户输入他们想要的值正数或负数。然后将它们与0进行比较。如果数字为正,则将其添加到正堆栈地址。如果为负,则将其添加到负堆栈地址并打印结果 mov ecx, loopvalue l1: push ecx lea eax, getvalue push eax call printf add esp, 4 lea eax, uservalue push eax le
mov ecx, loopvalue
l1:
push ecx
lea eax, getvalue
push eax
call printf
add esp, 4
lea eax, uservalue
push eax
lea eax,format
push eax
call scanf_s
add esp, 4
pop ecx
loop l1
您在堆栈上为scanf_提供了2个参数,但在调用后,您没有释放堆栈上的两个参数,您只添加了4个。您应该添加8以更正此问题:
lea eax, uservalue
push eax
lea eax,format
push eax
call scanf_s
add esp, 8
你推了4次,但只推了3次,有些东西不平衡,谢谢!我现在已经用堆栈修复了循环,但是现在当它经过循环并打印结果时,打印行没有挂起,命令提示符在循环后退出程序…@user2968561如果这解决了您的问题,请不要忘记接受。