【问题标题】:(Assembly NASM says "unable to open include file 'include.inc'"(Assembly NASM 说“无法打开包含文件 'include.inc'”
【发布时间】:2015-04-02 07:14:56
【问题描述】:

我正在完成一个我想到的小项目(感谢 Tinkernut),以使用 Assembly 制作一个小型操作系统。我是从头开始制作的,当我完成主要文件时,我想在操作系统中添加一些程序。所以我 制作了一个edit.asm文件(注意:空格是代码的一部分):

; ------------------------------------------------------------------
; RhalexOS Text Editor 
; ------------------------------------------------------------------


    BITS 16
    %INCLUDE 'rhalexdev.inc'
    ORG 32768

(其他所有内容都已删除,因为它与手头的问题无关)

但是当我这样做时(我确实安装了 NASM):nasm edit.asm -o edit.bin

我明白了: edit.bin.7:无法打开包含文件“rhalexdev.inc”

我在这里被困了一个小时。请帮帮我。

【问题讨论】:

  • rhalexdev.inc 相对于 edit.asm 的位置在哪里?
  • 那条线对我有用。您是否在不支持长文件名的操作系统上进行组装?
  • 你试过%include "rhalexdev.inc"。此外,如果它不在当前目录中,您可以使用 -I/path/to/include/dir 提供搜索路径,就像使用 C 一样。另请参阅 NASM Docs -- Section 2.1.10
  • 但这就是重点 - 那里有很多代码可能与您的问题无关。这就是为什么我建议您将其缩减为 最小 示例,但仍会出现问题,然后将其发布。
  • 因此,如果您在 Windows 中突出显示 .inc 文件,按 F2、Ctrl-c,然后将其粘贴为要包含在代码中的文件名,您仍然会得到相同的结果吗?而且您没有为 .inc 文件设置任何奇怪的权限?

标签: assembly nasm


【解决方案1】:

哦,天哪。屏幕截图确实揭示了这个问题。问题是您没有在与rhalexdev.inc 相同的目录中编译。

在尝试使用nasm edit.asm -o edit.bin 编译之前,您需要更改到c:\Documents and Settings\Administrator\Desktop\OS Making\programs\ 目录,或者在尝试在c:\Program Files\nasm 中编译时需要提供-i 包含路径。 -i 解决方案的问题是您必须quoteescape 包含路径名来处理目录名中的空格。

我要做的是在您的c:\Documents and Settings\your_account\My Documents\nasm(或您选择的任何名称)下创建一个目录。然后将所有源文件从c:\Documents and Settings\Administrator\Desktop\OS Making\programs\ 复制到c:\Documents and Settings\your_account\My Documents\nasm。然后在c:\Documents and Settings\your_account\My Documents\nasm 中发出nasm edit.asm -o edit.bin 命令。

我不建议在Program FilesAdministrator\Desktop 目录中编译。你可以,只是不是我推荐的。

如果您想在c:\Program Files\nasm 中构建,那么您需要尝试以下操作:

nasm edit.asm -o edit.bin -i'c:\Documents and Settings\Administrator\Desktop\OS Making\programs\'

如上面引用的结尾\,或转义空格:

nasm edit.asm -o edit.bin -ic:\Documents\ and\ Settings\Administrator\Desktop\OS\ Making\programs\

我怀疑这会解决你的问题。

【讨论】:

  • 对不起,如果我之前没有看到这个,我的机器有一些问题。会尝试这个解决方案。
  • 我将rhalexdev.inc 文件与edit.asm 文件放在同一目录中。
  • 而有edit.asm的目录是C:\Program Files\nasm\programs
  • 所以它们在同一个文件夹中。所以:nasm edit.asm -o edit.bin -i'C:\Program Files\nasm\programs' 变为 nasm programs\edit.asm -o programs/edit.bin -i'C:\Program Files\nasm\programs'
  • 现在,它仍然显示:programs\edit.asm:7: fatal: unable to open inclue file 'rhalexdev.inc'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-10
  • 2016-06-17
  • 2019-10-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多