Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 汇编代码中的循环计数问题_Loops_Assembly_X86 - Fatal编程技术网

Loops 汇编代码中的循环计数问题

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

我的程序陷入了一个循环,有人知道为什么吗

基本上,我想通过用户输入来确定循环次数,然后用户输入他们想要的值正数或负数。然后将它们与0进行比较。如果数字为正,则将其添加到正堆栈地址。如果为负,则将其添加到负堆栈地址并打印结果

  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如果这解决了您的问题,请不要忘记接受。