汇编语言1000次循环代码报错求助:行尾非法字符及未知操作码
错误分析与修正方案
错误原因拆解
- A1137E: 行尾意外字符:你将C语言的变量初始化、自增写法(
i = 1、i++)混入ARM汇编指令中,ARM汇编语法不允许这种格式,MOV、ADD指令只需遵循自身语法,无需额外添加这类C风格代码。另外ARM汇编注释需用@开头,而非分号(部分编译器支持分号,但此处核心问题是多余的C风格代码)。 - A1163E: 未知操作码endloop:
endloop作为循环结束标签,ARM汇编要求标签后必须加冒号:,你漏加了该符号,导致编译器将其当作指令解析,自然找不到对应操作码。
修正后的代码
@ 初始化R0为1,作为循环计数器 MOV R0, #1 @ 初始化R1为0(若需累加操作,建议补充) MOV R1, #0 startloop CMP R0, #1000 BGT endloop ADD R1, R1, R0 @ 累加R0的值到R1 ADD R0, R0, #1 @ 循环计数器自增 B startloop endloop: @ 标签后必须添加冒号,明确标识为标签
关键修正点
- 移除指令后多余的C风格代码,让汇编指令严格符合ARM语法规范。
- 给
endloop标签添加冒号:,明确告知编译器这是标签而非指令。 - 用
@添加必要注释,提升代码可读性。
内容的提问来源于stack exchange,提问作者Dylan de Hoyos
相关产品推荐
相关产品推荐

