单片机汇编语言常见错误分析
一、汇编软件汇编失败原因分析:
这里采用 Keil C51 软件包中的宏汇编器 A51 作为编绎器,单片机的汇编语 言编写时要注意一定的语法,详细介绍可以参考相关参考书,语法错误会造成 汇编失败,常见的汇编错误如下:1. 标号重复: 常见于复制、粘贴程序时忘 记修改标号,造成出现多个相同的标号,标号是不允许重复的。2.标点符号 以全角方式输入:
汇编程序要求标点符号为半角方式,否则汇编失败。可以
在输入:,;时切换到半角方式,或者在大写状态输入标点符号,这也是很容易 犯而且不容易发觉的错误。3.数值#FFH 前遗漏 0: 根据要求应该在 a~f 前 加 0,写成#0FFH4.字母 O 和数字 0 搞混: 有时候这两个字看上去完全相同, 要注意哦~~5.标号后边遗漏”:”6.标号使用了特殊字符: 标号不能用指令 助记符、伪指令、特殊功能寄存器名和 8051 在指令系统中用的“#”、“@”等,长 度以 2~6 字符为宜,第一字母必须是英文字母。比如:T1、T2、A、B 这些字 符有特定的含义,不允许用于标号。7.AJMP 跳转超过 2K 地址: AJMP 属于 短跳转命令,有 2K 地址范围的限制。8.超过地址范围: JB P3.2,EXIT 跳转 超过-128~127 个地址范围。这个是最容易出现的错误!你有可能程序刚才还 能汇编编译成功,你加了一段程序后程序就提示出错了,你可以把 JB
P3.2,EXIT 转换成 JNB P3.2,LD01AJMP EXITLD01: AJMP EXIT……9.字母 I 和 数字 1 混淆: 冒失鬼的常见问题。10.创造发明不存在的汇编语言指令: 在编 写程序程序的过程中可不欢迎这种创新,这种指令汇编程序不支持,芯片也不 认可。11.符号“:”“;”最好用半角书写。 二、程序出错:
1.寄存器重复调用: 比如主程序中设定了 R4=5,表示主程序循环执行 5 次,