在 win32 上用 MASM 组装的程序没有控制台输出

Posted

技术标签:

【中文标题】在 win32 上用 MASM 组装的程序没有控制台输出【英文标题】:No console output from program assembled with MASM on win32 【发布时间】:2011-12-30 01:59:14 【问题描述】:

我正在运行一些 MASM32 示例(来自 www.masm32.com),我注意到我的命令行框中的控制台输出为空白(程序编译、链接和运行,但没有输出。

    .486                                    ; create 32 bit code
    .model flat, stdcall                    ; 32 bit memory model
    option casemap :none                    ; case sensitive

    include \masm32\include\windows.inc     ; always first
    include \masm32\macros\macros.asm       ; MASM support macros
    include \masm32\include\masm32.inc
    include \masm32\include\gdi32.inc
    include \masm32\include\user32.inc
    include \masm32\include\kernel32.inc
    includelib \masm32\lib\masm32.lib
    includelib \masm32\lib\gdi32.lib
    includelib \masm32\lib\user32.lib
    includelib \masm32\lib\kernel32.lib

    .code                       ; Tell MASM where the code starts


start:                          ; The CODE entry point to the program

    print chr$("Hey, this actually works.",13,10)
    exit


end start                       ; Tell MASM where the program ends

【问题讨论】:

有一个print 宏吗? 笨蛋,使用错误的批处理文件来构建示例(使用 build,bat,应该使用 buildc.bat)。 是的,确实有一个打印宏,它非常方便。 :-) 【参考方案1】:

当您为 Win32 链接 PE 程序时,您可以将所需的子系统标记为“GUI”或“控制台”。如果您已将其链接为 GUI 模式程序,则当您从命令提示符运行 EXE 时,Windows 不会将控制台附加到您正在输入的窗口中。这听起来像你描述的症状。

确保将可执行文件与“控制台”子系统标志链接起来。

【讨论】:

以上是关于在 win32 上用 MASM 组装的程序没有控制台输出的主要内容,如果未能解决你的问题,请参考以下文章

masm32链接器不会创建可执行文件

Win10 + MASM32 + EditPlus 汇编语言编程环境设置

win32汇编hello world

我用的是win7 32位系统,使用汇编语言编写程序的时候,输入输出字符串的汇编程序可以顺利执行

在win10下配置DOSBOX和masm

masm x86 程序集崩溃中的 DOS 中断