qi_asm 发表于 2026-1-4 17:16:56

有大神知道图片中三个警告是什么问题?

有大神知道图片中三个警告是什么问题?
warning L1:unresolevd external symbol
symbol:?c_start
warning L5:code space memory overlap
FROM:0000H
TO:0002H

狂热主宰 发表于 2026-1-4 20:39:01

和.A51代码有重叠
有未定义外部标识符

angmall 发表于 2026-1-4 22:40:12

你是用汇编写代码,就不要加这个文件STARTUP.A51,这个文件是给c语言的。


L1 和 L2 警告(关于 ?C_START):

根本原因:STARTUP.A51 是Keil C51编译器为C语言程序准备的自动初始化代码。它负责设置堆栈、清除内存等,最后会跳转到一个名为 ?C_START 的C语言主函数入口。

你的情况:你的项目是纯汇编的,代码里没有 ?C_START 这个C语言符号。当链接器试图把 STARTUP.A51 和你写的 ASM_LED_0.asm 连接在一起时,自然就找不到这个符号,从而报出“未解决的外部符号”警告。

结论:这两个警告直接证明了 STARTUP.A51 不应该出现在你的项目中。



狂热主宰 发表于 2026-1-5 00:04:46

angmall 发表于 2026-1-4 22:40
你是用汇编写代码,就不要加这个文件STARTUP.A51,这个文件是给c语言的。

汇编现在少用
资源紧缺会考虑
或者维护老项目

angmall 发表于 2026-1-5 10:05:16

狂热主宰 发表于 2026-1-5 00:04
汇编现在少用
资源紧缺会考虑
或者维护老项目

确实,汇编语言在通用软件开发中已不多见,如今主要在特定领域发挥关键作用。同时,学习它也能帮你从根本上理解计算机是如何工作的。

总的来说,汇编语言是一门“不常用,但关键时刻无可替代”的语言。
页: [1]
查看完整版本: 有大神知道图片中三个警告是什么问题?