Assembly MASM32,显示字符串和整数

Assembly MASM32,显示字符串和整数,assembly,console,x86,dos,masm32,Assembly,Console,X86,Dos,Masm32,我使用的是MASM32(版本10),我想知道在屏幕上输出字符串和整数的最简单方法是什么。请提供完整的源代码,而不仅仅是具体的行 多谢各位 编辑: 它崩溃时没有输出任何东西。我尝试了其他几种方法,但有不同的问题,唯一常见的是我没有在屏幕上显示字符串:)您似乎在使用DOS中断(int 21h),但也使用了.model flat,这表明您没有构建DOS程序(DOS不支持flat模型) 如果您打算构建适合在Windows上运行的32位控制台模式程序,则不能使用DOS中断。这里有一篇文章介绍了一个使用Wi

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

多谢各位

编辑:


它崩溃时没有输出任何东西。我尝试了其他几种方法,但有不同的问题,唯一常见的是我没有在屏幕上显示字符串:)

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

如果您打算构建适合在Windows上运行的32位控制台模式程序,则不能使用DOS中断。这里有一篇文章介绍了一个使用Win32调用的32位“hello world”Windows示例:


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

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

如果您打算构建适合在Windows上运行的32位控制台模式程序,则不能使用DOS中断。这里有一篇文章介绍了一个使用Win32调用的32位“hello world”Windows示例:


如果要构建16位DOS代码,可能需要从“小”内存模型开始。

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


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

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

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

使用内置的“打印”功能/宏。它将为您插入适当的通话

print "This is a test",13,10,0
使用内置的“打印”功能/宏。它将为您插入适当的通话

print "This is a test",13,10,0

你有什么事吗?你有没有在这方面下过功夫?这不是让你做家庭作业的地方。请张贴你已经尝试过的内容,并说明为什么不起作用。不,不是家庭作业。我不再是学生,不再是:)你有什么事吗?你有没有在这方面下过功夫?这不是让你做家庭作业的地方。请张贴你已经尝试过的内容,并说明为什么不起作用。不,不是家庭作业。我不再是学生,不再是:)TBH,在MASM32(v10)中尝试过,但出现了大量错误。我感觉它可能是用MASM 6.11编译的,尽管我不感兴趣。但是,感谢您为我澄清了16/32位的内容,并为找到有用的link.TBH所做的努力,在MASM32(v10)中尝试了它,并得到了大量错误。我感觉它可能是用MASM 6.11编译的,尽管我不感兴趣。但是谢谢你为我澄清了16/32位的内容,也谢谢你为找到那个有用的链接所做的努力。虽然没有提供完整的源代码,但它确实很有帮助。谢谢虽然没有提供完整的资料,但它确实很有帮助。谢谢