《单片机原理及应用课件(陈林林)第4章--汇编语言程序设计基础2教程文件.ppt》由会员分享,可在线阅读,更多相关《单片机原理及应用课件(陈林林)第4章--汇编语言程序设计基础2教程文件.ppt(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、单片机原理及应用课件单片机原理及应用课件(陈林林陈林林)第第4 4章章-汇编语言汇编语言程序设计基础程序设计基础2 24.1 常用伪指令常用伪指令1.设置起始地址设置起始地址 ORG(Origin)指令格式:指令格式:ORG nnnn通常为通常为16位地址值,位地址值,也可以是已定义的标号。也可以是已定义的标号。2.汇编结束伪指令汇编结束伪指令 END指令格式:指令格式:END该指令的功能是结束汇编。该指令的功能是结束汇编。汇编程序遇到汇编程序遇到END伪指令后即结束汇编。伪指令后即结束汇编。处于处于END之后的程序,汇编程序将不作处之后的程序,汇编程序将不作处理。理。3.字节数据定义伪指令字
2、节数据定义伪指令 DB(Define Byte)指令指令格式:格式:标号:标号:DB 字节数据表字节数据表从某地址单元开始,在程序存储器中定义数据从某地址单元开始,在程序存储器中定义数据字节。字节。该指令将字节数据表中的数据根据从左到右的该指令将字节数据表中的数据根据从左到右的顺序依次存放在指定的存储单元中。一个数据顺序依次存放在指定的存储单元中。一个数据占一个存储单元。占一个存储单元。标号用于查表时确定表首址。标号用于查表时确定表首址。一条一条DB语句定义的数据字节个数没有限制,语句定义的数据字节个数没有限制,书写阅读方便即可,若字节太多,也可以分作书写阅读方便即可,若字节太多,也可以分作几
3、行。几行。4.字数据定义伪指令字数据定义伪指令 DW指令格式:指令格式:标号:标号:DW 字数据表字数据表从某一地址单元开始,在程序存储器中定义数从某一地址单元开始,在程序存储器中定义数据字。据字。该伪指令将字或字表中的数据根据从左到右的该伪指令将字或字表中的数据根据从左到右的顺序依次存放在指定的存储单元中。应特别注顺序依次存放在指定的存储单元中。应特别注意:意:16位的二进制数,高位的二进制数,高8位存放在低地址单位存放在低地址单元,低元,低8位存放在高地址单元。位存放在高地址单元。和和DB语句类似,标号用于查表时确定表首址,语句类似,标号用于查表时确定表首址,一条一条DW语句可以定义若干个
4、数据字,若要定语句可以定义若干个数据字,若要定义的字太多,最好分作几条义的字太多,最好分作几条DW语句。语句。5.赋值伪指令赋值伪指令 EQU指令格式:指令格式:符号名符号名 EQU 表达式表达式功能是将表达式的值或特定的某个汇编符号功能是将表达式的值或特定的某个汇编符号定义为一个指定的符号名。定义为一个指定的符号名。6.位地址符号定义伪指令位地址符号定义伪指令 BIT指令格式:指令格式:符号名符号名 BIT 位地址表达式位地址表达式 功能是将位地址赋给指定的符号名。功能是将位地址赋给指定的符号名。位地址表达式可以是绝对地址,也可以是符位地址表达式可以是绝对地址,也可以是符号地址。号地址。这条
5、伪指令的功能和作用与这条伪指令的功能和作用与EQU伪指令相似,伪指令相似,只是它针对位地址。只是它针对位地址。4.2 汇编语言程序基本结构汇编语言程序基本结构1.顺序结构顺序结构顺序结构是最简单、最基本的程序结构,顺序结构是最简单、最基本的程序结构,是指无分支、无循环结构的程序。是指无分支、无循环结构的程序。其执行流程是依指令在存储器中的存放顺其执行流程是依指令在存储器中的存放顺序进行的,或者说程序完全按照指令的编序进行的,或者说程序完全按照指令的编排顺序执行。排顺序执行。例:内部数据传输例:内部数据传输MOV A,2EHMOV 2EH,2DH MOV 2DH,2CH MOV 2CH,2BHM
6、OV 2BH,2AH2.分支结构分支结构分支程序结构可根据程序的要求,无条件或有分支程序结构可根据程序的要求,无条件或有条件地改变程序执行的顺序条件地改变程序执行的顺序根据分支的不同处理情况,又可分为单分支结根据分支的不同处理情况,又可分为单分支结构、双分支结构和多分支结构构、双分支结构和多分支结构 a.单分支b.双分支c.多分支例:编程实现将例:编程实现将DPTR内容减一内容减一 DEC DPLCJNE DPL,0FFH,NEXTDEC DPHNEXT:(DPL)1(DPL)(DPL)=FFH?(DPH)1(DPH)例例43 某测温系统测得温度某测温系统测得温度值存于片内数据存储值存于片内数
7、据存储器器30H单元,若温度单元,若温度高于高于60亮红灯,否亮红灯,否则亮绿灯。红灯由则亮绿灯。红灯由P1.0控制,绿灯由控制,绿灯由P1.1控制,高电平亮,控制,高电平亮,低电平灭。低电平灭。(30H)60够减?P1.0 输出“1”P1.1 输出“0”P1.0 输出“0”P1.1 输出“1”N3.循环结构循环结构按某种控制规律重复执行的程序称为循环程序。按某种控制规律重复执行的程序称为循环程序。循环程序有先判断后执行和先执行后判断两种基本结循环程序有先判断后执行和先执行后判断两种基本结构:第一种方法先判断是否满足循环条件,如不满足,构:第一种方法先判断是否满足循环条件,如不满足,就不循环,
8、多以就不循环,多以循环条件循环条件控制。第二种方法先执行一控制。第二种方法先执行一遍循环后,再判断下一轮还需不需要进行,多以遍循环后,再判断下一轮还需不需要进行,多以循环循环次数次数控制。控制。循环可以有单重循环和多重循环,在多重循环中,内循环可以有单重循环和多重循环,在多重循环中,内外循环外循环一般不能交叉一般不能交叉,也不能从外循环跳入内循环,也不能从外循环跳入内循环,否则逻辑将十分复杂。否则逻辑将十分复杂。例例 45 设计一个延时设计一个延时10ms的延时子程序,已的延时子程序,已知单片机使用的晶振为知单片机使用的晶振为6MHz。延时时间与晶振频率和循环次数两个因延时时间与晶振频率和循环
9、次数两个因素有关。由于晶振采用素有关。由于晶振采用6MHz,一个机器周,一个机器周期是期是2s,可以采用双重循环实现,可以采用双重循环实现10ms延时:延时:用内循环实现用内循环实现1ms延时,外循环延时,外循环10次即可达次即可达10ms延时。延时。ORG 1000H MOV R0,#0AH;外循环;外循环10次次DEL2:MOV R1,#7DH;内循环;内循环125次次DEL1:NOP NOP;空操作指令,延时;空操作指令,延时2sDJNZ R1,DEL1 DJNZ R0,DEL2 RET内循环时间:内循环时间:(1+1+2)2s7DH=1000s总的延时时间:总的延时时间:1+1+(1+
10、1+2)125+2102S =10062s=10.062ms4.子程序子程序对于在不同地方要多次使用相同程序段,可对于在不同地方要多次使用相同程序段,可以将其设计成通用的子程序供主程序反复调以将其设计成通用的子程序供主程序反复调用。用。子程序节省存储单元,使程序简短、清晰。子程序节省存储单元,使程序简短、清晰。但子程序要增加额外的调用和返回指令,多但子程序要增加额外的调用和返回指令,多数情况下还要进行现场保护和恢复,因此程数情况下还要进行现场保护和恢复,因此程序执行的时间会略有增加。序执行的时间会略有增加。时间和空间总是矛盾的时间和空间总是矛盾的4.3 编程举例编程举例 例例47:将两个半字节
11、数合并为一个一字节数。将两个半字节数合并为一个一字节数。将内部数据存储器将内部数据存储器 ADDR、ADDR+1单元中单元中数据的低半字节合并成一个字节,合并后数据的低半字节合并成一个字节,合并后ADDR单元低半字节作高半字节,结果存入单元低半字节作高半字节,结果存入RESU单元。单元。START:MOV R1,#ADDRMOV A,R1;取第;取第1个数个数ANL A,#0FH;只保留低半字节;只保留低半字节SWAPA;存入;存入A高半字节高半字节INCR1XCHDA,R1 ;第;第2个数与个数与A进行低半字节交换进行低半字节交换MOVRESU,ARETEND例例48:用片内数据存储器用片内
12、数据存储器30H单元数据的低单元数据的低3位、位、31H单元的中间单元的中间2位和位和32H单元的高单元的高3位位组合成一个新数据,结果存于组合成一个新数据,结果存于33H单元。单元。MOV33H,30HANL33H,#00000111B;保留;保留30H低低3位位MOVA,31HANLA,#00011000B ;保留;保留31H.中间中间2位位ORL33H,AMOVA,32HANLA,#11100000B;保留;保留32H高高3位位ORL33H,ARETEND例例410:多字节无符号数加法:多字节无符号数加法 设两个设两个N字节的无符号数分别存放在内字节的无符号数分别存放在内部数据存储器中以部数据存储器中以DATA1和和DATA2开始的单开始的单元中,低位在前。相加后的结果要求存放在元中,低位在前。相加后的结果要求存放在DATA2数据区。数据区。MOVR0,#DATA1 MOVR1,#DATA2;置两加数指针;置两加数指针 MOVR7,#N;字节数;字节数 CLRC LOOP:MOVA,R0 ADDCA,R1;求和;求和 MOVR1,A;存结果;存结果 INCR0;修改指针;修改指针 INCR1 DJNZR7,LOOP RETEND结束结束