使用Visual Studio 2008汇编、链接、调试和执行MASM 6.11汇编代码

6
我希望能够尽可能地使用Visual Studio 2008,同时有效地编译/链接/构建等代码,就好像所有这些构建过程都是由MASM 6.11提供的工具完成的。MASM的确切版本并不重要,只要在6.x范围内即可,因为这是我的大学用来教授16位汇编语言的版本。
我已经对这个问题进行了一些研究,并得出了几个选项:
1.重新配置VS,以与MASM 6.11本机执行相同的标志等调用MASM 6.11可执行文件。
2.创建中间批处理文件,由VS调用,然后调用MASM的链接器等正确命令。
3.重新配置VS的内置构建工具/规则(汇编器、链接器等),以提供与MASM 6.11使用的环境相同的环境。
当我意识到VS的“外部工具”界面中可用的选项可能不足以正确调用MASM的构建工具时,提出了第二个选项,因此可以编写一个批处理文件来解释VS传递参数的严格方法,因为我学习如何使其工作的很多内容都涉及手动从命令提示符调用ML.exe、LINK.exe等。
以下是几个链接,可能有助于回答我的问题。请记住,我已经阅读了它们,但没有一个是真正的解决方案。我只能希望我的指定MASM 6.11不会阻止任何人贡献更普遍的答案。
类似于选项(2)使用的方法,但线程上的用户无法联系:
http://www.codeguru.com/forum/archive/index.php/t-284051.html
(此外,我对中间批处理文件的必要性表示怀疑)
过时解释我的问题:
http://www.cs.fiu.edu/~downeyt/cop3402/masmaul.html 可能是我找到的最接近确定性解决方案,但是它涉及来自MASM之外的一套工具,并且还使用了批处理文件:
http://www.kipirvine.com/asm/gettingStarted/index.htm#16-bit

如果我在代码->可执行文件过程中使用的工具术语不正确,我很抱歉,但由于我正在尝试复制从编写代码到生成可执行文件之间的所有步骤,所以我认为这并不重要。


你最终成功了吗?你最终采用了什么方法? - newgre
6个回答

4

在以下位置可以找到MASM规则文件(32位系统请删除(x86)):

C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\VCProjectDefaults\masm.rules

将该文件复制到您的项目目录中,并将其添加到项目的自定义构建规则中。然后,“修改规则文件...”,选择MASM构建规则并“修改构建规则...”。
添加属性:
- 用户属性类型:字符串 - 默认值:*.inc - 描述:添加其他MASM文件依赖项。 - 显示名称:附加依赖项 - 是否只读:False - 名称:AdditionalDependencies - 属性页名称:通用 - 开关:[value]
将“Additional Dependencies”值设置为[AdditionalDependencies]。现在,构建应该自动检测到*.inc的更改,您可以编辑单个asm文件的属性以指定其他内容。

2
你可以创建一个makefile项目。在Visual Studio中,选择文件/新建/项目,选择Visual C++ / Makefile项目。
这使您能够运行任意命令来构建项目。它不必是C/C ++。甚至不必是传统的NMake makefile。我曾经使用它来编译使用批处理文件和使用NAnt脚本的驱动程序。
它应该很容易让它运行MASM 6.x工具链。

2
我建议根据文件扩展名定义自定义构建规则。 (至少在专业版本中,Visual Studio 2008可以生成.rules文件,可进行分发)。在那里,您可以为asm文件定义自定义构建工具。通过使用这种方法,您应该能够保留链接器步骤。
很久以前,我们使用 MASM32 作为 IDE 来帮助学生学习汇编语言。您可以检查他们的批处理文件以了解它们用于汇编和链接的操作。

1

为什么不使用在文件上定义的自定义构建步骤,而不是批处理文件呢?


0

如果你要使用Visual Studio,为什么不给他们一个C/C++的骨架项目,入口点是调用一个函数的控制台应用程序,并在其中放置一个空的内联汇编块,让他们填写结果呢?


1
他想要16位代码。他必须使用Visual C++ 1.52来实现。 - Roger Lipscombe

0

为什么不使用Irvine的指南?Irvine的库很好,如果你想要,你可以忽略它并直接使用Windows procs。我一直在寻找这样的指南,Irvine的是最好的解决方案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接