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

发布时间:2023-08-28  

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

文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    调试等功能。 2. 基本语法 51单片机汇编程序设计的基本语法与其他汇编语言类似,主要包括以下几个方面: (1) 注释:使用分号(;)表示注释,用于说明代码的作用和功能。 (2) 标识符:用于定义变量名、子程......
    、DI、SETB、CLR 等。 总之,在51单片机编程中,编译指令系统是非常重要的一环。掌握51单片机汇编语言和编译指令系统可以帮助开发人员更好地理解51单片机内部原理,并且更灵活高效地进行嵌入式系统开发。 ......
    8051汇编语言之LED流水灯;用汇编编写程序,不需要选择添加头文件,且程序文件需要用ASM作为后缀。 ORG      0000H   //汇编伪指令,它指定下一条语句将在哪里开始,这种汇编......
    编程不同的程序,从而实现不同的功能。 一、如何使用单片机? 首先我们需要掌握单片机的编程语言,目前大多数的单片机都支持C语言编程 ,个别低端单片机还需要汇编语言。 所以单片机开发,我们C语言编程基础就可以满足90......
    软件编程 该系统的软件编程采用MCS-51系列单片机汇编语言完成,并把显示程序作为一个子程序,从而使主程序对其进行方便的调用。图2所示是其流程图。具体的程序代码如下: ......
    忘的一干二净,是不是?你学到什么了?我认为这样的生活没有意义。但是我告诉你单片机一旦学会,永远不会忘了。 另外我再说说关于用汇编语言还是C语言编程的问题。很多同学大一、二就开设了C语言的课,我也上过,我知......
    单片机则有二级流水结构,可以在一定程度上实现指令并发(虽然不如x86/64系列CPU或者ARM系列CPU)。 3 汇编指令 51系列单片机大约有一百多条汇编指令,基本包含了在程序运行中需要用到的绝大多数汇编......
    仿真,进行一些最基本的练习,熟悉汇编语言51单片机状态变化,c语言等,验证自己在51单片机架构学习中的一些理解,代码实现的理解。学习到一定的程度还是需要一块51开发板进行开发练习的,毕竟......
    能,定时器,单片机汇编语句等。 每天背概念,记理论,过了大概一个月,结果肯定就是一个懵逼的状态。 正在这个懵逼的时候,实验室的一个同学建议我先学C语言,再学习单片机程序开发,说汇编没有啥用。 我又......
    的P1.7输出低电平“0”和高电平“1”就可以让发光二极管闪烁发光。 下面以51单片机汇编语言来编程,让某个端口输出高电平语句是SETB,让端口输出低电平的语句是CLR语句,让......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>