(程序集 NASM 提示“无法打开包含文件‘include.inc’”

问题描述 投票:0回答:2

我正在完成一个小项目(感谢 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”

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

assembly nasm
2个回答
1
投票

天啊。截图确实暴露了问题。问题是您没有在与

rhalexdev.inc
相同的目录中进行编译。

您需要在尝试使用

c:\Documents and Settings\Administrator\Desktop\OS Making\programs\
进行编译之前更改为
nasm edit.asm -o edit.bin
目录,或者在尝试使用
-i
进行编译时需要提供
c:\Program Files\nasm
包含路径。
-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 Files
Administrator\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\

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


0
投票

我正在使用 NASM 2.07 版并遇到了同样的问题。就像我尝试了 -i 选项数百万次一样,我仍然遇到包含文件未找到错误。我的包含文件路径是正确的,我仔细检查了。

不@David C. Rankin。它不只是像C;它也像C。它与 C 类似。

问题是 NASM 在解析相对包含路径时执行以下操作...

const char *rel_fpath = parseIncludeDirective();
const char *include_path = nextIncludedPath();
char *full_fpath = newString( strlen(rel_fpath) + strlen(include_path) + 1 );
sprintf(full_path,"%s%s",include_path,rel_fpath);

正如您在第 4 行所看到的,它们只是连接两个路径,而不添加目录分隔符。这意味着...

c:\Documents and Settings\Administrator\Desktop\OS Making\programs\

rhalexdev.inc

成为

c:\Documents and Settings\Administrator\Desktop\OS Making\programsrhalexdev.inc
© www.soinside.com 2019 - 2024. All rights reserved.