80C51单片机汇编语言程序设计PPT

上传人:W**** 文档编号:147905105 上传时间:2020-10-14 格式:PPT 页数:74 大小:529.50KB
返回 下载 相关 举报
80C51单片机汇编语言程序设计PPT_第1页
第1页 / 共74页
80C51单片机汇编语言程序设计PPT_第2页
第2页 / 共74页
80C51单片机汇编语言程序设计PPT_第3页
第3页 / 共74页
80C51单片机汇编语言程序设计PPT_第4页
第4页 / 共74页
80C51单片机汇编语言程序设计PPT_第5页
第5页 / 共74页
点击查看更多>>
资源描述

《80C51单片机汇编语言程序设计PPT》由会员分享,可在线阅读,更多相关《80C51单片机汇编语言程序设计PPT(74页珍藏版)》请在金锄头文库上搜索。

1、1,第4章 80C51单片机汇编语言程序设计,4.1 单片机程序设计语言概述 4.2 汇编语言程序的基本结构形式 4.3 80C51 单片机汇编语言程序设计举例 4.4 单片机汇编语言源程序的编辑和汇编 4.5 80C51 单片机汇编语言伪指令,2,4.1 单片机程序设计语言概述,4.1.1 机器语言和汇编语言 1、机器语言 用二进制代码“0”和“1”表示指令和数据的程序设计语言,是计算机能直接识别并执行的指令。 优点:执行速度快、占用内存少。 缺点:识别难、记忆难。 2、汇编语言 用助记符和专门的语言规则表示指令的功能和特征。 优点:助记符与机器指令一一对应。比机器语言直观、 易懂、易记。非

2、常适合于实时控制的需要。 缺点:难以记忆和使用,程序设计的技巧性较高,编程 难度较大。要求使用者必须精通单片机的硬件系 统和指令系统。缺乏通用性,程序不易移植。,3,4.1.2 单片机使用的高级语言,对于8051单片机,现有4种语言支持,即汇编、PL/M、C和BASIC。 C语言最终得到广泛应用。 可以大大提高单片机应用系统研制的开发效率。移植性好。 高级语言的不足:生成的目标代码较长,导致应用程序运行速度较慢。,4,4.1.3 80C51 单片机汇编语言的语句格式,80C51汇编语言的语句格式如下: : ; 1. 标号 是语句地址的标志符号,标号的几点规定: 18个ASCII字符组成,第一个

3、字符必须是字母。 不能使用本汇编语言已经定义的符号作为标号。 标号后面必须跟以冒号“:”。 同一标号在一个程序中只能定义一次。 标号可有可无。,错误的标号 正确的标号 1BT : BT1 BEGIN BEGIN : TA+TB: TATB: ADD: ADD1:,5,2. 操作码 用于规定语句执行的操作内容,用指令助记符表示。不能空缺。 3. 操作数 操作数用于为指令操作提供数据。可以是空白,也可 能有13个操作数,各操作数之间以逗号分隔。 4. 注释 不属于语句的功能部分,只是对语句的解释说明,以 “;”开头。 5. 分界符(分隔符) 用于把语句中的各部分隔开,以便于区分。分界符包 括空格、

4、冒号、分号或逗号等符号。,6,4.2 汇编语言程序的基本结构形式,三种基本结构形式:顺序程序结构,分支程序结构, 循环程序结构。 4.2.1 顺序程序结构 顺序结构程序是最简单的程序结构。程序既无分支、循环,也不调用子程序,程序执行时一条接一条地按顺序执行指令。,7,(1)分析任务 (2)确定算法 (3)画流程图 (4)编写程序 (5)上机调试,2、程序设计的一般步骤,当接到程序设计的任务后,首先对任务进行详尽的分析,搞清楚已知的数据和想要得到的结果,程序应该完成何种的功能。明确在程序设计时应该 “做什么” 。,根据实际问题的要求和指令系统的特点,确定解决问题的具体步骤。根据任务要求,对不同的

5、计算方法进行比较,选择最适宜的算法。解决“怎样做”的问题。,将解决问题的具体步骤用一种约定的几何图形、指向线和必要的文字说明描述出来,用图形的方法描绘解决问题的思路。,用指令的形式将程序流程图实现出来。,查错、改错,对程序进行优化。,8,(1)分析任务 (2)确定算法 (3)画流程图 (4)编写程序 (5)上机调试,例:3字节无符号数相加:其中被加数在内部RAM的50H、 51H和52H单元中;加数在内部RAM的53H、54H和55H单元 中;要求把相加之和存放在50H、51H和52H单元中,进位存 放在位寻址区的20H位中。,9,MOV R0, #52H;被加数的低字节地址 MOV R1,

6、#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 ;存高字节相加结果 CLR A ADDC A, #00H;进位送00H位保存 MOV R0, #20H;存放进位的单元地址 MOV R0, A,10,分支结构也称为选择结构。为分支需要,程序设计时 应给程序段的起始地址赋予一个地址标号,以

7、供选择分支 使用。分支结构又可分为单分支结构和多分支结构。 1. 单分支程序结构 单分支程序结构即二中选一,是通过条件判断实现 的。一般都使用条件转移指令对程序的执行结果进行判 断。 可实现单分支转移的指令有:JZ、JNZ、CJNE和 DJNZ。位状态转移指令:JC、JNC、JB、JNB和JBC 等。,4.2.2 分支程序结构,11,(1)单分支结构举例 假定在外部RAM中有ST1、ST2和ST3共3个连续单元,其中ST1和ST2单元中存放着两个无符号二进制数,要求找出其中的大数并存入ST3单元中。,解:(1)分析任务:比较两个数的大小 (2)算法:算术运算、控制转移 (3)程序结构:单分支

8、(4)数据类型:单字节、二进制、无符号数 (5)数据结构:单元地址升序排列 (6)RAM单元安排:外部RAM单元 (7)采用寄存器间接寻址方式(R0、R1或DPTR) (8)程序设计流程框图; (9)程序清单;,12,13,START: CLR C;进位位清0 MOV DPTR,#ST1;设置数据指针 MOVX A,DPTR;取第1个数 MOV R2, A;第1个数存于R2 INC DPTR;数据指针加1 MOVX A, DPTR;取第2个数 SUBB A, R2;两数比较 JNC BIG1;若第2个数大,则转向BIG1 XCH A, R2;若第1个数大,则整字节交换 BIG0: INC DP

9、TR MOVX DPTR, A;存大数 RET BIG1: MOVX A, DPTR SJMP BIG0,上例中,如果采用CJNE A, direct,rel指令,应如何修改程序?,14,(2)多重单分支结构举例 多重单分支结构中,通过一系列条件判断,进行逐级分支。为此可使用比较转移指令CJNE实现。,15,CJNE A, 55H, LOOP1;若TaT55,则转向LOOP1 AJMP FH ;若TaT55,则返回 LOOP1:JNC JW ;若(CY)0,表明TaT55,转降温处理程序 CJNE A, 54H, LOOP2 ;若TaT54,则转向LOOP2 AJMP FH ;若TaT54,则

10、返回 LOOP2:JC SW;若(CY)1,表明TaT54,转升温处理程序 FH:RET;若T55TaT54,则返回主程序,例:假定采集的温度值Ta放在累加器A中。此外,在内部RAM 54H单元存放温度下限值T54,在55H单元存放温度上限值T55。若TaT55,程序转向JW(降温处理程序);若TaT54,则程序转向SW(升温处理程序);若T55TaT54,则程序转向FH(返回主程序)。,16,解:(1)分析任务:解方程 (2)算法:控制转移 (3)程序结构:多分支 (4)数据类型:单字节、二进制、有符号数 (5)RAM单元安排:外部RAM单元 (6)采用寄存器间接寻址方式(R0、R1或DPT

11、R) (7)程序设计流程框图 (8)程序清单;,例:已知:127X-128,求Y。设X,Y分别存放在外部RAM 1000H和2000H单元中。,17,返回,18,XAD EQU 1000H; BUF EQU 2000H; ORG 1000H START:MOV DPTR, #XAD ;数据X的地址送数据指针DPTR MOVX A, DPTR; A取数据X JZ SAV; X0转SAV JB ACC.7, NEG; X0转NEG,否则,X0 MOV A, #01H; SJMP SAV; NEG: MOV A, #0FFH; (0FFH为-1补码) SAV: MOV DPTR, #BUF; 数据Y

12、的地址送数据指针DPTR MOVX DPTR, A; 保存Y值 END,上例中,如果采用CJNE指令,应如何修改程序?,19,XAD EQU 1000H; BUF EQU 2000H; ORG 1000H START:MOV DPTR, #XAD ;数据X的地址送数据指针DPTR MOVX A, DPTR; A取数据X CJNE A, #0, ANZ ; X0转ANZ SJMP SAV; ANZ: JC NEG ;X0 MOV A, #01H; SJMP SAV; NEG: MOV A, #0FFH; (0FFH为-1补码) SAV: MOV DPTR, #BUF; 数据Y的地址送数据指针DP

13、TR MOVX DPTR, A; 保存Y值 END,20,2. 多分支程序结构 多分支程序结构流程中具有两个以上条件可供选择。可 供使用的是变址寻址转移指令“JMP A+DPTR”,但使 用该指令实现多分支转移时,需要有数据表格配合。 多分支程序结构,21,(1)通过数据表实现程序多分支,MOV A, n;分支序号送A MOV DPTR, #BRTAB;地址表首址 MOVC A, A+DPTR;查表 JMP A+DPTR;转移 BRTAB:DB BR0-BRTAB;地址表 DB BR1-BRTAB DB BRn-BRTAB BR0:分支程序 BR1: BRn:,22,(2)通过转移指令表实现程

14、序多分支,MOV A, n RL A ;分支序号值乘以2 MOV DPTR, #BRTAB;转移指令表首址 JMP A+DPTR BRTAB:AJMP BR0 ;转分支程序0 AJMP BR1 ;转分支程序1 AJMP BR127 ;转分支程序127 BR0: ;分支程序 BR1: BRn:,23,(3)其他实现程序多分支的方法,MOV DPTR, #BRTAB;分支入口地址表首址 MOV A, R0 RL A;分支转移值乘以2 MOV R1, A;暂存A值 INC A MOVC A, A+DPTR;取低位地址 PUSH ACC;低位地址入栈 MOV A, R1;恢复A值 MOVC A, A+

15、DPTR;取高位地址 PUSH ACC;高位地址入栈 RET;分支入口地址装入PC BRTAB:DW BR0;分支程序入口地址表 DW BR1 DW BR127,24,例:假设键盘上有4个按键,功能说明如下表: 分析任务 确定算法 程序流程框图,25,26,假设转移指令表名称为BRTAB,分支程序序号已在A 中。 MOV DPTR, #BRTAB CLR C RLC A JMP A+DPTR; ORG 3000H 3000H BRTAB:AJMP ER; 转删除分支程序 3001H 3002H AJMP DS; 转读数据分支程序 3003H 3004H AJMP XS; 转写数据分支程序 3005H 3006H AJMP CR; 转插入分支程序,ORG 3100H 3100H ER:; 删除分支程序 ORG 3200H 3200H DS:; 读数据分支程序 ORG 3300H 3300H XS:; 写数据分支程序 ORG 3400H 3400H CR:; 插入分支程序 END,27,(4)使用比较转移指令CJNE实现。,28,4.2.3 循环程序结构,循环结构是重复执行某个程序段。使用条件转移指令通 过条件判断来实现和控制循环。,循环程序一般由四个主要部分组成: (1)初始化部分:为循环程序做准备,如规定循环次数、给各变量和地址指针预置初值。 (2)处理部

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 总结/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号