在没有包含或 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
.
如果GetConsoleMode
returns为真,则使用WriteConsole
编写Unicode字符串。
抱歉,如果这是一个基本问题,但我似乎无法在网上找到答案。
我正在学习汇编。开发环境是 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
.
如果GetConsoleMode
returns为真,则使用WriteConsole
编写Unicode字符串。