单片机原理及应用第2版 教学课件 ppt 作者 陈立周 编 第3章

上传人:E**** 文档编号:89499898 上传时间:2019-05-25 格式:PPT 页数:34 大小:1.34MB
返回 下载 相关 举报
单片机原理及应用第2版 教学课件 ppt 作者 陈立周 编 第3章_第1页
第1页 / 共34页
单片机原理及应用第2版 教学课件 ppt 作者 陈立周 编 第3章_第2页
第2页 / 共34页
单片机原理及应用第2版 教学课件 ppt 作者 陈立周 编 第3章_第3页
第3页 / 共34页
单片机原理及应用第2版 教学课件 ppt 作者 陈立周 编 第3章_第4页
第4页 / 共34页
单片机原理及应用第2版 教学课件 ppt 作者 陈立周 编 第3章_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《单片机原理及应用第2版 教学课件 ppt 作者 陈立周 编 第3章》由会员分享,可在线阅读,更多相关《单片机原理及应用第2版 教学课件 ppt 作者 陈立周 编 第3章(34页珍藏版)》请在金锄头文库上搜索。

1、第三章 汇编语言程序设计,第一节 汇编语言程序的格式 第二节 伪指令 第三节 汇编语言程序的编写步骤及基本结构 第四节 程序设计举例,本章要点,本章介绍 汇编语言程序的书写格式、程序的基本结构以及程序的编写步骤。通过一些具体范例,掌握并熟悉各种指令的使用条件,指令的灵活运用以及编写程序的方法与技巧。,第一节 汇编语言程序的格式,汇编语言编写的程序由语句组成,每一语句占一行填写一条指令。每行分4段,分别为标号、操作码、操作数和注释。 ORG 2000H ADDR: MOV A,00H ;累加器清零 MOV 41H,A ;41H、42H清零 MOV 42H,A MOV R2,0AH ;设定累加次数

2、 MOV R1,30H ;设定数据首地址 LOOP:MOV A,R1 ;取数 ADD A,41H ;累加到41H JNC NEXT ;是否有进位 INC 42H ;有进位42H加1 NEXT: MOV 41H,A ;将和存入41H INC R1 DJNZ R2,LOOP LJMP $ END,标号:代表该行指 令所在的地址,结 尾应加一冒号,操作码:助记符或伪指令的符号。,操作数:操作所需要的数据或数据的存储位置来源,注释:对语句的说明,也可不加注释,返回本章首页,第二节 伪指令,伪指令不执行任何操作,汇编时也不生成目标程序。它仅仅提供对汇编的要求。汇编成机器语言后,伪指令就不存在了。以下为常

3、用的伪指令: ORG(Origin)::指明汇编起始点地址。 END:指明源程序至此结束。 EQU(Epual):赋值伪指令,可对地址标号进行赋值。 DB(Define Byte):定义从指定标号地址开始所存放的字节数据,多字节时各字节间用逗号隔开。 DW(Define Word):定义从指定的标号地址开始,所存放的字数据。跟DB一样,输入几个字时各字间要用逗号隔开。 DS(Define Storage) :定义存储区,表示从标号所指的存储单元开始,保留的内存单元数量,以供程序使用。,返回本章首页,第三节 汇编语言程序的编写步骤及基本结构,汇编语言程序基本结构有三种 顺序结构 分支结构 循环结

4、构 一、顺序结构 顺序结构是指程序按指令顺序逐条执行的一种结构。也是程序结构中最简单的一种结构。,顺序结构的程序举例 例3-1 将地址为2000H 、2001H、2002H的片外数据存储单元的内容,分别传送到2002H、2003H、2004H存储单元中去。 ADD0 EQU 2000H ADD1 EQU 2001H ADD2 EQU 2002H ADD3 EQU 2003H ADD4 EQU 2004H ORG 0000H LJMP 1000H ORG 1000H MOV DPTR,ADD2 MOVX A,DPTR MOV DPTR,ADD4 MOVX DPTR,A MOV DPTR,ADD1

5、 MOVX A,DPTR MOV DPTR,ADD3,MOVX DPTR,A MOV DPTR,ADD0 MOVX A,DPTR MOV DPTR,ADD2 MOVX DPTR,A SJMP $,二、分支结构 指程序中具有转移指令,可根据转移条件决定是转移还是继续执行下一条指令。,几种分支结构程序的框图,分支结构的程序举例 例3-2 有甲乙两数存于41H和42H存储单元,运算符号的ASCII码存于40H单元,编写一根据40H的符号,对甲乙两数进行相应运算的程序;井将运算结果存于43H单元。 ORG 0000H LJMP 0100H ORG 0100H MOV 44H,00H MOV A,40H

6、 CJNE A,#2BH,MINUS PLUS: MOV A,41H ADD A,42H MOV 43H,A SJMP CLOSE,MINUS:CJNE A,#2DH,ERR CLR C MOV A,41H SUBB A,42H MOV 43H,A SJMP CLOSE ERR:MOV 43H,#0FFH CLOSE:SJMP $ ;2DH若不是存+、-号,可使43H置FFH,三、循环结构 循环结构由四个环节组成。 1.初始化部分:对循环体中参加操作的有关参数、地址等赋以初始值,并指定循环结束条件。 2.循环体部分:指每次循环都需要重复执行的程序段。 3.修改初始值:每次循环结束都要对初始值进

7、行修改,特别是判断结束条件的参数,每经一次循环后都要作相应的修改,以便决定是否结束循环。 4.结束判断部分:检查结束条件是否满足,若条件满足停止循环,否则返回继续执行循环体。,循环结构框图 图中每执行一次循环体后,都要检查结束条件是否满足,若条件满足停止循环,否则返回继续执行循环体。 右边两图区别为,左图是先执行循环体,然后再判断结束条件,右图是先判断结束条件,如果满足结束条件,就不再执行循环体,直接退出循环 。,循环结构的程序举例 例3-3 有一组数据,存放在30H为首地址的内存单元,数据长度为32个。试将每一个数分别取出加1,再存人以40H为首地址的内存单元。,ORG 0000H 0000

8、 020100 LJMP 0100H 0100 ORG 0100H 0100 784F MOV R0,#4FH 0102 795F MOV R1,#5FH 0104 7F20 MOV R7,#20H 0106 E6 LOOP: MOV A,R0 0107 04 INC A 0108 F7 MOV R1,A 0109 18 DEC R0 010A 19 DEC R1 010B DFF9 DJNZ R7,LOOP 010D 80FE SJMP $ END,循环结构程序举例 例3-4 编制一延时子程序,使执行这一段程序延时2s。 0100 7D64 MOV R5,#64 0102 7E64 LOOP

9、1: MOV R6,#64 0104,7F62 LOOP2: MOV R7,#62 0106 DFFE LOOP3: DJNZ R7,LOOP3 0108 DEFA DJNZ R6,LOOP2 010A DDF6 DJNZ R5,LOOPl 010C 22 RET 以上程序执行的时间近似为2秒,如要准确计算还需考虑执行对R5、R6、R7的赋值指令所需的时间、RET返回指令的时间等等。,返回本章首页,第四节 程序设计举例,一、多字节加法程序 例3-5 两个10字节数,分别从存储单元0801H、和0901H开始存放,先存低字节后存高字节,求其和并存于乙数原来所在的单元。,多字节加法的程序 0100

10、 ORG 0100H 0100 900801 MOV DPTR,#0801H ;甲数据地址 0103 75A009 MOV P2,#09H ;乙数据地址高字节 0106 7901 MOV R1,#01H ;乙数据地址低字节 0108 7F0A MOV R7,#0AH ;数据字节数 010A C3 CLR C 010B E0 LOOP: MOVX A,DPTR ;取甲数 010C FC MOV R4,A ;暂存R4 010D E3 MOVX A,R1 ;取乙数 010E 3C ADDC A,R4 ;两数相加并加上一次进位位 010F F3 MOVX R1,A ;和存于原乙数的地址 0110 09

11、 INC R1 ;修改地址指针 0111 A3 INC DPTR 0112 DFF7 DJNZ R7,LOOP ;继续相加 0114 E4 CLR A 0115 3400 ADDC A,#00H 0117 F3 MOVX R1,A ;存最高字节进位位 0118 80FE SJMP $ ;结束,二、数制变换 在应用程序中常常需要对数制进行变换,为方便起见可预先把各种变换编成子程序,需要时只要用一条调用指令即可完成,例如将十六进制数转换为BCD码、十进制数转换为ASCII码等等。 例3-6 将30H中的十六进制数转换为BCD码,并存于40H、41H。 主程序:入口条件为待转换的十六进制数存R1 0

12、100 ORG 0100H 0100 A930 MOV R1,30H 0102 122000 LCALL SUB 0105 8A40 MOV 40H,R2 0107 8B41 MOV 41H,R3 0109 80FE SJMP $ END,子程序:出口条件为转换所得BCD码存R2、R3 ORG 2000H 2000 E9 SUB: MOV A,R1 ;取十六进制数 2001 75F064 MOV B,#64H 2004 84 DIV AB ;除以100 2005 FA MOV R2,A ;商为百位数存R2 2006 740A MOV A,#0AH 2008 C5F0 XCH A,B ;除100

13、余数作为下 一次的被除数 200A 84 DIV AB ;余数再除以10 200B C4 SWAP A 200C 45F0 ORL A,B ;十位个位合并 200E FB MOV R3,A ;十位个位合并存R3 200F 22 RET,三、求最大值或最小值 1.无符号数求最大值与最小值 例3-7 在以2042H为首地址的存储单元中,连续存放一组单字节无符号数,数据个数存于2041H单元,从中找出最大数并存于2040H。,无符号数求最大值或最小值的程序 0100 ORG 0100H 0100 902041 MOV DPTR,#2041H 0103 E0 MOVX A,DPTR 0104 FF M

14、OV R7,A 0105 753000 MOV 30H,#00H 0107 A3 LOOP:INC DPTR 0108 E0 MOVX A,DPIR 0109 B53002 CJNE A,30H,HERE 010C 8004 SJMP TOSMA 010E 4002 HERE:JC TOSMA 0110 F530 MOV 30H,A ;大于30H取代原有值 0112 DFF3 TOSMA:DJNZ R7,LOOP ;小于30H,继续比较 0114 902040 MOV DPTR,#2040H 0117 E530 MOV A,30H 0119 F0 MOVX DPTR,A 011A 80FE S

15、JMP $ END,2.带符号数求最大值或最小值 例3-8 组单字节带符号数据存放在以2042H为首地址的连续单元中,数据长度存放在2041H单元,找出的最大值存于2040H单元。,带符号数求最大值与最小值的程序 0100 ORG 0100H 0100 90204l MOV DPTR,#2041H 0103 EO MOVX A,DPTR 0104 FF MOV R7,A 0105 7900 MOV R1,#80H ;存最小值-128 0107 A3 LOOP: INC DPTR 0108 E0 MOVX A,DPIR 0109 FA MOV R2,A 010A C3 CLR C 010B 99

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

当前位置:首页 > 高等教育 > 大学课件

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