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

时间:2013-11-08 11:34:23

标签: 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 

  lea eax,format 
  push eax
  call scanf_s 
  add esp, 4 
  pop ecx
  loop l1

1 个答案:

答案 0 :(得分:0)

你在堆栈上提供了scanf_s 2个参数,但是在调用之后你不会释放堆栈上的两个参数(你只添加了4个)。你应该添加8来纠正这个:

lea eax, uservalue 
push eax 

lea eax,format 
push eax
call scanf_s 
add esp, 8