单片机原理及应用-第4章汇编语言程序设计.ppt
《单片机原理及应用-第4章汇编语言程序设计.ppt》由会员分享,可在线阅读,更多相关《单片机原理及应用-第4章汇编语言程序设计.ppt(42页珍藏版)》请在三一办公上搜索。
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汇编程序格式标号:操作码助记符 目的操作数,源操作数;注释例如:CLEAR:MOV A,#00H;将0送入A中,2伪指令 伪指令不能命
4、令CPU执行某种操作,也没有对应的机器代码,它的作用仅用来给汇编程序提供某种信息。,(1)ORG 汇编起始地址命令 在汇编语言源程序的开始,通常都用一条ORG伪指令来实现规定程序的起始地址。例如 ORG 2000HSTART:MOV A,#00H规定标号START代表地址为2000H开始。,(2)END 汇编终止命令 汇编语言源程序的结束标志,用于终止源程序的汇编工作。在整个源程序中只能有一条END命令,且位于程序的最后。,(3)DB(Define Byte)定义字节命令在程序存储器的连续单元中定义字节数据。例如ORG 2000HDB 30H,40H,24,“C”,“B”汇编后:(2000H)
5、=30H(2001H)=40H(2002H)=18H(10进制数24)(2003H)=43H(字符“C”的ASCII码)(2004H)=42H(字符“B”的ASCII码),(4)DW(Define Word)定义数据字命令从指定的地址开始,在程序存储器的连续单元中定义16位的数据字。例如ORG 2000HDW 1246H,7BH,10汇编后:(2000H)=12H;第1个字(2001H)=46H(2002H)=00H;第2个字(2003H)=7BH(2004H)=00H;第3个字(2005H)=0AH(2005H)=0AH,(5)EQU(Equate)赋值命令 用于给标号赋值。赋值以后,其标号
6、值在整个程序有效。例如:TEST EQU 2000H 表示标号TEST=2000H,在汇编时,凡是遇到标号TEST时,均以2000H来代替。,(6)BIT(位地址赋值)伪指令 该语句的功能是把BIT右边的位地址赋给它左边的“字符名称”。因此,BIT语句定义过的“字符名称”是一个符号位地址。例如:ORG 0030HA1 BIT 00HA2 BIT P0.0,4.2 顺序程序设计,例4-1 有两个三字节无符号数,其中一个加数在内部RAM的50H、51H、52H单元中,另一个加数在内部RAM的53H、54H和55H单元中,要求把相加之和存放在50H、51H和52H单元中,进位存放在位寻址区00H位中
7、。,解:ORG 0010H MOV R0,#52H;一个加数的低字节地址 MOV R1,#55H;另一个加数的低字节地址 MOV A,R0 ADD A,R1;低字节相加 MOV R0,A;存放低字节相加结果 DEC R0 DEC R1 MOV A,R0 ADDC A,R1;中间字节带进位相加 MOV R0,A;存放中间字节相加结果 DEC R0 DEC R1 MOV A,R0 ADDC A,R1;高字节带进位相加 MOV R0,A;存放高字节相加结果 MOV 00H,C;进位送00H位保存 SJMP$END,4.3 分支程序设计,例4-2 累加器A中有一单字节有符号数,求其二进制补码。解:正数
8、补码是其本身,负数补码是其反码加1。因此,程序应首先判断被转换数的符号,负数进行转换,正数即为补码。ORG 0020H JNB ACC.7,RETURN;A0,不需要转换 MOV C,ACC.7;符号位保存 CPL A;A求反,加1 ADD A,#1 MOV ACC.7,C;符号位存A的最高位RETURN:RET,例4-3 设自变量为一无符号数,存放在内部RAM的VAX单元,函数Y存放在FUNC单元。请编写满足如下关系的程序:,ORG 0200H VAR DATA 20H FUNC DATA 21H MOV A,VAR;A(20H)CJNE A,#50,NEXT1;建立CyNEXT1:JNC
9、DONE;若X50,则DONE CJNE A,#20H,NEXT2;建立CyNEXT2:JC NEXT3;若X20,则NEXT3 RL A RL A ADD A,20H;A5X SJMP DONE NEXT3:RL A;A2X DONE:MOV FUNC,A;21HA SJMP$END,4.4 循环程序设计,例4-4 设单片机8031内部RAM起始地址30H的数据块中有64个无符号数。试编写程序使它们按从小到大的顺序排列。,ORG 1000HBUBBLE:MOV R0,#30H;置数据块指针R0 MOV R2,#64;块长送R2 CLR 7FH;交换标志2FH.7清零 DEC R2;块长1为比
10、较次数BULOOP:MOV 20H,R0;eN送20H MOV A,R0;eN送A INC R0 MOV 21H,R0;eN-1送21H DEC A CJNE A,21H,LOOP;(20H)和(21H)比较 LOOP:JC BUNEXT;若(20H)(21H),则BUNEXT MOV R0,20H;若(20H)(21H),则两者交换 DEC R0 MOV R0,21H INC R0;恢复数据块指针 SETB 7FH;置“1”交换标志位BUNEXT:DJNZ R2,BULOOP;若一次冒泡未完,则BULOOP JB 7FH,BUBBLE;若交换标志位为1,则BUBBLE SJMP$;停机 EN
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 原理 应用 汇编语言 程序设计
链接地址:https://www.31ppt.com/p-5937865.html