




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,5.1MCS-51系列单片机汇编语言语句格式,汇编语言的语句由四部分构成:名字项,操作码项,操作数项,注释项。1名字项名字项就是我们常说的标号,标号是该指令的符号地址,可根据需要设定。标号必须以字母开始,以冒号结束,所用字符一般不超过8个(视汇编语言版本不同而异)。系统中保留使用的字符或字符组不能用作标号。标号在每条语句中是任选项,即需要时才设定。2操作码项这一项对于汇编指令语句而言是指令的助记符,如MOV。对伪指令语句而言是指令的定义符,如DB。操作码是汇编语言程序每一句所必须的部分,它决定语句的操作性质。操作码与操作数之间用空格分开。,第五章MCS-51系列单片机汇编语言程序设计,2,3操作数项操作数可以是数字,可以是地址,。操作数又可分为目的操作数和源操作数两种,二者之间用逗号分开。另外,汇编语言语句中,有的有一个操作数,有的有两个操作数,有的有三个操作数,有的有多个操作数,有的没有操作数,而有的操作数是隐含的。4注释以分号开头,计算机在汇编时对这部分不予处理,是程序员对指令操作的解释,可有可无。,3,5.2常用伪指令,1定位伪指令格式:ORGnn为十进制或十六进制常数,代表地址。该伪指令规定了后面指令的存放地址。例如:ORG0100HAJMPPRG1AJMP为双字节指令,其首字节放在0100H单元,第二个字节放在0101H单元。2汇编结束伪指令格式:END当汇编程序遇到该指令后,结束汇编过程,其后的指令将不加处理。,4,3定义字节伪指令格式:标号:DBX1,X2,Xi,Xn其中标号为可选项,Xi为8位数据或ASC码。例如:ORG1000HTAB:DB01H,02H则(1000H)=01H,(1001H)=02H4定义双字节伪指令格式:标号:DWX1,X2,Xi,Xn其中称号为可选项,Xi为双字节数据。例如:ORG2000HHETAB:DW2546H,0178H则(2000H)=25H,(2001H)=46H(2002H)=01H,(2003H)=78H,5,5定义空间伪指令格式:标号:DS数据或字符表达式其中标号为可选项。从指定单元开始,由数据或表达式确定保留若干个字节内存空间备用。例如:ORG8000HBUF:DS08HDB50H,8FH即:8000H8007H单元保留备用(8008H)=50H(8009H)=8FH以上DB、DW、DS伪指令只对程序存储器起作用。,6,6单字节数据赋值伪指令格式:XEQUnX为用户定义的符号名,n为常数、工作寄存器或特殊功能寄存器,为单字节数据。该伪指令将n的值赋给符号名X。X可用于指令中,作为单字节操作数,包括立即数和直接地址direct。7双字节数据赋值伪指令格式:yEQUny为用户定义的符号名,n为双字节常数。该伪指令将n的值赋给符号名y。y可作为指令中双单字节操作数,或转移指令中的目的地址。用EQU定义的符号名必须先定义后使用。,7,8数据地址赋值伪指令格式:字符名称DATA数据或表达式此命令把一个数据地址或代码地址赋予标号段规定的字符名称。例如:INDEXJDATA6369H定义了INDEXJ这个字符名称的地址为6369H,主要用于程序的模块式调试。9位地址符号命令格式:字符名称BIT位地址该命令把位地址赋予标号段的字符名称。例如:A1BITP1.0A2BITP1.1,8,5.3MCS-51单片机汇编语言源程序格式及上机过程,5.3.1源程序格式ORGSJMP(或AJMP或LJMP)主程序名ORG主程序名:主程序子程序名:子程序RET中断服务程序名:中断服务程序RETIEND,9,5.3.2MCS-51单片机汇编语言上机过程,10,5.4MCS-51单片机汇编语言程序设计实例,5.4.1汇编语言程序设计步骤及程序质量评价标准,1汇编语言程序设计步骤用汇编语言编写程序,一般可按如下步骤进行:(1)建立数学模型(2)确定算法(3)制订程序流程图(4)确定数据结构(5)写出源程序(6)上机调试程序,11,2评价程序质量的标准,(1)程序的执行时间;(2)程序所占用的内存字节数目;(3)程序的逻辑性,可读性;(4)程序的兼容性,可扩展性;(5)程序的可靠性。,12,5.4.2程序设计实例,1顺序结构程序设计顺序结构的程序是指既无循环又无分支(不产生跳转),按程序中指令书写的顺序执行的程序,又称直线程序。这种结构的程序虽然简单,但它是构成任何结构程序的基础。,13,【例1】两个1位十进制数相加,结果存于工作寄存器R6、R4中。设两个加数分别在工作寄存器R0和R2中。,源程序清单:ORG1000HMAIN:CLRPSW.4CLRPSW.3MOVA,R0CLRR6CLRCADDA,R2DAAMOVR4,ACLRAADDCA,#0MOVR6,AEND,14,2分支结构程序设计在实际应用中,不可能所有程序都是直线运行的,相反,多数情况都需要根据不同的条件进行不同的处理,这就会使程序跳转到不同位置去执行,这种结构的程序称为分支结构程序。MCS-51单片机中条件转移指令、比较转移指令、位转移指令等都可实现程序分支。,15,【例4】求单字节带符号数的补码。设该单字节数在累加器A中,求出的补码存于寄存器B中。,源程序清单:ORG0200HBEGIN:JNBACC.7,L1MOVC,ACC.7MOV00H,CCPLAADDA,#1MOVC,00HMOVACC.7,CL1:MOVB,AEND,【例5】单字节十六进制数转换为ASC码。设被转换的数在B中,转换后的ASC码放在R7R6中。,17,ORG2000HMAIN:MOVA,B;取被转换数据SWAPA;取高4位ANLA,#OFHSUBBA,#0AH;高4位0AH吗?JCL1;是,转L1ADDA,#7;否,加7L1:ADDA,#30H;加30HADDA,#0AH;原来减掉0AH,再加回来MOVR7,A;保存高4位对应的MOVA,B;转换低4位ANLA,#OFHSUBBA,#0AHJCL2ADDA,#7L2:ADDA,#30HADDA,#0AHMOVR6,A;保存低4位对应的ASC码END,源程序清单:设程序起始地址为2000H,18,3循环结构程序设计循环程序是指一段反复执行的程序。在许多问题中,需多次执行一段完全相同的程序,只是参加运算(或处理过程)的操作数不同。这时就可以采用循环程序结构。循环程序可以缩短程序,减少程序所占的内存空间。一般情况下,循环程序包括下面几部分:(1)循环体:需要多次执行的程序的主体。(2)循环控制:对循环次数进行计数,判断循环结束的条件。(3)循环初值:包括循环次数、循环体中工作单元的初值等。,图5-7循环程序结构图,20,【例7】延时程序是一种典型的循环程序。本例中,设MCS-51系列单片机系统的主频率为12MHz,要求编写一个延时50ms的程序。,下面的程序段为两重循环,其延时时间为:t=(1252+1+2)200+11s=50601s=50.601msMOVR7,#200;指令执行时间为1个机器周期DEL1:MOVR6,#125;指令执行时间为1个机器周期DEL2:DJNZR6,#DEL2;指令执行时间为两个机器周期DJNZR7,#DEL1;指令执行时间为两个机器周期这里外循环初值为R7=200,外循环体为第2、3、4句,外循环结束条件为R7=0;内循环初值为R6=125,内循环体为第3句,内循环结束条件为R6=0。,21,4查表程序设计,所谓查表就是把用某种方式获得的结果数据编制成数据表,存放于存储器的某个区域,在程序中用MOVCA,A+PC或MOVCA,A+DPTR指令从数据表中取出需要的数据,这样一种类型的程序,称为查表程序。,【例10】代码转换是查表程序的典型应用之一。本例要求将一位十六进制数转换成ASC码。设被转换的十六进制数在R0中,转换以后的ASC码存放在R1中。,程序清单:设程序起始地址为0000H。ORG0000HLJMPMAINORG0060HMAIN:MOVA,R0ANLA,#OFHMOVDPTR,#TABMOVCA,A+DPTRMOVR1,AORG0100HTAB:DB123456789ABCDEFEND,23,散转程序是一种并行多分支程序,它根据系统的某种输入或运算结果,分别转向各个处理程序。与分支程序不同的是,散转程序多采用指令:JMPA+DPTR,根据输入或运算结果,确定A或DPTR的内容,直接跳转到相应的分支程序中去。而分支程序一般是采用条件转移指令或比较转移指令实现程序的跳转。散转程序的基本结构如图所示。,5散转程序设计,24,6子程序设计在实际应用中,有时一段相同功能的程序可能在多处用到,这时可将这段程序编写成子程序,用到它的地方写一条子程序调用指令,即可插入该段程序的执行。编得好的子程序可供不同的人在许多程序中调用,即具有通用性,这样的子程序越多,我们编程越方便,有利于缩短应用系统的研制周期。通用的子程序要求有子程序文件,它包含的主要内容有:子程序名,子程序功能,入口参数,出口参数。子程序与主程序的接口是:在主程序中执行程序调用指令“LCALL子程序名”或“ACALL子程序名”,在子程序最后执行返回指令RET。,25,子程序的执行过程:保护断点(PC值入栈,由调用指令自动完成);保护现场(可放在主程序中,也可放在子程序中。若放在主程序中,则应安排在调用指令之前);传递参数(需要传递参数时,就有这一步骤,不需传递参数时就没有这一步骤);具体处理(这是子程序的主体,即实现子程序功能的程序段);返回参数(需要返回参数时,就有这一步骤,不需返回参数时就没有这一步骤);恢复现场(若保护现场是在主程序中,则恢复现场也在主程序中,且安排在调用指令之后。若保护现场是在子程序中,则恢复现场也应在子程序中);恢复断点(PC值出栈,由返回指令自动完成)。,26,【例17】使P1口所接8个发光二极管循环点亮,每点亮一个发光二极管,调用一次延时子程序。设主频fosc=12MHz,延时时间为20ms,主程序流程图,子程序
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国烹饪大师认证考试题库及模拟题
- 2025年铁轨建设项目发展计划
- 2025年放射性核素遥控后装机合作协议书
- 抛光机安全培训课件
- 湖南省邵阳市2024-2025学年高三上学期第一次联考化学试题(含答案)
- 2025年安徽省城名校中考三模物理试题(含答案)
- 2024-2025学年湖南省常德市澧县七年级(上)期末数学试卷(含部分答案)
- 2025年集群通信系统(数字)合作协议书
- 扫黑除恶专项斗争
- 2025年遵义中考试卷历史及答案
- 园林机械完整版
- 几何模型“将军饮马”模型(将军饮马、将军遛马、将军造桥)(轴对称模型) 中考数学总复习必会几何模型剖析(全国通用)
- JJG 146-2011量块
- 小学数学思想方法(课件)
- DBJ50-T-389-2021 高性能混凝土应用技术标准
- 《宠物美容与护理》全套教学课件
- 智能消防应急照明与疏散指示系统方案
- 铁路路基重力式挡土墙施工方案
- 底拖法在管道施工中的应用
- Toeic托业考试真习题及答案
- 老年患者风险评估与防范措施
评论
0/150
提交评论