You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NASM编译报label or instruction expected at start of line错误求助

问题原因
  • 核心错误是你使用了NASM的**保留关键字word**作为自定义数据标签的名称。word是NASM中用于表示16位数据宽度的内置操作符,不允许被用作自定义变量、标签的标识符,这直接触发了三处报错:
    1. 第2行:word:作为标签开头时,NASM将word识别为关键字而非标签名,因此提示找不到合法的标签或指令
    2. 第3行:计算wordlen时引用了非法的word标签,导致表达式语法错误
    3. 第14行:给ecx赋值时引用了非法的word标签,同样触发表达式语法错误
解决方法

将所有代码中自定义的word标签替换为非保留字的名称,例如常用的msg即可。

修改后完整代码

SECTION .data
msg: db 'напиши что-нибудь', 10
msglen: EQU $-msg

SECTION .bss
smth: resb 80

SECTION .text
GLOBAL _start
_start:

mov eax,4
mov ebx,1
mov ecx,msg
mov edx,msglen
int 80h

mov eax,3
mov ebx,0
mov ecx,smth
mov edx,80
int 80h

mov eax,1
mov ebx,0
int 80h
编译测试说明

这段是32位Linux汇编代码,编译链接需要使用32位参数:
nasm -f elf32 lab3-1.asm -o lab3-1.o && ld -m elf_i386 lab3-1.o -o lab3-1
运行生成的可执行文件即可正常输出俄文提示,同时支持读取80字节以内的用户输入。


内容的提问来源于stack exchange,提问作者Qwerty Qwark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 11:00:01