我正在使用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
它崩溃而没有输出任何东西。我尝试了几个其他的东西,有不同的问题,唯一常见的是我没有在屏幕上显示字符串:)
答案 0 :(得分: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代码,您可能希望从“小”内存模型开始。
答案 1 :(得分:1)
请注意,int21 / 09要求字符串以美元符号($)结尾。 此外,即使您的代码确实打印了某些东西,它也会在之后立即崩溃,因为您根本没有终止程序(参见int21 / 4c),因此它继续执行未定义的内存。根据内存模型和环境,您可能还必须首先为自己设置段寄存器和堆栈。所有这些都假定您确实可以访问int21服务。
最后,作为一般建议,让调试器工作并跟踪您的程序。
答案 2 :(得分:1)
使用内置的“打印”功能/宏。它会为你插入适当的电话。
print "This is a test",13,10,0