我正在使用 masm32 在 Windows 7 上编译和链接,它与下面的代码一起工作得很好。然而,调用 stdOut 并不是简单地在命令提示符上打印任何内容。我究竟做错了什么?
.386
.model flat, stdcall
option casemap:none
include C:\masm32\include\windows.inc
include C:\masm32\include\kernel32.inc
include C:\masm32\include\user32.inc
include C:\masm32\include\masm32.inc
includelib C:\masm32\lib\kernel32.lib
includelib C:\masm32\lib\user32.lib
includelib C:\masm32\lib\masm32.lib
.data
MsgBoxCaption db "Message Box Caption", 0
MsgBoxText db "Win32 Assembly is great!", 0
.data?
; declare an uninitialized byte, referred to as location sum
sum dd ?
.code
start:
mov eax, 1d
mov ebx, 1d
; result will be stored in the first argument
add eax, ebx
; push eax onto the stack
push eax
; pop value into sum
pop sum
; invoke MessageBox, NULL, addr MsgBoxText, addr MsgBoxCaption, MB_OK
invoke StdOut, addr MsgBoxCaption
invoke StdOut, addr sum
; exit with status code 0
invoke ExitProcess, 0
end start
已解决...我为链接器使用了错误的参数
如何正确链接
ml /c /coff /Cp hello.asm
link /subsystem:console /libpath:c:\masm32\lib hello.obj
如何不链接这个程序
ml /c /coff /Cp hello.asm
link /subsystem:windows /libpath:c:\masm32\lib hello.obj
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)