Assembly 程序集,将参数传递给过程
我需要知道我是否还没有完全理解如何将参数传递到过程中,因为我必须知道这是否是导致程序出现问题的原因 假设我有两个DWORD变量,分别命名为var1和var2。我想调用一个名为addtwo的函数,它的作用与本书中的示例相同。但我还想在其中使用完全相同的变量调用一个名为addtwo2(分离以避免递归)的函数。总的来说,我会这样做吗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 要调用第一个变
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
相同的内存位置,即不指向相同的变量