【发布时间】:2019-03-10 23:45:24
【问题描述】:
我尝试使用此命令在 Linux 终端中使用 NASM 代码编译文件:
$ nasm -f elf /path/to/file.asm
我有一个错误。首先,我在文件中解决了这个问题,我将格式更改为 .asm 但它没有帮助。 然后我从维基百科更改代码和过去的程序,但仍然无法正常工作。 这是错误:
nasm: fatal: unable to open output file /home/path/to/file.o'`
这是代码:
section .text
org 0x100
mov ah, 0x9
mov dx, hello
int 0x21
mov ax, 0x4c00
int 0x21
section .data
hello: db 'Hello, world!', 13, 10, '$'
【问题讨论】:
-
如果您告诉我们错误是什么,并发布您的代码会有所帮助吗?
-
您的主目录是否在某种共享设备上? Windows 挂载点?
-
即使您可以组装它,它也不会作为程序在 Linux/Ubuntu 上运行,因为此代码被设计为在 MS-DOS 下运行。编译它的唯一方法是使用 nasm -f bin ,然后你必须在运行 dos 的模拟器中运行 MS-DOS COM 程序; DOSBox,或dosemu,或其他虚拟机/仿真软件)
-
我最好的猜测是您对文件夹/文件没有适当的写入权限
-
无论您从何处获得此代码,都是针对 DOS/MS-DOS。您可以在 Linux 上编译它(假设您修复了权限问题),但您需要其他软件才能实际运行它。如果这是一个权限问题,你可能想看看如果你这样做会发生什么
sudo nasm -f elf /home/staslend/programs_for_trying/file.asm