0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

分享一些单片机汇编语言常见的语法和程序错误

h1654155971.7688 2018-01-13 09:41 次阅读

一、汇编软件汇编失败原因分析
这里采用Keil C51软件包中的宏汇编器A51作为编绎器,单片机的汇编语言编写时要注意一定的语法,详细介绍可以参考相关参考书,语法错误会造成汇编失败,常见的汇编错误如下:
1. 标号重复:常见于复制、粘贴程序时忘记修改标号,造成出现多个相同的标号,标号是不允许重复的。
2.标点符号以全角方式输入:汇编程序要求标点符号为半角方式,否则汇编失败。可以在输入:,;时切换到半角方式,或者在大写状态输入标点符号,这也是很容易犯而且不容易发觉的错误。
3.数值#FFH 前遗漏0:根据要求应该在a~f前加0,写成#0FFH
4.字母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转换成JNBP3.2,LD01AJMPEXITLD01: AJMPEXIT……
9.字母I和数字1混淆:冒失鬼的常见问题。
10.创造发明不存在的汇编语言指令:在编写程序程序的过程中可不欢迎这种创新,这种指令汇编程序不支持,芯片也不认可。
11.符号“:”“;”最好用半角书写。
分享一些单片机汇编语言常见的语法和程序错误
二、程序出错
1.寄存器重复调用:比如主程序中设定了R4=5,表示主程序循环执行5次,而其中的一个延时子程序又用到R4,使R4的值发生紊乱,造成程序无法正常执行。
2.硬件不熟悉:单片机一般采用下拉输出,往往端口输出0驱动外设工作,和常见的正逻辑相反,容易搞错。
三、指令系统常用符号和含义
(1)Ri:工作寄存器0和工作寄存器1,i=0或1。即R0~R1。
(2)Rn:工作寄存器R0~R7,n=0~7。
(3)@Ri:寄存器Ri间接寻址8位存储器单元00H~FFH。
(4)direct:8位直接地址,它可以是内RAM 00H~7FH或SFR的80H~FFH。
(5)#data:8位立即数。
(6)#data16:16位立即数。
(7)addr16:16位目的地址。用于LCALL和LJMP指令,能调用或转移到64K程序存储器空间的任何地方。(8)addr11:11位目的地址。用于ACALL和AJMP指令,可在下条指令地址所在的2K字节页面内调用或转移。
(9)rel:带符号的8位偏移地址,用于SJMP和所有的条件转移指令。其范围是相对于下一条指令第1字节地址的-128~+127个字节。
(10)DPTR:数据指针,可用作16位的地址寄存器。
(11)bit:位地址。片内RAM中的可位寻址及SFR中的可寻址位。
(12)A:累加器Acc。
(13)B:通用寄存器,主要用于乘法MUL和除法DIV指令中。
(14)Cy:进位标志位或布尔处理器中的累加器。
(15)@:间接寄存器或基址寄存器的前缀。如@Ri,@DPTR,@A+PC,@A+DPTR。编写汇编语言的忠告要养成良好的程序书写习惯,比如标号对齐、参数对齐、注释对齐,这样看起来赏心悦目,也不容易出错。标号最好采用有意义的英文,这样比较直观,注释尽量详细准确,便于以后读懂,而且有利于其它程序中作为子程序模块的调用。还有要注意典型程序模块的积累,再复杂的程序也是由一个个小程序模块组成的,在初学阶段可以对典型程序比如:延时子程序、查表子程序、按键消抖子程序等编写实践一次,这样印象深刻,便于以后引用。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    5998

    文章

    43950

    浏览量

    620570
  • 汇编语言
    +关注

    关注

    14

    文章

    404

    浏览量

    35187

原文标题:单片机汇编语言常见错误分析

文章出处:【微信号:weixin21ic,微信公众号:21ic电子网】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    单片机编程之汇编语言基础-常用指令和程序模式

    单片机编程分为单片机C语言编程和单片机汇编语言编程两种类型,单片机
    发表于 07-26 10:18 1.5w次阅读
    <b class='flag-5'>单片机</b>编程之<b class='flag-5'>汇编语言</b>基础-常用指令和<b class='flag-5'>程序</b>模式

    单片机开发300问】开发单片机时C语言汇编语言哪个更好

    部ROM、RAM、STACK等资源都有限,如果使用C语言编写,条C语言指令编译后,会变成很多条机器码,很容易出现ROM空间不够、堆栈溢出等问题。而且一些
    发表于 11-16 11:59

    51单片机波形显示程序汇编语言

    小弟向各位老大求助51单片机波形显示程序汇编语言的,不要很复杂,能演示就行。先谢啦! {:soso_e183:}
    发表于 03-05 04:17

    利用汇编语言单片机程序

    学习利用汇编语言单片机程序的第步是要学习汇编语言的相关理论知识,那么实践操作的第步肯定是从
    发表于 07-20 07:27

    单片机汇编语言开发简析

    之前看到堆栈、数据结构了什么的总觉得“高大上”,可望而不可即的高度。但是作为个嵌入式开发的程序员来说必须深入的了解单片机平台的存储器的结构,堆栈
    发表于 11-22 07:38

    单片机汇编语言程序

    单片机汇编语言程序库内容有运算子程序,通讯子程序,扩展接口程序,中断服务子
    发表于 01-19 22:39 82次下载
    <b class='flag-5'>单片机</b><b class='flag-5'>汇编语言</b><b class='flag-5'>程序</b>库

    51单片机汇编语言教程_单片机延时程序分析

    51单片机汇编语言教程:5课单片机延时程序分析
    发表于 01-19 15:26 0次下载

    51单片机汇编语言教程_第一个单片机程序

    51单片机汇编语言教程:4课第一个单片机程序
    发表于 01-19 15:27 0次下载

    汇编语言程序设计

    电子专业单片机相关知识学习教材资料——汇编语言程序设计
    发表于 09-01 16:40 0次下载

    基于51单片机汇编语言教程:22课单片机串行口通信程序设计

    基于51单片机汇编语言教程:22课单片机串行口通信程序设计
    发表于 09-04 11:00 25次下载

    单片机汇编语言常见错误知识点分析

    汇编语言作为计算机专业及相关学科一门重要的基础课程,其重要性不言而喻。但是对于众多初学汇编语言的人来说,都普遍感到较难且不易理解和掌握,难以入门,看着有错的程序,更是不知从何改起,本文主要介绍的就是
    的头像 发表于 04-26 15:03 6229次阅读

    单片机汇编语言程序设计的详细资料精讲

    本文档的主要内容详细介绍的是单片机汇编语言程序设计的详细资料精讲包括了:1 汇编程序约定,2 汇编程序设计步骤,3 顺序
    发表于 03-07 16:37 24次下载
    <b class='flag-5'>单片机</b><b class='flag-5'>汇编语言</b><b class='flag-5'>程序</b>设计的详细资料精讲

    单片机 | 基础汇编语言编程实例

    单片机汇编语言编程
    的头像 发表于 06-05 18:04 9498次阅读

    MCS-51单片机汇编语言程序设计

    前言MCS-51单片机的编程语言可以是汇编语言也可以是高级语言(如C语言)。高级语言编程快捷,但
    发表于 11-05 12:21 28次下载
    MCS-51<b class='flag-5'>单片机</b><b class='flag-5'>汇编语言</b><b class='flag-5'>程序</b>设计

    单片机汇编语言和c语言的区别是什么

    单片机从诞生到现在,经过了将近70年的发展。众所周知,单片机是可以通过编写程序实现产品的功能,这么多年来,单片机的规格并没有多大变化,而单片机
    发表于 06-21 16:59 5709次阅读