我正在完成一个小项目,我想到了(感谢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'
我被困在这里一个小时了。请帮帮我。
2条答案
按热度按时间gpfsuwkq1#
哦,我的天。截图确实暴露了问题。问题是你没有和
rhalexdev.inc
在同一个目录下编译。在尝试使用
nasm edit.asm -o edit.bin
编译之前,您需要更改到c:\Documents and Settings\Administrator\Desktop\OS Making\programs\
目录,或者在尝试使用c:\Program Files\nasm
编译时,您需要提供-i
包含路径。-i
解决方案的问题是,您必须使用引号或转义包含路径名来处理目录名中的空格。我要做的是在
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
中构建,那么你需要尝试以下操作:字符串
如上面引用的结尾为
\
,或转义空格:型
我想这会解决你的问题。
rqcrx0a62#
请使用
-I includepath
。如果您使用的是旧的NASM版本,请在
includepath
的结尾处包含/
或\
分隔符。我正在使用NASM 2.07版,遇到了同样的问题。就像我尝试了数百万次-i选项,我仍然得到包含文件未找到错误。我的包含文件路径是正确的,我仔细检查。
不@大卫C.兰金。它不只是像C;它和C很相似。
问题是旧的NASM版本在解析相对包含路径时执行了以下操作:
字符串
正如你在第4行看到的,他们只是简单地连接了两个路径,而没有添加目录分隔符。
型
和
型
成为
型
如果在
...\programs\
的末尾有一个尾随的\
,那么即使在这个旧的NASM版本中它也可以工作。新的NASM版本不需要这个,它们之间会用一个目录分隔符连接字符串。