您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 述职报告 > 51单片机汇编语言程序设计
单片机原理与接口技术中北大学电子科学技术专业返回目录103:09单片机原理与接口技术第4章MCS-51汇编语言程序设计单片机原理与接口技术中北大学电子科学技术专业返回目录203:09(1)了解汇编语言编程的基础知识。(2)了解汇编语言程序设计的基本步骤和方法。(3)了解汇编语言目标程序效率高、占存储空间少、运行速度快、实时性强等特点。(4)掌握MCS-51汇编语言的顺序、分支、循环、查表及子程序的结构。本章教学要求单片机原理与接口技术中北大学电子科学技术专业返回目录303:094.1程序设计概述4.1.1程序设计的步骤4.1.2汇编语言的规范4.2结构化程序设计方法4.2.1顺序结构程序本章目录4.2.2分支结构程序4.2.3循环结构程序4.2.4查表程序4.2.5子程序4.3汇编语言程序设计实例习题与思考题单片机原理与接口技术中北大学电子科学技术专业返回目录403:094.1程序设计概述本章介绍使用MCS-51指令系统编写汇编程序的方法。与高级语言相比,汇编语言如下特点。①助记符指令与机器指令是一一对应的,所以用汇编语言编写的程序效率高,占用存储空间小,运行速度快,而且能反映计算机的实际运行情况,能编写出最优化的程序。②汇编语言能直接访问存储器、外围接口,也可直接处理中断,因此汇编语言能直接管理和控制硬件设备。③汇编语言是“面向机器”的语言,编程比使用高级语言困难,通用性差。本教程针对单片微机“面向控制”这一使用的特点,仍以汇编语言来进行讲解。单片机原理与接口技术中北大学电子科学技术专业返回目录503:094.1.1程序设计的步骤MCS-51单片机提供111条指令,它们以指令助记符的形式出现,指令助记符的集合称为汇编语言。由汇编语言编写的程序称为汇编语言程序。用汇编语言编写程序的过程,称为汇编语言程序设计。汇编语言程序设计方法:1.模块化程序设计2.循环及子程序结构3.自上而下的程序设计单片机原理与接口技术中北大学电子科学技术专业返回目录603:09使用汇编语言设计程序,可分为以下几个步骤:1)分析题意,明确要求。2)确定算法。3)画程序流程图,用图解来描述和说明解题步骤,常用的流程图符号有。4.1.1程序设计的步骤开始结束YN条件满足?处理处理处理处理开始或结束符号工作任务符号判断分支符号程序连接符号程序流向符号程序流向符号判断分支符号单片机原理与接口技术中北大学电子科学技术专业返回目录703:094)分配内存单元,确定程序与数据区的存放地址。5)编写源程序。6)程序优化。7)上机调试、修改和最后确定源程序。4.1.1程序设计的步骤单片机原理与接口技术中北大学电子科学技术专业返回目录803:094.1.2汇编语言的规范汇编语言源程序由汇编指令和伪指令构成。汇编指令:指令系统中的全部指令,每条指令语句在汇编时产生一个目标代码,对应着机器的一种操作。伪指令:汇编控制指令,为汇编语言提供汇编信息,在汇编时没有目标代码与之对应。[标号:]助记符[操作数1[,操作数2][,操作数3]][;注释]标号:由1~8个ASCII字符组成。第一个字符必须是字母,其余字符可以是字母、数字或其它特定字符;标号不能使用该汇编语言已经定义了的符号。如指令助记符、伪指令以及寄存器符号名称等。1.汇编指令格式单片机原理与接口技术中北大学电子科学技术专业返回目录903:09MCS-51系列单片机的常用伪指令有:ORG、END、EQU、DB、DW、DS和BIT等。2.伪指令4.1.3汇编语言的规范---伪指令ORG格式:[标号:]ORG16位地址功能:规定程序块或数据块存放的起始地址。如:ORG8000HSTART:MOVA,#30H规定下面的第一条指令从地址8000H单元开始存放,即标号START的值为8000H(1)汇编起始伪指令ORG单片机原理与接口技术中北大学电子科学技术专业返回目录1003:09格式:[标号:]END[表达式]功能:结束汇编。汇编程序遇到END伪指令后即结束汇编。处于END之后的程序,汇编程序不予处理。(2)汇编结束伪指令END4.1.3汇编语言的规范---伪指令END如:ORG2000HSTART:MOVA,#00H…ENDSTART;表示标号START开始的程序段结束。单片机原理与接口技术中北大学电子科学技术专业返回目录1103:09格式:字符名称EQU操作数功能:将操作数赋予规定的字符名称。必须先赋值,后使用。(3)等值伪指令EQU4.1.3汇编语言的规范---伪指令EQU如:ABEQU16HDELYEQU1234HMOVA,ABLCALLDELY单片机原理与接口技术中北大学电子科学技术专业返回目录1203:09格式:[标号:]DB表达式表(字节表)功能:在程序存储器中,从标号开始的连续存储单元中存放表达式表的内容。表达式表可以是一个字节或用逗号分开的多个字节,也可以是用引号括起来的字符串。(4)定义字节伪指令DB4.1.3汇编语言的规范---伪指令DB如:ORG1010HTAB:DB32,‘C’,25H,-1以上伪指令经汇编以后,将从1010H开始的若干内存单元赋值。单片机原理与接口技术中北大学电子科学技术专业返回目录1303:09[标号:]DW16位二进制数表功能:在程序存储器中,从标号所指的地址单元开始存放表达式表的内容,一个16位数要占两个存储单元,其中高8位存入低地址单元,低8位存入高地址单元。(5)定义字伪指令DW4.1.3汇编语言的规范---伪指令DW例如:ORG1100HTAB:DW1234H,0ABH10DB、DW伪指令都只对程序存储器起作用,不能对数据存储器(RAM)的内容进行赋值或进行初始化工作。单片机原理与接口技术中北大学电子科学技术专业返回目录1403:09[标号:]DS表达式功能:从标号地址开始(无标号时顺序地址开始),保留表达式指定的字节单元作为备用存储区,供程序运行使用。例如:ORG2000HTAB:DS05H经汇编后,从地址2000H开始预留5个存储单元。(6)定义存储区伪指令DS4.1.3汇编语言的规范----伪指令DS字符名称BIT位地址功能:将位地址赋给字符名称。如SBITP1.0经汇编后,S符号的值是P1.0的地址90H。(7)位定义伪指令BIT单片机原理与接口技术中北大学电子科学技术专业返回目录1503:094.2结构化程序设计方法在汇编语言程序设计中,普遍采用结构化程序设计方法。因为任何复杂的程序都可由顺序结构、分支结构及循环结构等构成。每种结构只有一个入口和出口,整个程序也只有一个入口和出口。结构化程序设计的特点是程序的结构清晰、易于读写和验证、可靠性高。结构化程序设计的基本方法有顺序结构、分支结构、循环结构、子程序。----程序结构单片机原理与接口技术中北大学电子科学技术专业返回目录1603:094.2.1顺序结构程序例4-1三字节无符号数相加,其中被加数在内部RAM的50H、51H和52H单元中;加数在内部RAM的53H、54H和55H单元中;要求把相加之和存放在50H、51H和52H单元中,进位存放在位寻址区的00H位中。----顺序结构实例20H内部RAM...50H53H55H54H52H51H加数被加数CY和00H低字节低字节中字节中字节高字节高字节52H51H50H+55H54H53H52H51H50H00HCY高字节高字节低字节低字节R0→R1→顺序结构的程序一般用来处理比较简单的算术或逻辑问题它的执行过程是按照程序存储器PC自动加1的顺序执行。单片机原理与接口技术中北大学电子科学技术专业返回目录1703:094.2.1顺序结构程序----顺序结构实例ORG2000HMOVR0,#52HMOVR1,#55HMOVA,@R0ADDA,@R1MOV@R0,ADECR0DECR1MOVA,@R0ADDCA,@R1MOV@R0,ADECR0DECR1MOVA,@R0ADDCA,@R1MOV@R0,AMOV00H,C;被加数的低字节地址;加数的低字节地址;低字节相加;存低字节相加结果;中间字节带进位相加;存中间字节相加结果;高字节带进位相加;存高字节相加结果;进位送00H位保存程序:START:开始取加数的低字节执行ADD,结果存入52H单元取加数的中间字节执行ADDC,结果存入51H单元取加数的高字节执行ADDC,结果存入50H单元CY送位地址00H结束单片机原理与接口技术中北大学电子科学技术专业返回目录1803:094.2.2分支程序分支程序是根据要求无条件或有条件地改变程序执行流向。编写分支程序主要在于正确使用转移指令。分支程序有:单分支结构、双分支结构、多分支结构(散转)。编写程序,根据x的值求y的值,并放回原单元中。----分支结构例4-3设变量x以补码形式存放在片内RAM的30H单元中,变量y与x的关系是:单片机原理与接口技术中北大学电子科学技术专业返回目录1903:094.2.2分支程序----分支结构实例ORG1000HSTART:MOVA,30HJZNEXT;x=0,转移ANLA,#80H;保留符号位JZED;x0,转移MOVA,#05H;x0,不转移ADDA,30HMOV30H,ASJMPEDNEXT:MOV30H,#20HED:SJMP$程序如下:单片机原理与接口技术中北大学电子科学技术专业返回目录2003:094.2.3循环程序循环程序一般包含四部分:初始化部分、循环处理部分、循环控制部分和循环修改部分。下面分别介绍这四个组成部分。1)初始化部分:设置循环开始的初始值,为循环做准备。2)循环处理部分:循环程序中重复执行的内容。3)循环控制部分:判断是否结束循环。4)循环修改部分:修改循环参数,为执行下一次循环做准备。----循环结构单片机原理与接口技术中北大学电子科学技术专业返回目录2103:09----循环结构4.2.3循环程序先执行后判断先判断后执行单片机原理与接口技术中北大学电子科学技术专业返回目录2203:09例4-5设有一带符号的数组存放在内部RAM以20H为首址的连续单元中,其长度为90,要求找出其中的最大值,并将其存放到内部RAM的1FH单元中,试编写相应的程序。----循环结构实例4.2.3循环程序单片机原理与接口技术中北大学电子科学技术专业返回目录2303:09分析:开始时将第一单元内容送A,接着从第二位起依次将其内容x与A比较,如xA,那么将x送A;如果A≥x,那么A值不变,直到最后一个单元内容与A比较、操作完毕,则A中就是该数组中的最大数。如何判别两个带符号数A和x的大小。可以采用如下的方法:首先判断A和x是否同号,若是同号则进行A-X操作,如差0,那么AX;如果差0,那么Ax;若为异号,则可判A(或x)是否为正。如为正,则A(或x)X(或A);如为负,则A(或x)x(或A)。程序如下:----循环结构实例4.2.3循环程序单片机原理与接口技术中北大学电子科学技术专业返回目录2403:09----循环结构实例4.2.3循环程序ORG1000HSTART:MOVR0,#20H;置取数指针R0初值MOVB,#59H;置循环计数器B初值MOVA,@R0;第一个数送ALOOP:INCR0;修改指针MOVR1,A;暂存XRLA,@R0;两数符号相同?JBACC.7,LAT;若相异,则转LATMOVA,R1;若相同,则恢复A中原来值CLRC;C清零SUBBA,@R0;两数相减,以判断两者的大小单片机原理与接口技术中北大学电子科学技术专业返回目录2503:09----循环结构实例4.2.3循环程序JNBACC.7,SM1;若A中值为大,则转SM1CXA:MOVA,@R0;若A中值为小,则将大数送入ASJMPSM2LAT:XRLA,@R0;恢复A中原值MOVA,R1JNBACC.7,SM2;若A中值为正,侧转SM2SJMPCXA;若A中值为负,则转CXASM1:MOVA,R1;恢复A中原值SM2:DJNZB,LOOPMOV1FH,A;最大者送1FH单元END单片机原理与接口技术中北大学电子
本文标题:51单片机汇编语言程序设计
链接地址:https://www.777doc.com/doc-4005758 .html