在Visual Studio上使用MASM编写hello world来使用DOS中断来控制台

时间:2019-03-30 15:39:31

标签: windows visual-studio assembly x86-16

我正在写代码,但是在Visual Studio中会出错。

在emu上可以正常工作,但在Visual Studio上则不能正常工作。

我看到了有关显示hello world程序的不同教程,但没有一个正在处理我的Visual Studio masm。.

执行此代码的正确方法是什么?

. MODEL SMALL
. STACK 100H
.DATA 
MSG DB "HELLO! $"
.CODE
MAIN PROC
MOV AX, @DATA
MOV DS, AX
LEA DX, MSG
MOV AH, 9
INT 21H
MOV AH,4CH
INT 21H
MAIN ENDP
END MAIN

告诉我。什么是执行它的正确程序

1 个答案:

答案 0 :(得分:3)

您显示的代码是MSDOS的16位代码。 Windows 64位版本不能运行16位代码,除非通过模拟器或虚拟PC。我不知道可以产生16位代码的Visual Studio版本。您可以尝试找到可汇编代码的16位工具集的可下载版本,例如Masm 6.11(进行网络搜索)。

如果对16位C或C ++感兴趣,Microsoft Visual C / C ++ 4.1通常包括16位工具集,但不包括Masm,因此您仍然需要Masm 6.11,并且可以将文件合并到公用目录中。 Microsoft 16位工具集可以在32位版本的Windows上运行,也可以在MSDOS仿真器或运行MSDOS的虚拟PC上运行(具有emm386设置,因为该工具集使用了dos扩展器)。如果使用虚拟PC,建议您使用USB记忆棒在虚拟PC之间传输文件。

一个完整的Microsoft 16位工具集,包括MASM(ml.exe),C / C ++编译器,链接器,CodeView(cv.exe-源级调试器),QuickHelp(qh.exe)-帮助实用程序),程序员的工作台(pwb) .exe-IDE),H2INC(将C .h包含文件转换为MASM .inc包含文件,NMAKE(make实用程序),DOSXNT(工具集本身使用的dos扩展器),...。我不确定您可以找到完整的工具集。