联系方式  客服中心 会员中心 切换到繁體中文

 单片机技术培训基地
 | 网站首页 | 资讯 | 培训中心 | 技术文章 | 软件下载 | 产品展示 | 留言板 | 电子商城 | 供求信息 | 求职招聘 | 
您现在的位置: 华信单片机 > 培训中心 > 教学资源 > 讲义资料 > 培训正文 用户登录 新用户注册
编写汇编语言常见错误分析         ★★★★★ 【字体:
编写汇编语言常见错误分析
作者:华信单片…    培训来源:本站原创    点击数:    更新时间:2005-6-8    


一、汇编软件汇编失败原因分析:

     这里采用Keil C51软件包中的宏汇编器A51作为编绎器,单片机的汇编语言编写时要注意一定的语法,详细介绍可以参考相关参考书,语法错误会造成汇编失败,常见的汇编错误如下:
1.
标号重复:
   
常见于复制、粘贴程序时忘记修改标号,造成出现多个相同的标号,标号是不允许重复的。
2
.标点符号以全角方式输入:
   汇编程序要求标点符号为半角方式,否则汇编失败。可以在输入:,;时切换到半角方式,或者在大写状态输入标点符号,这也是很容易犯而且不容易发觉的错误。
3
.数值#FFH 前遗漏0
  
根据要求应该在af前加0,写成#0FFH
4
.字母O和数字0搞混:
  
有时候这两个字看上去完全相同,要注意哦~~
5
.标号后边遗漏""
6
.标号使用了特殊字符:
  
标号不能用指令助记符、伪指令、特殊功能寄存器名和8051在指令系统中用的“#”、“@”等,长度以2~6字符为宜,第一字母必须是英文字母。比如:T1T2AB这些字符有特定的含义,不允许用于标号。
7
AJMP跳转超过2K地址:
  
AJMP属于短跳转命令,有2K地址范围的限制。
8
.超过地址范围:
  
JB P3.2,EXIT跳转超过-128127个地址范围。这个是最容易出现的错误!你有可能程序刚才还能汇编编译成功,你加了一段程序后程序就提示出错了,你可以把
JB   P3.2,EXIT
转换成
JNB    P3.2,LD01
AJMP  EXIT

LD01:
AJMP    EXIT

 

9.字母I和数字1混淆:
  
冒失鬼的常见问题。
10.
创造发明不存在的汇编语言指令:
  
在编写程序程序的过程中可不欢迎这种创新,这种指令汇编程序不支持,芯片也不认可。
11.
符号“:”“;”最好用半角书写。

二、程序出错:
1.寄存器重复调用:
 
 比如主程序中设定了R45,表示主程序循环执行5次,而其中的一个延时子程序又用到R4,使R4的值发生紊乱,造成程序无法正常执行。
2
.硬件不熟悉:
  
单片机一般采用下拉输出,往往端口输出0驱动外设工作,和常见的正逻辑相反,容易搞错。

编写汇编语言的忠告:

  要养成良好的程序书写习惯,比如标号对齐、参数对齐、注释对齐,这样看起来赏心悦目,也不容易出错。标号最好采用有意义的英文,这样比较直观,注释尽量详细准确,便于以后读懂,而且有利于其它程序中作为子程序模块的调用。还有要注意典型程序模块的积累,再复杂的程序也是由一个个小程序模块组成的,在初学阶段可以对典型程序比如:延时子程序、查表子程序、按键消抖子程序等编写实践一次,这样印象深刻,便于以后引用。

三、指令系统常用符号和含义

1Ri:工作寄存器0和工作寄存器1i=01。即R0~R1

2Rn:工作寄存器R0R7n=07

3@Ri:寄存器Ri间接寻址8位存储器单元00HFFH

4direct8位直接地址,它可以是内RAM 00H7FHSFR80HFFH

5#data8位立即数。

6#data1616位立即数。

7addr1616位目的地址。用于LCALLLJMP指令,能调用或转移到64K程序存储器空间的任何地方。

8addr1111位目的地址。用于ACALLAJMP指令,可在下条指令地址所在的2K字节页面内调用或转移。

9rel:带符号的8位偏移地址,用于SJMP和所有的条件转移指令。其范围是相对于下一条指令第1字节地址的-128+127个字节。

10DPTR:数据指针,可用作16位的地址寄存器。

11bit:位地址。片内RAM中的可位寻址及SFR中的可寻址位。

12A:累加器Acc

13B:通用寄存器,主要用于乘法MUL和除法DIV指令中。

14Cy:进位标志位或布尔处理器中的累加器。

15@:间接寄存器或基址寄存器的前缀。如@Ri@DPTR@A+PC@A+DPTR

 

培训录入:admin    责任编辑:admin 
  • 上一篇培训:

  • 下一篇培训:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关培训
    没有相关培训
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)