[root@localhost ~]# nasm -f bin -o 1.bin 1.asm nasm: fatal: unable to open input file `1.asm'
时间: 2024-02-18 16:01:59 浏览: 129
这个错误提示是因为 nasm 找不到名为 1.asm 的汇编代码文件。请确保该文件存在于当前工作目录中,或者你已经正确地指定了文件路径。你可以尝试使用绝对路径来指定该文件,例如:
```
nasm -f bin -o 1.bin /home/user/code/1.asm
```
如果该文件存在于当前工作目录中,那么请检查你是否有读取该文件的权限。
相关问题
我把NASM这个文件夹放在D盘,把filename.asm放在D:\NASM\example这个路径,我打开命令行,输入cdD:\NASM\example,然后输入D:\nasm\nasm.exe -f win32filename.asm,为什么显示filename.asm:122: error: parser:instruction expected?哪里出错了?是我命令输错了吗?
在使用NASM编译汇编程序时,如果出现"filename.asm:122: error: parser:instruction expected"这样的错误提示,通常是因为在汇编程序中第122行出现了语法错误。
你需要检查filename.asm文件的第122行,看看是否有语法错误,比如拼写错误、标点符号错误、操作指令错误等。如果有错误,需要及时进行修正。
另外,你在执行NASM编译命令时,指定了"-f win32"参数,这个参数用于指定编译生成的目标文件类型为Win32可执行程序。如果你要编译生成的是32位的Windows可执行程序,可以使用"-f win32"参数;如果你要编译生成的是16位的DOS可执行程序,可以使用"-f obj"参数。
综合考虑,你可以尝试使用以下命令进行编译:
```
D:\nasm\nasm.exe -f win32 -o filename.obj filename.asm
```
其中,"-f win32"表示生成Win32可执行程序,"-o filename.obj"表示指定输出文件名为filename.obj。执行上述命令后,如果没有语法错误,NASM会生成filename.obj文件,然后你可以使用Microsoft Visual Studio或者其他编译器将其链接成可执行程序。
shiyan52.asm(1): error A2210: 16 bit segments not allowed with /coff option shiyan52.asm(11): error A2210: 16 bit segments not allowed with /coff option shiyan52.asm(52): error A2210: 16 bit segments not allowed with /coff option Failed to write unknown type symbol DATA, 16 shiyan52.asm(14): error A2004: symbol type conflict shiyan52.asm(14): warning A4012: line number information for segment without class 'CODE' : CODE shiyan52.asm(17): error A2004: symbol type conflict shiyan52.asm(20): error A2004: symbol type conflict shiyan52.asm(24): error A2004: symbol type conflict shiyan52.asm(26): error A2004: symbol type conflict shiyan52.asm(41): error A2004: symbol type conflict shiyan52.asm(44): error A2004: symbol type conflict
这些错误提示显示您使用了 /coff 选项,而 16 位段不允许与该选项一起使用。/coff 选项用于生成 COFF 格式的输出文件,而 16 位段则通常用于生成早期的 DOS 可执行文件或 COM 文件。
为了解决这个问题,您可以尝试以下几个步骤:
1. 如果您不需要使用 /coff 选项,请尝试将其从汇编命令中删除,然后再次编译代码。
2. 如果您需要使用 /coff 选项,请将代码中的 16 位段改为 32 位段,或者使用其他支持的段类型,例如 .data 和 .text。例如,您可以将代码中的段定义从这样:
```
.model small
.stack 100h
.data
msg db 'Hello, World!',0ah, '$'
.code
main proc
; ...
```
改为这样:
```
.model flat
.stack 100h
.data
msg db 'Hello, World!',0ah, '$'
.code
main proc
; ...
```
3. 如果您需要生成 DOS 可执行文件或 COM 文件,可以使用其他汇编工具,例如 TASM 或 NASM,这些工具支持 16 位段和 DOS 目标文件格式。
希望这些步骤可以帮助您解决问题。
阅读全文