已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
3.1 MCS-51系列单片机汇编语言语句格式,汇编语言的语句由四部分构成:名字项,操作码项,操作数项,注释项。 1名字项 名字项就是我们常说的标号,标号是该指令的符号地址,可根据需要设定。标号必须以字母开始,以冒号结束,所用字符一般不超过8个(视汇编语言版本不同而异)。系统中保留使用的字符或字符组不能用作标号。标号在每条语句中是任选项,即需要时才设定。 2操作码项 这一项对于汇编指令语句而言是指令的助记符,如MOV。对伪指令语句而言是指令的定义符,如DB。操作码是汇编语言程序每一句所必须的部分,它决定语句的操作性质。操作码与操作数之间用空格分开。,MCS-51系列单片机汇编语言程序设计,3操作数项 操作数可以是数字,可以是地址, 。操作数又可分为目的操作数和源操作数两种,二者之间用逗号分开。另外,汇编语言语句中,有的有一个操作数,有的有两个操作数,有的有三个操作数,有的有多个操作数,有的没有操作数,而有的操作数是隐含的。 4注释 以分号开头,计算机在汇编时对这部分不予处理,是程序员对指令操作的解释,可有可无。,3.2 常用伪指令,1定位伪指令 格式:ORG n n为十进制或十六进制常数,代表地址。该伪指令规定了后面指令的存放地址。例如: ORG 0100H AJMP PRG1 AJMP为双字节指令,其首字节放在0100H单元,第二个字节放在0101H单元。 2汇编结束伪指令 格式:END 当汇编程序遇到该指令后,结束汇编过程,其后的指令将不加处理。,3定义字节伪指令 格式:标号:DB X1,X2,Xi,Xn 其中标号为可选项,Xi为8位数据或ASC码。 例如: ORG 1000H TAB: DB 01H,02H 则 (1000H)=01H,(1001H)=02H 4定义双字节伪指令 格式:标号:DW X1,X2,Xi,Xn 其中称号为可选项,Xi为双字节数据。 例如: ORG 2000H HETAB: DW 2546H,0178H 则 (2000H)=25H ,(2001H)=46H (2002H)=01H ,(2003H)=78H,5定义空间伪指令 格式:标号:DS 数据或字符表达式 其中标号为可选项。从指定单元开始,由数据或表达式确定保留若干个字节内存空间备用。 例如: ORG 8000H BUF:DS 08H DB 50H,8FH 即:8000H8007H单元保留备用 (8008H)=50H (8009H)=8FH 以上DB、DW、DS伪指令只对程序存储器起作用。,6单字节数据赋值伪指令 格式: X EQU n X为用户定义的符号名,n为常数、工作寄存器或特殊功能寄存器,为单字节数据。 该伪指令将n的值赋给符号名X。X可用于指令中,作为单字节操作数,包括立即数和直接地址direct。 7双字节数据赋值伪指令 格式:y EQU n y为用户定义的符号名,n为双字节常数。 该伪指令将n的值赋给符号名y。 y可作为指令中双单字节操作数,或转移指令中的目的地址。 用EQU定义的符号名必须先定义后使用。,8数据地址赋值伪指令 格式:字符名称 DATA 数据或表达式 此命令把一个数据地址或代码地址赋予标号段规定的字符名称。 例如:INDEXJ DATA 6369H 定义了INDEXJ这个字符名称的地址为6369H,主要用于程序的模块式调试。 9位地址符号命令 格式:字符名称 BIT 位地址 该命令把位地址赋予标号段的字符名称。 例如:A1 BIT P1.0 A2 BIT P1.1,3.3 MCS-51单片机汇编语言 源程序格式及上机过程,5.3.1 源程序格式 ORG SJMP(或AJMP或LJMP) 主程序名 ORG 主程序名: 主程序 子程序名: 子程序 RET 中断服务程序名:中断服务程序 RETI END,MCS-51单片机汇编语言上机过程,3.4 MCS-51单片机汇编语言程序设计实例,汇编语言程序设计步骤及程序质量评价标准,1汇编语言程序设计步骤 用汇编语言编写程序,一般可按如下步骤进行: (1)建立数学模型 (2)确定算法 (3)制订程序流程图 (4)确定数据结构 (5)写出源程序 (6)上机调试程序,2评价程序质量的标准,(1)程序的执行时间; (2)程序所占用的内存字节数目; (3)程序的逻辑性,可读性; (4)程序的兼容性,可扩展性; (5)程序的可靠性。,3. 程序设计实例,1顺序结构程序设计 顺序结构的程序是指既无循环又无分支(不产生跳转),按程序中指令书写的顺序执行的程序,又称直线程序。这种结构的程序虽然简单,但它是构成任何结构程序的基础。,【例1】两个1位十进制数相加,结果存于工作寄存器R6、R4中。设两个加数分别在工作寄存器R0和R2中。,源程序清单: ORG 1000H MAIN: CLR PSW.4 CLR PSW.3 MOV A,R0 CLR R6 CLR C ADD A,R2 DA A MOV R4,A CLR A ADDC A,#0 MOV R6,A END,2分支结构程序设计 在实际应用中,不可能所有程序都是直线运行的,相反,多数情况都需要根据不同的条件进行不同的处理,这就会使程序跳转到不同位置去执行,这种结构的程序称为分支结构程序。MCS-51单片机中条件转移指令、比较转移指令、位转移指令等都可实现程序分支。,【例4】求单字节带符号数的补码。设该单字节数在累加器A中,求出的补码存于寄存器B中。,源程序清单: ORG 0200H BEGIN: J NB ACC.7,L1 CPL A ADD A,#1 SETB ACC.7 L1: MOV B,A END,【例5】单字节十六进制数转换为ASC码。设被转换的数在B中,转换后的ASC码放在R7R6中。,ORG 2000H MAIN: MOV A,B ;取被转换数据 SWAP A ;取高4位 ANL A,#OFH CLR C SUBB A,#0AH ;高4位0AH吗? JC L1 ;是,转L1 ADD A,#7 ;否,加7 L1: ADD A,#30H ;加30H ADD A,#0AH ;原来减掉0AH,再加回来 MOV R7,A ;保存高4位对应的 MOV A,B ;转换低4位 ANL A,#OFH CLR C SUBB A,#0AH JC L2 ADD A,#7 L2: ADD A,#30H ADD A,#0AH MOV R6,A ;保存低4位对应的ASC码 END,源程序清单:设程序起始地址为2000H,3循环结构程序设计 循环程序是指一段反复执行的程序。在许多问题中,需多次执行一段完全相同的程序,只是参加运算(或处理过程)的操作数不同。这时就可以采用循环程序结构。循环程序可以缩短程序,减少程序所占的内存空间。一般情况下,循环程序包括下面几部分: (1)循环体:需要多次执行的程序的主体。 (2)循环控制:对循环次数进行计数,判断循环结束的条件。 (3)循环初值:包括循环次数、循环体中工作单元的初值等。,图5-7 循环程序结构图,【例7】延时程序是一种典型的循环程序。本例中,设MCS-51系列单片机系统的主频率为12MHz,要求编写一个延时50 ms的程序。,下面的程序段为两重循环,其延时时间为: t=(1252+1+2)200+11s=50601s =50.601ms MOV R7,#200 ;指令执行时间为1个机器周期 DEL1:MOV R6,#125 ;指令执行时间为1个机器周期 DEL2:DJNZ R6,#DEL2;指令执行时间为两个机器周期 DJNZ R7,#DEL1 ;指令执行时间为两个机器周期 这里外循环初值为R7=200,外循环体为第2、3、4句,外循环结束条件为R7=0;内循环初值为R6=125,内循环体为第3句,内循环结束条件为R6=0。,4查表程序设计,所谓查表就是把用某种方式获得的结果数据编制成数据表,存放于存储器的某个区域,在程序中用MOVC A,A+PC或MOVC A,A+DPTR指令从数据表中取出需要的数据,这样一种类型的程序,称为查表程序。,【例10】代码转换是查表程序的典型应用之一。本例要求将一位十六进制数转换成ASC码。设被转换的十六进制数在R0中,转换以后的ASC码存放在R1中。,程序清单:设程序起始地址为0000H。 ORG 0000H LJMP MAIN ORG 0060H MAIN: MOV A ,R0 ANL A,#OFH MOV DPTR,#TAB MOVC A,A+DPTR MOV R1,A ORG 0100H TAB: DB 123456789ABCDEF END,散转程序是一种并行多分支程序,它根据系统的某种输入或运算结果,分别转向各个处理程序。与分支程序不同的是,散转程序多采用指令:JMP A+DPTR,根据输入或运算结果,确定A或DPTR的内容,直接跳转到相应的分支程序中去。而分支程序一般是采用条件转移指令或比较转移指令实现程序的跳转。散转程序的基本结构如图所示。,5散转程序设计,6子程序设计 在实际应用中,有时一段相同功能的程序可能在多处用到,这时可将这段程序编写成子程序,用到它的地方写一条子程序调用指令,即可插入该段程序的执行。编得好的子程序可供不同的人在许多程序中调用,即具有通用性,这样的子程序越多,我们编程越方便,有利于缩短应用系统的研制周期。通用的子程序要求有子程序文件,它包含的主要内容有:子程序名,子程序功能,入口参数,出口参数。 子程序与主程序的接口是:在主程序中执行程序调用指令“LCALL 子程序名”或“ACALL 子程序名”,在子程序最后执行返回指令RET。,子程序的执行过程: 保护断点(PC值入栈,由调用指令自动完成); 保护现场(可放在主程序中,也可放在子程序中。若放在主程序中,则应安排在调用指令之前); 传递参数(需要传递参数时,就有这一步骤,不需传递参数时就没有这一步骤); 具体处理(这是子程序的主体,即实现子程序功能的程序段); 返回参数(需要返回参数时,就有这一步骤,不需返回参数时就没有这一步骤); 恢复现场(若保护现场是在主程序中,则恢复现场也在主程序中,且安排在调用指令之后。若保护现场是在子程序中,则恢复现场也应在子程序中); 恢复断点(PC值出栈,由返回指令自动完成)。,【例17】使P1口所接8个发光二极管循环点亮,每点亮一个发光二极管,调用一次延时子程序。设主频fosc=12MHz,延时时间为20ms,主程序流程图,子程序流程图,源程序清单: ORG 0000H AJMP START ORG 00
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年电子产品制版工专项题库(附答案与解释)
- 2026年河大版(新教材)初中信息技术七年级全一册《记录我们的低碳生活》教案
- 卫生专业技术资格考试核医学技术(中级377)专业知识巩固重点详解(2026年)
- 情绪任务在情感障碍中的近红外脑功能成像研究进展
- 2026年保温材料制造工专项题库(附答案与解释)
- (正式版)DB45∕T 2860-2024 《木薯啤酒渣和甘蔗尾叶混合微贮与使用技术规程》
- 隧道爆破设计作业方案
- 体育舞蹈理论试题
- 数据标注兼职居间服务协议2026版
- 失败容忍条款2026年数据标注兼职合同范本
- 电商代运营服务合同模板2026三篇
- 2025天津泰达产业发展集团所属企业员工岗位社会化公开招聘笔试历年参考题库附带答案详解
- 2026年四川省成都市天府新区数学八上期末学业质量监测模拟试题含解析
- 2026年中国邮政集团有限公司吉林省分公司纪检干部社会招聘1人笔试历年典型考点题库附带答案详解
- 昆山啤酒节策划方案
- 国家卫生健康委员会中国结直肠癌诊疗规范(2025版)
- (2026年)围手术期血压管理课件
- 国企工程管理岗笔试试题及答案
- 诊所医学检验科工作制度
- 心房颤动诊断和治疗中国指南
- 2025年香港苏浙公学笔试面试及答案
评论
0/150
提交评论