【发布时间】:2015-11-23 13:40:50
【问题描述】:
我正在尝试在 DOSBOX 中创建一个新目录。我在 Debian 上,通过 DOSBOX 使用 MASM。代码很简单,但是不行。
我已经通过调试执行了它,它返回错误 3(执行后 AX=0003h)。根据this,错误是因为路径不存在。我的 DOSBOX 将 C: 驱动器安装在 .asm 代码所在的目录中。
我不明白为什么会出现此错误。如果我从 DOSBOX 命令行运行mkdir C:\nuevo,它将毫无问题地创建目录nuevo
.model small
.stack
.code
mov dx, offset filepath
mov ah, 39h
int 21h
mov ah, 4ch
int 21h
ret
filepath db "C:\nuevo", 0
end
【问题讨论】:
-
您确定 MASM 不会将字符组合
\n视为换行符转义序列吗? -
这是一个不错的选择...但它不会将
\n视为换行符转义序列...我刚刚检查了调试,并且"C:\nuevo"字符串按原样存储读取...我只是将文件夹的名称更改为C:\asdf,只是为了确定,但错误是相同的:((AX 上的错误 3) -
并且没有权限问题(即 DOSBox 是否以有权写入您挂载为 C: 的文件夹的用户身份运行)?
-
是的,我仔细检查了它...当我从 dosbox 创建一个文件夹时,它工作得很好,但我无法从我的 asm 程序创建它,我不知道为什么:' (。它在 AX 寄存器上返回的错误表示我尝试创建文件夹的目录不存在
-
看来您正在创建一个 DOS EXE。您需要用您的数据段初始化 DS 寄存器。在您的代码顶部,您应该有类似
mov ax, @datamov ds, ax的内容。
标签: assembly masm x86-16 dosbox create-directory