【问题标题】:Unable to compile .asm file无法编译 .asm 文件
【发布时间】: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

标签: assembly nasm


【解决方案1】:

当然这不是汇编程序问题,但也肯定它有帮助。 也许,您的用户名为staslend。 如果programs_for_trying是一个文件, ls -lha /home/staslend/programs_for_trying 返回 drwxrwxr-- 权限。

mv /home/staslend/programs_for_trying /home/staslend/tempfile
mkdir /home/staslend/programs_for_trying
cat tempfile 

您会看到文件的内容。我认为您在此文件中有来源。如果是这样,请执行下一步:

mv /home/staslend/tempfile /home/staslend/programs_for_trying/file.asm

让您成为您的目录及其内容的所有者:

$ sudo chown -R staslend /home/staslend/programs_for_trying/

让您和您的团队能够读取、重命名和写入内容:

$ chmod -R ug+rwx /home/staslend/programs_for_trying/

让每个人都能阅读内容:

$ chmod -R a+r /home/staslend/programs_for_trying/

【讨论】:

  • 我按你说的做,但没有 / 最后,终端说那不是目录
  • 但是使用命令 $ nasm -f elf /home/staslend/programs_for_trying/file.asm 什么也没发生,仍然是错误。
  • ls -la /home/staslend/programs_for_trying 显示什么? “不是目录”听起来像你有一些名为 programs_for_trying 而不是目录的文件。
  • @ЧерныйКамень,也许你用西里尔字符表示字母 'o',例如“prоgrams_for_trying”,还是“programs_fоr_trying”,还是“prоgrams_fоr_trying”?
  • ls -la /home/staslend/programs_for_trying 显示:-rwxrwxr-- 1 staslend staslend 4 Янв 9 11:08 /home/staslend/programs_for_trying
猜你喜欢
  • 1970-01-01
  • 2018-06-25
  • 2021-02-21
  • 1970-01-01
  • 2017-10-13
  • 2017-08-12
  • 2012-02-02
  • 1970-01-01
相关资源
最近更新 更多