Assembly 程序集,将参数传递给过程

Assembly 程序集,将参数传递给过程,assembly,stack,arguments,masm,Assembly,Stack,Arguments,Masm,我需要知道我是否还没有完全理解如何将参数传递到过程中,因为我必须知道这是否是导致程序出现问题的原因 假设我有两个DWORD变量,分别命名为var1和var2。我想调用一个名为addtwo的函数,它的作用与本书中的示例相同。但我还想在其中使用完全相同的变量调用一个名为addtwo2(分离以避免递归)的函数。总的来说,我会这样做吗 push OFFSET var1 push OFFSET var2 call addtwo 第二步,做这个 push ebp mov ebp, esp 要调用第一个变

我需要知道我是否还没有完全理解如何将参数传递到过程中,因为我必须知道这是否是导致程序出现问题的原因

假设我有两个DWORD变量,分别命名为var1和var2。我想调用一个名为addtwo的函数,它的作用与本书中的示例相同。但我还想在其中使用完全相同的变量调用一个名为addtwo2(分离以避免递归)的函数。总的来说,我会这样做吗

push OFFSET var1
push OFFSET var2
call addtwo
第二步,做这个

push ebp
mov ebp, esp
要调用第一个变量,我需要执行[esp+8]和第二个变量[esp+12]。 现在,假设我想把这些信息传递到addtwo2中。我会做和主要一样的事情吗

push OFFSET var1
push OFFSET var2
call addtwo2
然后在addtwo2中,执行以下操作

push ebp
mov ebp, esp

并使用相同的[esp+8和12]调用特定变量?然后,在每个问题结束时,输入ret以清除堆栈?

对您的问题的简短回答:是

使用
push
call
以及
pop
ret
可以向下和向上更改堆栈指针(
ESP
)。因此,
addtwo2
中的
ESP
指向与
addtwo1
中的
ESP
相同的内存位置,即不指向相同的变量