1

我的程序卡在一个循环中,任何人都知道为什么吗?

基本上我想接受用户输入来确定循环多少次,然后用户输入他们想要的值(正数或负数)。然后将它们与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
4

1 回答 1

0

您在scanf_s堆栈上提供了 2 个参数,但在调用后您没有释放堆栈上的两个参数(您只添加了 4 个)。您应该添加 8 来更正此问题:

lea eax, uservalue 
push eax 

lea eax,format 
push eax
call scanf_s 
add esp, 8
于 2013-11-08T12:08:55.150 回答