89tc52单片机,汇编语言单片机编写一个

  汇编语言单片机是计算机能夠提供给用户使用的最快而又最有效的语言也是能够利用计算机所有硬件特性并能直接控制硬件的惟一语言。因而对程序的空间和时间偠求很高的场合汇编语言单片机的应用是必不可少的。至于很多需要直接控制硬件的应用场合则更是非用汇编语言单片机不可了。

  作为计算机专业及相关学科一门重要的基础课程其重要性不言而喻。但是对于众多初学汇编语言单片机的人来说都普遍感到较难且鈈易理解和掌握,难以入门看着有错的程序,更是不知从何改起本文主要介绍的就是单片机汇编语言单片机常见错误知识点分析,具體的跟随小编来了解一下

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

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

  单片机的汇编语言单爿机编写时要注意一定的语法,详细介绍可以参考相关参考书语法错误汇会造成汇编失败,常见的汇编错误如下:

  1、标号重复 常见於复制、粘贴程序时忘记修改标号造成出现多个相同的标号,标号是不允许重复的

  2、标点符号以全角方式输入 MAS51程序要求标点符号為半角方式,否则汇编失败可以在输入:,;时切换到半角方式或者在大写状态输入标点符号,这也是很容易犯而且不容易发觉的错误

  3、注释太长 有时为了以后读懂程序,写了很长的注释站长发现超过20个汉子时也会造成汇编失败,解决办法可以将太长的注释分成哆个注释

  4、数值#FFH 前遗漏0,根据要求应该在a~f前加0写成#0FFH

  5、字母O和数字0搞混 有时候这两个字看上去完全相同,要注意哦

  6、标号后边遗漏“:”

  7、标号使用了特殊字符比如:T1、T2、A、B这些字符有特定的含义,不允许用于标号

  8、AJMP跳转超过2K地址,AJMP属于短跳转命令有2K地址范围的限制。

  9、JB P3.2EXIT跳转超过-128~127个地址范围。这个是最容易出现的错误!你有可能程序刚才还能汇编编译成功伱加了一段程序后程序就提示出错了,你可以把JB P3.2EXIT转换成JNB P3.2,UUUAJMP EXITUUU:

  10、字母I和数字1混淆冒失鬼的常见问题。

  11、创造发明不存在的汇编語言单片机指令在编写程序程序的过程中可不欢迎这种创新,这种指令汇编程序不支持芯片也不认可。

  12、符号“:”“;”最好鼡半角书写

  使用汇编软件常见问题解答:

  2、如果汇编软件出现**Dos File I/O error **提示字样说明是汇编文件的路径出错。第一要注意MASM51软件的安装路徑中不能出现中文名称例如汇编软件安装在D:单片机下面,第二要汇编的文件的路径中也不能出现中文名称例如D:单片机01.TXT。当文件后綴不是asm时后缀不能省略。

  1、寄存器重复调用:

  比如主程序中设定了R4=5表示主程序循环执行5次,而其中的一个延时子程序又用到R4使R4的值发生紊乱,造成程序无法正常执行

  单片机一般采用下拉输出,往往端口输出0驱动外设工作和常见的正逻辑相反,容易搞錯

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

  (1)Ri:工作寄存器0和工作寄存器1,i=0或1即R0~R1。

  (2)Rn:工作寄存器R0~R7n=0~7。

  (3)@Ri:寄存器Ri間接寻址8位存储器单元00H~FFH

  (5)#data:8位立即数。

  (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。

欣荣科技公司提供修改等服务。经常有客户会问到:“单片机程序能反汇编吗是反成还是?什么是单片机汇编语言单片机C语言?”看以下一文您的懂了!

单片机又稱单片微控制器它是把一个计算机系统,包括cpu、ram、rom、定时/计数器和多种i/o接口集成到一个芯片上由于单片机的种种优点和特性,其应用領域极其广泛单片机系统同样也由硬件系统和软件系统构成,因此涉及到程序的编写问题单片机的编程语言很多,大致分成三类:机器语言、汇编语言单片机、高级语言机器语言由于繁琐容易出错,一般用户已经不再使用下面分别对汇编语言单片机和最常用的高级語言进行分析。

汇编语言单片机是一种用文字助记符来表示机器指令的符号语言是最接近机器码的一种语言。其主要优点是占用资源少程序执行效率高,由于它一条指令就对应一条机器码每一步的执行动作都很清楚,并且程序大小和堆栈调用情况都容易控制调试起來也比较方便。但是不同的类型的单片机其汇编语言单片机可能有点差异,所以不易移植因为他们的指令系统是有区别的。但懂得汇編语言单片机可帮助了解影响任何语言效率的特殊规定例如,懂得汇编语言单片机指令就可以使用在片内ram作变量的优势因为片外变量需要几条指令才能设置累加器和数据指针进行存取。同样的当要求使用浮点数和启用函数时也只有具备汇编编程经验才能避免生成庞大嘚、效率低的程序,对于这方面的编程没有汇编语言单片机是做不到的。

单片机的c语言是一种编译型程序设计语言它兼顾了多种高级語言的特点,并具备汇编语言单片机的功能c语言具有功能丰富的库函数,运算速度快编译效率高,有良好的可移植性而且可以实现矗接对系统硬件的控制。此外c语言程序具有完整的程序模块结构,从而为软件开发中采用模块化程序设计方法提供了有力的保障与汇編相比,有如下优点:

对单片机的指令系统不要求了解仅要求对51的存储器结构有初步了解,至于寄存器分配、不同存储器的寻址及数据類型等细节均由编译器管理

程序有规范的结构,可分为不同的函数这种方式可使程序结构化,将可变的选择与特殊操作组合在一起妀善了程序的可读性。

编程及程序调试时间显著缩短从而提高效率。提供的库包含许多标准子程序具有较强的数据处理能将已编好程序可容易的植入新程序,因为它具有方便的模块化编程技术

功能强而有弹性,提供的库包含许多标准子程序具有较强的数据处理能力,能将已编好程序容易的植入新程序因为它具有方便的模块化编程技术。

单片机c语言作为一种非常方便的语言而得到广泛的支持c语言程序本身并不依赖于机器硬件系统,基本上不做修改就可根据单片机的不同较快地移植过来

用单片机c语言进行程序设计,已成为单片机軟件开发的一个主流作为一个技术全面并涉足较大规模的软件系统开发的单片机开发人员最好能够掌握基本的c语言编程。

对于单片机编程还有basic语言和pl/m语言。

pl/m语言可读性好可靠性高,但不支持复杂的算术运算、浮点变量且无丰富的库函数支持

汇编语言单片机与处理器密切相关。每种处理器都有自己的指令系统相应的汇编语言单片机各不相同。所以汇编语言单片机程序的通用性、可移植性较差。相對来说高级语言与具体计算机无关,高级语言程序可以在多种计算机上编译后执行

汇编语言单片机功能有限,又涉及寄存器、主存单え等硬件细节所以编写程序比较繁琐,调试起来也比较困难高级语言提供了强大的功能,采用类似自然语言的语法所以容易被掌握囷应用,它不必关心诸如标志、堆栈等琐碎问题

汇编语言单片机本质上就是机器语言,它可以直接、有效地控制计算机硬件因而容易產生运行速度快、指令序列短小的高效率目标程序。高级语言不易直接控制计算机的各种操作编译程序产生的目标程序往往比较庞大、程序难以优化,所以运行速度较慢

当然,有时候用单片机c语言也不能够实现所有要编写程序的功能比如当想编写一个精确控制的定时程序时,用起汇编语言单片机来还是比较方便的因此想成为一个优秀的单片机编程技术员,最好就是能懂得单片机c语言和汇编语言单片機的混合编程因为,汇编语言单片机程序占用存储空间很小、对硬件控制灵活、反应速度快但是其可读性差、难于调试与更新维护。c語言更新维护方便、可移植性强但实践证明,单独使用c语言开发单片机程序也存在诸多不足之处例如占用存储空间大、对硬件控制不靈活等。所以单独使用任何一门语言开发单片机程序都不够理想。为此要编写出高速度、高效率、可移植性强的单片机程序,集合c语訁与汇编语言单片机各自的优势创出所谓的单片机c和汇编语言单片机混合编程。在编程过程中通常用c语言来构建程序框架,而用作为孓程序来处理一些有实时性要求的特殊应用

学了一学期的单片机还是啥都不會自己试着编个程序总是提示下面这种错误,不知道怎么改assembling数据转移./usercenter?uid=e75f05e79d207">做而论道
那该怎么改呢用哪个寄存器可以存放16位的数啊?
只有DPTR財可以使用 16 位数。
看看我的百度空间吧有许多的例程。

你对这个回答的评价是

我要回帖

更多关于 汇编语言单片机 的文章

 

随机推荐