【问题标题】:Using Visual Studio 2008 to Assemble, Link, Debug, and Execute MASM 6.11 Assembly Code使用 Visual Studio 2008 汇编、链接、调试和执行 MASM 6.11 汇编代码
【发布时间】:2010-09-11 20:41:49
【问题描述】:

我想尽可能地使用 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 使用的环境相同的环境。

选项 (2) 是在我意识到 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

如果我在代码的每个步骤中使用的工具的术语 -> exe 进程已关闭,我深表歉意,但由于我试图重现完成编写代码和生成可执行文件之间的所有步骤,所以我不要认为这很重要。

【问题讨论】:

  • 你真的成功了吗?你最后用了什么方法?

标签: visual-studio visual-studio-2008 assembly compilation masm


【解决方案1】:

有一个 MASM 规则文件位于 (32-bit system remove (x86)):

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

将该文件复制到您的项目目录,并将其添加到您的项目的自定义构建规则中。然后“Modify Rule File...”,选择MASM构建规则和“Modify Build Rule...”。

添加属性:

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

将 Additional Dependencies 值设置为 [AdditionalDependencies]。构建现在应该会自动检测到 *.inc 的更改,并且您可以编辑单个 asm 文件的属性以指定其他文件。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      我建议根据文件扩展名定义自定义构建规则。 (Visual Studio 2008,至少在专业版中,可以生成 .rules 文件,可以分发)。在那里,您可以为 asm 文件定义自定义构建工具。通过使用这种方法,您应该能够保持链接器步骤不变。

      回到过去,我们使用 MASM32 link text 作为 IDE 来帮助学生学习汇编。您可以查看他们的批处理文件来组装和链接。

      【讨论】:

        【解决方案4】:

        您可以创建一个 makefile 项目。在 Visual Studio 中,在 File / New / Project 下,选择 Visual C++ / Makefile project。

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

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

        【讨论】:

          【解决方案5】:

          如果你打算使用 Visual Studio,你能不能给他们一个 C/C++ 框架项目,其中包含一个控制台应用程序的入口点,该应用程序调用一个具有空内联汇编块的函数,并让他们填充他们的结果在里面?

          【讨论】:

          • 他想要 16 位代码。为此,他必须使用 Visual C++ 1.52。
          【解决方案6】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-01-03
            • 1970-01-01
            • 2018-03-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多