2013-10-02 38 views
1

我使用的是masm32编译和链接在Windows 7,它适用于下面的代码很好。然而,调用stdOut并不是简单地在我的命令提示符上打印任何内容。我究竟做错了什么?调用标准输出的masm32没有输出

.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 

回答

1

解决......我用错了参数链接

如何给它正确链接

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 
相关问题