我在WinAsm Studio中编写简单的MASM应用程序,我遇到了堆栈问题 我已经能够在这个非常简单的程序中重新创建它:
.386
.model flat, stdcall
OPTION CASEMAP:NONE
Include windows.inc
Include kernel32.inc
Include masm32.inc
include user32.inc
IncludeLib kernel32.lib
IncludeLib masm32.lib
IncludeLib user32.lib
.code
aProc proc near
push 1
ret
aProc endp
bProc proc near
pop edx
ret
bProc endp
start:
call aProc
call bProc
invoke ExitProcess, 0
end start
我在这个例子中尝试做的是在一个过程(aProc
)中将几个值放到堆栈上,然后在另一个过程(bProc
)中检索它们。 / p>
你能解释一下为什么这段代码导致程序崩溃(Access violation
)以及如何正确使用堆栈?