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

时间:2020-03-06 14:31:02  来源:igfitidea点击:

我想最大程度地使用Visual Studio 2008,同时有效地编译/链接/构建/等代码,就像所有这些构建过程都是由MASM 6.11所提供的工具来完成一样。 MASM的确切版本无关紧要,只要它在6.x范围内,这就是我的学院用来教授16位汇编的内容。

我对此进行了一些研究,得出的结论是,有几种选择:

  • 重新配置VS,以使用与MASM 6.11本身相同的标志来调用MASM 6.11可执行文件。
  • 创建要由VS调用的中间批处理文件,然后为MASM的链接器等调用适当的命令。
  • 重新配置VS的内置构建工具/规则(汇编器,链接器等),以提供与MASM 6.11使用的环境相同的环境。

当我意识到VS的"外部工具"界面中可用的选项可能不足以正确调用MASM的构建工具时,便提出了选项(2),因此,解释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

对于在代码的每个步骤-> exe处理中使用的工具的术语是否已关闭,我深表歉意,但是由于我试图在编写代码和生成可执行文件之间重现整个步骤,因此我不认为这很重要。

解决方案

为何不使用批处理文件而不是批处理文件?

如果要使用Visual Studio,我们是否不能给他们一个C / C ++的框架项目,以及一个控制台应用程序的入口,该控制台应用程序调用一个具有空的内联汇编块的函数,并让他们在其中填充结果?

我们可以创建一个makefile项目。在Visual Studio中的"文件" /"新建" /"项目"下,选择" Visual C ++" /" Makefile"项目。

这使我们可以运行任意命令来构建项目。它不必是C / C ++。它甚至不必是传统的NMake makefile。我使用它来使用批处理文件和NAnt脚本来编译驱动程序。

使它运行MASM 6.x工具链应该相当容易。

我建议根据文件扩展名定义"自定义构建"规则。
(至少在Professinal Edition中,Visual Studio 2008可以生成.rules文件,可以将其分发)。在那里,我们可以为asm文件定义自定义构建工具。通过使用这种方法,我们应该能够保留链接程序步骤。

追溯过去,我们使用MASM32链接文本作为IDE,以帮助学生学习汇编。我们可以检查他们的批处理文件,以进行汇编和链接。

我们为什么不使用Irvine的指南? Irvine的库很不错,如果需要,我们可以忽略它,而直接使用Windows proc。我正在寻找这样的指南,欧文(Irvine)是最好的解决方案。

有一个MASM规则文件位于(32位系统删除(x86)):

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

将该文件复制到项目目录,并将其添加到项目的自定义生成规则。然后"修改规则文件...",选择MASM构建规则,然后选择"修改构建规则..."。

添加属性:

  • 用户属性类型:字符串
  • 默认值:*。inc
  • 说明:添加其他MASM文件依赖性。
  • 显示名称:其他依赖项
  • 只读:False
  • 名称:AdditionalDependencies
  • 属性页名称:常规
  • 切换:[值]

将"其他依赖关系"值设置为[AdditionalDependencies]。现在,构建应该会自动检测对* .inc的更改,并且我们可以编辑单个asm文件的属性以指定其他属性。