【问题标题】:Writing hello world to console with DOS interrupts using MASM on Visual Studio在 Visual Studio 上使用 MASM 将 hello world 写入带有 DOS 中断的控制台
【发布时间】:2019-03-30 15:39:30
【问题描述】:

我正在编写代码,但它在 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

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

【问题讨论】:

标签: windows visual-studio assembly x86-16


【解决方案1】:

您显示的代码是 MSDOS 的 16 位代码。 64 位版本的 Windows 不能运行 16 位代码,除非通过模拟器或虚拟电脑。我不知道可以生成 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 扩展程序)。如果使用虚拟电脑,我建议使用 USB 记忆棒将文件传输到虚拟电脑或从虚拟电脑传输文件。

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

【讨论】:

  • 当前版本的 Visual Studio 中包含的汇编器可以汇编 16 位代码并生成 OMF 文件。但它不包括能够生成 16 位可执行文件的链接器。 Microsoft 16 位工具链(编译器、链接器)的 Win32 版本适用于 64 位版本的 Windows,但它们更难找到。 Windows 2003 DDK 是我从中获取副本的地方。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-08-06
  • 2020-12-02
  • 1970-01-01
  • 2011-06-01
  • 2012-02-08
  • 2014-08-16
  • 1970-01-01
相关资源
最近更新 更多