在没有包含或 DOS 中断的情况下在 MASM 中打印?

Printing in MASM without includes or DOS interrupts?

抱歉,如果这是一个基本问题,但我似乎无法在网上找到答案。

我正在学习汇编。开发环境是 Windows 7 上的 VS2013 和 MASM。我对字符串操作有很好的理解,现在我正在尝试将一个字符打印到控制台。我在 Internet 上可以找到的方法包括包含 MASM 文件、使用 MessageBoxA 或修改项目设置以使用 DOS 中断。

包含外部文件和修改项目设置是我绝对不想做的两件事。 MessageBoxA 看起来很酷,但是没有办法在纯 ASM 中打印到控制台吗?谢谢!

Windows 不是DOS,好久没有了。 Windows 基于 NT 的版本不允许您在没有内核驱动程序的情况下直接写入硬件。

如果你不关心 Unicode 那么你只需要调用 GetStdHandle(STD_OUTPUT_HANDLE) to get a handle to stdout and then use this handle with WriteFile.

如果GetConsoleModereturns为真,则使用WriteConsole编写Unicode字符串。