我正在尝试在Windows Vista下运行的masm32中进行循环,但是我是这样做的,即使它实际上完成了循环,它还是崩溃了,我看不出有什么明显的原因...任何想法?

.386
.model flat, stdcall
option casemap :none

include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\masm32.inc
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\masm32.lib

.data
ProgramText db "Looping!", 0

.data?
loop_stopper   dd      ?

.code
start:

mov loop_stopper,2

loop_start:
invoke StdOut, addr ProgramText
cmp loop_stopper, 0
dec loop_stopper
jg loop_start

end start

编辑

做过
invoke StdOut, offset ProgramText

仍然崩溃...

最佳答案

您需要有一个“退出”才能结束您的应用程序。另外,我的个人风格是将所有内容放在子例程中,但这就是我。

就像是:.code

start:

call main
inkey
exit

main proc

mov loop_stopper,2
loop_start:

invoke StdOut, addr ProgramText
cmp loop_stopper, 0
dec loop_stopper
jg loop_start
ret

main endp

end start

07-26 06:22