x86_64 Linux汇编.data段NASM编译报错求助
解决NASM编译时第2行的语法错误
嘿,这个问题很常见,我来帮你快速搞定!
你遇到的编译错误根源在第2行的变量名 str——它是NASM的保留字,和x86汇编里的字符串操作指令前缀(比如strsb、strsw这类字符串传送指令)冲突了。NASM会把str识别成指令的一部分,而非你定义的变量名,自然就触发了语法解析错误。
修复方法
只需要把变量名改成一个非保留字即可,比如msg、input_str这类自定义名称都可以。修改后的代码如下:
section .data msg db "12.3",0 ; 将原变量名str替换为msg(或其他任意非保留字) section .text global _start _start: mov rax, 60 mov rdi, 0 syscall
验证修复
现在重新执行你的编译命令:
nasm -f elf64 1.asm
应该就能正常编译通过了。
另外提个小提醒:在NASM里写汇编时,要避开用指令助记符、寄存器名、预定义符号来当变量或标签名,不然很容易踩这类语法坑。
内容的提问来源于stack exchange,提问作者Hash
相关产品推荐
相关产品推荐

