欢迎来到天天文库
浏览记录
ID:51995074
大小:269.50 KB
页数:42页
时间:2020-03-27
《单片机原理及应用-第4章汇编语言程序设计.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第4章汇编语言程序设计本章学习目标:了解汇编语言程序设计步骤。掌握简单的顺序程序设计。掌握简单的分支程序设计。掌握简单的循环程序设计。掌握简单的子程序设计。掌握一些常用程序设计。4.1汇编语言程序设计概述4.1.1程序设计语言1.机器语言机器语言是计算机唯一能识别和执行的语言,用其编写的程序执行效率最高,速度最快,但由于指令的二进制代码很难记忆和辨认,给程序的编写、阅读和修改带来很多困难,所以几乎没有人直接使用用机器语言来编写程序。2.汇编语言为了容易理解和记忆计算机的指令,人们用英文助记符表示指令,用助记符表示的指令就是符号语言或汇编语言。汇编语言特点:(1)面向机器的语
2、言,程序设计员须对MCS-51的硬件有相当深入的了解。(2)助记符指令和机器指令一一对应,用汇编语言编写的程序效率高,占用存储空间小,运行速度快,用汇编语言能编写出最优化的程序。能直接管理和控制硬件设备(功能部件),它能处理中断,也能直接访问存储器及I/O接口电路。(3)汇编语言和机器语言都脱离不开具体机器的硬件,均是面向“机器”的语言,缺乏通用性。3.高级语言高级语言是一种面向算法、过程和对象的程序设计语言,它采用更接近人们自然语言和习惯的数学表达式及直接命令的方法来描述算法、过程和对象。高级语言的语句直观、易学、通用性强,便于推广、交流,但高级语言编写的程序经编译后所产
3、生的目标程序大,占用内存多,运行速度较慢。4.1.2汇编语言程序设计步骤1.分析题意,明确要求。2.确定算法。根据实际问题的要求、给出的条件及特点,找出规律性,最后确定所采用的计算公式和计算方法,这就是一般所说的算法。算法是进行程序设计的依据,它决定了程序的正确性和程序的指令。处理框流程线判断框起止框3.画程序流程图,用图解来描述和说明解题步骤。4.分配内存工作单元,确定程序与数据区存放地址。5.编写源程序。6.程序优化。7.上机调试、修改和最后确定源程序。4.1.3汇编语言格式与伪指令1.汇编程序格式[标号:]操作码助记符[目的操作数][,源操作数][;注释]例如:CLE
4、AR:MOVA,#00H;将0送入A中2.伪指令伪指令不能命令CPU执行某种操作,也没有对应的机器代码,它的作用仅用来给汇编程序提供某种信息。(1)ORG汇编起始地址命令在汇编语言源程序的开始,通常都用一条ORG伪指令来实现规定程序的起始地址。例如ORG2000HSTART:MOVA,#00H┋规定标号START代表地址为2000H开始。(2)END汇编终止命令汇编语言源程序的结束标志,用于终止源程序的汇编工作。在整个源程序中只能有一条END命令,且位于程序的最后。(3)DB(DefineByte)定义字节命令在程序存储器的连续单元中定义字节数据。例如ORG2000HDB3
5、0H,40H,24,“C”,“B”汇编后:(2000H)=30H(2001H)=40H(2002H)=18H(10进制数24)(2003H)=43H(字符“C”的ASCII码)(2004H)=42H(字符“B”的ASCII码)(4)DW(DefineWord)定义数据字命令从指定的地址开始,在程序存储器的连续单元中定义16位的数据字。例如ORG2000HDW1246H,7BH,10汇编后:(2000H)=12H;第1个字(2001H)=46H(2002H)=00H;第2个字(2003H)=7BH(2004H)=00H;第3个字(2005H)=0AH(2005H)=0AH(5
6、)EQU(Equate)赋值命令用于给标号赋值。赋值以后,其标号值在整个程序有效。例如:TESTEQU2000H表示标号TEST=2000H,在汇编时,凡是遇到标号TEST时,均以2000H来代替。(6)BIT(位地址赋值)伪指令该语句的功能是把BIT右边的位地址赋给它左边的“字符名称”。因此,BIT语句定义过的“字符名称”是一个符号位地址。例如:ORG0030HA1BIT00HA2BITP0.04.2顺序程序设计例4-1有两个三字节无符号数,其中一个加数在内部RAM的50H、51H、52H单元中,另一个加数在内部RAM的53H、54H和55H单元中,要求把相加之和存放在5
7、0H、51H和52H单元中,进位存放在位寻址区00H位中。解:ORG0010HMOVR0,#52H;一个加数的低字节地址MOVR1,#55H;另一个加数的低字节地址MOVA,@R0ADDA,@R1;低字节相加MOV@R0,A;存放低字节相加结果DECR0DECR1MOVA,@R0ADDCA,@R1;中间字节带进位相加MOV@R0,A;存放中间字节相加结果DECR0DECR1MOVA,@R0ADDCA,@R1;高字节带进位相加MOV@R0,A;存放高字节相加结果MOV00H,C;进位送00H位保存SJMP$END4.
此文档下载收益归作者所有