在windows MASM程序中使用堆栈

时间:2017-01-03 09:32:17

标签: x86 masm32

我在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)以及如何正确使用堆栈?

0 个答案:

没有答案