单片机及应用第四章单片机汇编语言程序设计讲稿.ppt
《单片机及应用第四章单片机汇编语言程序设计讲稿.ppt》由会员分享,可在线阅读,更多相关《单片机及应用第四章单片机汇编语言程序设计讲稿.ppt(70页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、单片机及应用第四章单片机汇编语言程序设计第一页,讲稿共七十页哦4.1 单片机程序设计语言概述单片机程序设计语言概述4.1.1 机器语言和汇编语言机器语言和汇编语言1 1、机器语言、机器语言:直接用二进制代码指令表达的计算:直接用二进制代码指令表达的计算机语言。计算机可以直接识别,不需要进行任机语言。计算机可以直接识别,不需要进行任何翻译。每台机器的指令,其格式和代码所代何翻译。每台机器的指令,其格式和代码所代表的含义都是硬性规定的表的含义都是硬性规定的。机器语言是其它各。机器语言是其它各种程序设计语言的基础,但难记、难用、已出种程序设计语言的基础,但难记、难用、已出错。错。第二页,讲稿共七十页
2、哦4.1.1 机器语言和汇编语言机器语言和汇编语言2 2、汇编语言:用助记符和专门的语言规则表示指令的功能和特征、汇编语言:用助记符和专门的语言规则表示指令的功能和特征的面向机器的程序设计语言。的面向机器的程序设计语言。汇编语言是对机器语言的改进汇编语言是对机器语言的改进,比机器语言高级。汇编语言的最大优点是助记符与机器指,比机器语言高级。汇编语言的最大优点是助记符与机器指令一一对应。用汇编语言编写的程序占用存储空间小,运行令一一对应。用汇编语言编写的程序占用存储空间小,运行速度快,程序效率高。此外,汇编语言能直接管理和控制硬速度快,程序效率高。此外,汇编语言能直接管理和控制硬件资源。件资源。
3、n缺点:比高级语言难记忆和使用,程序设计的技巧性缺点:比高级语言难记忆和使用,程序设计的技巧性较高,编程难度较大。要求使用者必须精通单片机的硬较高,编程难度较大。要求使用者必须精通单片机的硬件系统和指令系统。缺乏通用性,程序不易移植。件系统和指令系统。缺乏通用性,程序不易移植。第三页,讲稿共七十页哦4.1.2 单片机使用的高级语言单片机使用的高级语言n对于对于8051单片机,现有单片机,现有4种语言支持,即汇编、种语言支持,即汇编、PL/M、C和和BASIC。nC语言应用广泛语言应用广泛移植性好;移植性好;开发效率高。开发效率高。1.keil c51n高级语言的不足:高级语言的不足:生成的目标
4、代码较长生成的目标代码较长;1.程序运行速度较慢。程序运行速度较慢。第四页,讲稿共七十页哦4.1.3 80C51 单片机汇编语言的语句格式单片机汇编语言的语句格式80C5180C51汇编语言的语句格式如下:汇编语言的语句格式如下::;1.标号标号是语句地址的标志符号,标号的几点规定:是语句地址的标志符号,标号的几点规定:18个个ASCII字符组成,第一个字符必须是字母。字符组成,第一个字符必须是字母。不能使用本汇编语言已经定义的符号作为标号。不能使用本汇编语言已经定义的符号作为标号。标号后面必须跟以冒号标号后面必须跟以冒号“:”。同一标号在一个程序中只能定义一次。同一标号在一个程序中只能定义一
5、次。标号可有可无。标号可有可无。第五页,讲稿共七十页哦4.1.3 80C51 单片机汇编语言的语句格式单片机汇编语言的语句格式2.操作码操作码用于规定语句执行的操作内容,用指令助记符表示用于规定语句执行的操作内容,用指令助记符表示。不能空缺。不能空缺。3.操作数操作数 操作数用于为指令操作提供数据。可能有操作数用于为指令操作提供数据。可能有03个操作数,各个操作数,各操作数之间以逗号分隔。操作数之间以逗号分隔。第六页,讲稿共七十页哦4.注释注释不属于语句的功能部分,只是对语句的解释说明,不属于语句的功能部分,只是对语句的解释说明,以以“;”开头。开头。4.1.3 80C51 单片机汇编语言的语
6、句格式单片机汇编语言的语句格式5.分界符(分隔符)分界符(分隔符)用于把语句中的各部分隔开,以便于区分。分界符用于把语句中的各部分隔开,以便于区分。分界符包括空格、冒号、分号或逗号等符号。包括空格、冒号、分号或逗号等符号。第七页,讲稿共七十页哦4.2 汇编语言程序的基本结构形式汇编语言程序的基本结构形式n四种基本结构形式:顺序程序结构、分支程四种基本结构形式:顺序程序结构、分支程序结构、循环程序结构、子程序。序结构、循环程序结构、子程序。4.2.1 顺序程序结构顺序程序结构顺序结构程序是最简单的程序结构。程序既无分顺序结构程序是最简单的程序结构。程序既无分支、循环,也不调用子程序,程序执行时一
7、条接支、循环,也不调用子程序,程序执行时一条接一条地按顺序执行指令。一条地按顺序执行指令。第八页,讲稿共七十页哦例例1 3字节无符号数的加法运算。其中被加数在字节无符号数的加法运算。其中被加数在内部内部RAM的的50H、51H和和52H单元中;加数在单元中;加数在内部内部RAM的的53H、54H和和55H单元中;要求把单元中;要求把相加之和存放在相加之和存放在50H、51H和和52H单元中,进单元中,进位存放在位寻址区的位存放在位寻址区的20H位中。位中。4.2.1 顺序程序结构顺序程序结构我们一起来编写程序。我们一起来编写程序。第九页,讲稿共七十页哦MOV R0,#52H;被加数的低字节地址
8、被加数的低字节地址MOV R1,#55H;加数的低字节地址加数的低字节地址MOV A,R0ADD A,R1 ;低字节相加低字节相加MOV R0,A ;存低字节相加结果存低字节相加结果DEC R0DEC R1MOV A,R0ADDC A,R1;中间字节带进位相加中间字节带进位相加MOV R0,A ;存中间字节相加结果存中间字节相加结果DEC R0DEC R1MOV A,R0ADDC A,R1;高字节带进位相加高字节带进位相加MOV R0,A ;存高字节相加结果存高字节相加结果MOV 20H,C;存放进位的单元地址存放进位的单元地址4.2.1 顺序程序结构顺序程序结构第十页,讲稿共七十页哦分支结构
9、也称为选择结构。要分支,就要用条件或变址寻址转移分支结构也称为选择结构。要分支,就要用条件或变址寻址转移指令,就要有地址标号。分支结构又可分为单分支结构和多分支结构指令,就要有地址标号。分支结构又可分为单分支结构和多分支结构。4.2.2 分支程序结构分支程序结构1.1.单分支程序结构单分支程序结构 单分支程序结构即二中选一,通过条件判断实现,条件成立一单分支程序结构即二中选一,通过条件判断实现,条件成立一支,条件不成立一支。支,条件不成立一支。例例2 假定在外部假定在外部RAM中有中有ST1、ST2和和ST3三个连续单元,其中三个连续单元,其中ST1和和ST2单元中存放着两个无符号二进制数,试
10、找出其中的大数并存入单元中存放着两个无符号二进制数,试找出其中的大数并存入ST3单单元中。元中。第十一页,讲稿共七十页哦1.单分支程序结构单分支程序结构4.2.2 分支程序结构分支程序结构 MOV DPTR,#ST1;设置数据指针设置数据指针 MOVX A,DPTR;取第取第1个数个数 MOV R2,A;第第1个数存于个数存于R2 INC DPTR;数据指针加数据指针加1 MOVX A,DPTR;取第取第2个数个数 CLR C;进位位清进位位清0 CJNE A,R2,NEXT;两数比较两数比较 JNC BIGER;若第若第2个数不小,则转向个数不小,则转向BIGER XCH A,R2;若第若第
11、1个数大,则整字节交换个数大,则整字节交换BIGER:INC DPTR MOVX DPTR,A;存大数存大数第十二页,讲稿共七十页哦1.单分支程序结构单分支程序结构 例例3 假定采集的温度值假定采集的温度值Ta放在累加器放在累加器A中。此外中。此外,在内部,在内部RAM 54H单元存放温度下限值单元存放温度下限值T54,在,在55H单元存放温度上限值单元存放温度上限值T55。若。若TaT55,程序转程序转向向JW(降温处理程序降温处理程序);若;若TaT54,则程序转向,则程序转向SW(升温处理程序升温处理程序);若;若T55TaT54,则程序转向,则程序转向FH(返回主程序返回主程序)。4.
12、2.2 分支程序结构分支程序结构第十三页,讲稿共七十页哦1.单分支程序结构单分支程序结构TC:CJNE A,55H,LOOP1 ;若若TaT55,则转向则转向LOOP1 AJMP FH;若若TaT55,则返回则返回LOOP1:JNC JW ;若若(CY)0,表明表明TaT55,转降温处理程序转降温处理程序 CJNE A,54H,LOOP2;若若TaT54,则转向则转向LOOP2 AJMP FH;若若TaT54,则返回则返回LOOP2:JC SW ;若若(CY)1,表明表明TaT54,转升温处理程序转升温处理程序FH:RET;若若T55TaT54,则返回主程序则返回主程序4.2.2 分支程序结构
13、分支程序结构该例为多重该例为多重单分支结构单分支结构,通过一系列条件判断,进行逐级分支。多,通过一系列条件判断,进行逐级分支。多重单分支结构多使用数值比较转移指令重单分支结构多使用数值比较转移指令CJNE实现。实现。第十四页,讲稿共七十页哦2.多分支程序结构多分支程序结构 4.2.2 分支程序结构分支程序结构第十五页,讲稿共七十页哦2.多分支程序结构多分支程序结构与多重单分支结构的不同:与多重单分支结构的不同:n多重单分支结构在不同的区域做不同的事情;多分多重单分支结构在不同的区域做不同的事情;多分支结构在不同的点上做不同的事情。支结构在不同的点上做不同的事情。n多分支结构多用变址寻址转移指令
14、多分支结构多用变址寻址转移指令“JMP A+DPTR”实现,且需要有数据表格配合;多重实现,且需要有数据表格配合;多重单分支结构多使用数据比较转移指令单分支结构多使用数据比较转移指令CJNE实现。实现。4.2.2 分支程序结构分支程序结构第十六页,讲稿共七十页哦(1)通过地址偏移表实现程序多分支)通过地址偏移表实现程序多分支设分支序号存放在片内设分支序号存放在片内RAM ADDRi单元中,示例程序如下:单元中,示例程序如下:MOV A,ADDRi;分支序号分支序号i送送AMOV DPTR,#BRTAB;地址表首址送地址表首址送DPTRMOVC A,A+DPTR;取偏移量取偏移量JMP A+DP
15、TR;转相应分支转相应分支BRTAB:DB BR0-BRTAB;地址偏移表地址偏移表DB BR1-BRTABDB BRn-BRTABBR0:;分支程序;分支程序BR1:BRn:4.2.2 分支程序结构分支程序结构 2.多分支程序结构多分支程序结构第十七页,讲稿共七十页哦(2)通过转移指令表实现程序多分支)通过转移指令表实现程序多分支MOV A,ADDRiRL A;分支序号值乘以分支序号值乘以2MOV DPTR,#BRTAB;转移指令表首址转移指令表首址JMP A+DPTRBRTAB:AJMP BR0;转分支程序转分支程序0AJMP BR1;转分支程序转分支程序1 AJMP BR127;转分支程
16、序转分支程序1274.2.2 分支程序结构分支程序结构 2.多分支程序结构多分支程序结构第十八页,讲稿共七十页哦(3)其他实现程序多分支的方法)其他实现程序多分支的方法例例4用用RET指令实现多分支程序指令实现多分支程序MOV DPTR,#BRTAB;分支入口地址表首址分支入口地址表首址MOV A,ADDRiRL A;分支转移值乘以分支转移值乘以2MOV R1,A;暂存到暂存到R1INC AMOVC A,A+DPTR;取低位地址取低位地址PUSH ACC;低位地址入栈低位地址入栈MOV A,R1;恢复恢复A值值MOVC A,A+DPTR;取高位地址取高位地址PUSH ACC;高位地址入栈高位地
17、址入栈RET;分支入口地址装入分支入口地址装入PCBRTAB:DW BR0;分支程序入口地址表分支程序入口地址表DW BR1 DW BR1274.2.2 分支程序结构分支程序结构 2.多分支程序结构多分支程序结构第十九页,讲稿共七十页哦4.2.3 循环程序结构循环程序结构循环就是重复执行某个程序段。汇编语言通常使用减循环就是重复执行某个程序段。汇编语言通常使用减1条件转移条件转移指令来实现和控制循环。指令来实现和控制循环。4.2 汇编语言程序的基本结构形式汇编语言程序的基本结构形式前章例前章例18 将内部将内部RAM从从DATA单元开始的单元开始的10个无符号数相加,相个无符号数相加,相加结果
18、送加结果送SUM单元保存。单元保存。MOV R0,#0AH ;设置循环次数;设置循环次数 MOV R1,#DATA ;R1作地址指针,指向数据块首地址作地址指针,指向数据块首地址 CLR A ;A清零清零LOOP:ADD A,R1 ;加一个数;加一个数 INC R1 ;修改指针,指向下一个数;修改指针,指向下一个数 DJNZ R0,LOOP ;R0减减1,不为,不为0循环循环 MOV SUM,A ;存;存10个数相加的和个数相加的和第二十页,讲稿共七十页哦4.2.3 循环程序结构循环程序结构n循环程序由初始化和循环体两部分组成。循环程序由初始化和循环体两部分组成。初始化:指针、计数器和累加器等
19、初始化:指针、计数器和累加器等循环体是循环程序的主体,是反复执行的动作。循环体是循环程序的主体,是反复执行的动作。例例5 通过查找结束标志(回车符)来统计字符串长度的循环通过查找结束标志(回车符)来统计字符串长度的循环程序。程序。分析:假定字符串存放在内部分析:假定字符串存放在内部RAM从从40H单元开始的连续存储单元开始的连续存储单元中。为找到结束标志,应采用逐个字符依次与回车符(单元中。为找到结束标志,应采用逐个字符依次与回车符(ASCII码码0DH)比较的方法。同时在程序中还应设置一个字符串指针以顺)比较的方法。同时在程序中还应设置一个字符串指针以顺序定位字符,设置一个字符长度计数器以累
20、计字符个数。序定位字符,设置一个字符长度计数器以累计字符个数。第二十一页,讲稿共七十页哦 MOV R2,#0FFH;设置长度计数器初值设置长度计数器初值 MOV R0,#3FH ;设置字符串指针初值设置字符串指针初值LOOP:INC R2 INC R0 CJNE R0,#0DH,LOOP4.2.3 循环程序结构循环程序结构第二十二页,讲稿共七十页哦例例6 多字节无符号数相加。多字节无符号数相加。4.2.3 循环程序结构循环程序结构分析:设被加数与加数分别在分析:设被加数与加数分别在以以ADR1与与ADR2为初址的片为初址的片内数据存储器区域中内数据存储器区域中,自低自低字节起字节起,由低到高依
21、次存放;由低到高依次存放;它们的字节数为它们的字节数为L,要求加得,要求加得的和放回被加数的单元。流程的和放回被加数的单元。流程框图如右。框图如右。第二十三页,讲稿共七十页哦 MOV R0,#ADR1 MOV R1,#ADR2 MOV R2,#L CLR CLOOP:MOV A,R0;通过;通过R0间址,取得被加数的一个字节间址,取得被加数的一个字节 ADDC A,R1;通过;通过R1间址,取得加数的一个字间址,取得加数的一个字 ;节,与被加数的相应字节相加;节,与被加数的相应字节相加 MOV R0,A;加得的和通过;加得的和通过R0间址放回原被加数单元间址放回原被加数单元INC R0 ;修改
22、指针,指向下一个相加的数;修改指针,指向下一个相加的数INC R1DJNZ R2,LOOP;循环实现多字节数相加;循环实现多字节数相加4.2.3 循环程序结构循环程序结构第二十四页,讲稿共七十页哦4.2.4 子程序结构子程序结构4.2 汇编语言程序的基本结构形式汇编语言程序的基本结构形式前章例前章例3“用查表法把累加器中的十六进指数转用查表法把累加器中的十六进指数转换为换为ASCII码的程序码的程序”也是按子程序设计的。也是按子程序设计的。HBA:INC AMOVC A,A+PCRET;十六进制数十六进制数ASCII码表码表DB 30H,31H,39H,41H,42H,46H第二十五页,讲稿共
23、七十页哦4.2.4 子程序结构子程序结构n子程序的组成:子程序的组成:n程序名:就是标号,位于第一条可执行指令前。主程序以该程序名:就是标号,位于第一条可执行指令前。主程序以该名调用它。名调用它。n程序体:规定要做的事情。程序体:规定要做的事情。n返回语句返回语句RET。1.参数:在结构上看不出来,也可以没有。通过参数传送参数:在结构上看不出来,也可以没有。通过参数传送信息。参数可通过寄存器、存储单元或堆栈传送。信息。参数可通过寄存器、存储单元或堆栈传送。第二十六页,讲稿共七十页哦4.3 80C51 单片机汇编语言程序设计举例单片机汇编语言程序设计举例4.3.1 算术运算程序算术运算程序1.加
24、减法运算加减法运算(1)多个不带符号的单字节数相加)多个不带符号的单字节数相加例例 假设有多个单字节数,依次存放在外部假设有多个单字节数,依次存放在外部RAM 21H开始开始的连续单元中的连续单元中,要求把计算结果存放在要求把计算结果存放在R1和和R2中中(假定相加的和不假定相加的和不超过超过2字节数)。其中字节数)。其中R1为高位字节。为高位字节。第二十七页,讲稿共七十页哦MOV DPTR,#21H;设置数据指针设置数据指针MOV R3,#N;字节个数字节个数MOV R1,#00H;和的高位字节清和的高位字节清0MOV R2,#00H;和的低位字节清和的低位字节清0LOOP:MOVX A,D
25、PTR;取一个加数取一个加数ADD A,R2;单字节数相加单字节数相加MOV R2,A;和的低和的低8位送位送R2JNC LOOP1INC R1 ;有进位,则和的高有进位,则和的高8位加位加1LOOP1:INC R0 ;指向下一个单元指向下一个单元DJNZ R3,LOOP第二十八页,讲稿共七十页哦 4.3.1 算术运算程序算术运算程序 1.加减法运算加减法运算(2)两个不带符号的多字节数相减)两个不带符号的多字节数相减例例 设有两个设有两个N字节数分别存放在内部字节数分别存放在内部RAM单元中,低单元中,低字节在前,高字节在后,分别由字节在前,高字节在后,分别由R0指定被减数单元地址指定被减数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 应用 第四 汇编语言 程序设计 讲稿
限制150内