1

我正在使用 MASM32(版本 10),我想知道在屏幕上输出字符串和整数的最简单方法是什么。请提供完整的源代码,而不仅仅是特定的行。

谢谢你。

编辑:

.386
.model flat, stdcall
.stack
.data
stest db "This is a test", 0
.code
main proc
    mov ah, 09h
    lea dx, stest
    int 21h
main endp
end main

它崩溃而没有输出任何东西。我尝试了其他几件事,但有不同的问题,唯一的共同点是我没有在屏幕上显示字符串:)

4

3 回答 3

3

您似乎正在使用 DOS 中断 ( int 21h) 但也使用.model flat了 ,这表明您没有构建 DOS 程序(DOS 不支持平面模型)。

如果您打算构建适合在 Windows 上运行的 32 位控制台模式程序,则不能使用 DOS 中断。这是一篇使用 Win32 调用的 32 位“hello world”Windows 示例:32-Bit Flat Memory Model MASM Code for Windows NT

如果您打算构建 16 位 DOS 代码,您可能希望从“小”内存模型开始。

于 2010-12-31T21:28:23.113 回答
1

请注意,int21/09 要求字符串以美元符号 ($) 结尾。此外,即使您的代码确实打印了某些内容,它也会在之后立即崩溃,因为您根本没有终止您的程序(参见 int21/4c),因此它会继续执行未定义的内存。根据内存模型和环境,您可能还必须首先为自己设置段寄存器和堆栈。所有这些都假设您确实可以访问 int21 服务。

最后,作为一般建议,让调试器工作并跟踪您的程序。

于 2011-01-01T00:27:29.837 回答
1

使用内置的“打印”功能/宏。它会为您插入适当的呼叫。

print "This is a test",13,10,0
于 2011-02-10T21:07:32.340 回答