




已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章 汇编语言程序设计 4-1 汇编语言程序设计基本概念 4-2 汇编语言程序的基本结构形式,4-1 汇编语言程序设计基本概念 一、MCS-51指令操作数说明 1、语句格式 标号: 操作码 操作数(目的操作数,源操作数) ;注释 2、操作数 对于立即数 #data (1)立即数188,可表示为 #10111100B、#0BCH、#188 (2)MOV DPTR,# BLOCK;BLOCK为定义过的标号地址 对于直接地址 direct (1)二进制、十进制、十六进制数,MOV A,30H (2)定义过的标号地址,AGAIN:SJMP AGAIN (3)表达式,如SUM+2,其中SUM为定义过的标号地址 (4) SFR寄存器名,如SP、DPH、DPL等,对于偏移量 rel (1)可以是数值、标号地址、表达式 (2)使用特殊符号“”,它代表本条转移指令所在的地址, 如LJMP (死循环) (3)实际编程时,凡指令中用到地址(rel、 addr11 、addr16等)都可用标号地址代替实际地址,而地址的运算有汇编程序完成。 二、常用伪指令 汇编:将计算机不可直接识别的汇编语言源程序翻译成机器语 言的过程。分为计算机汇编和人工汇编两种。 汇编程序:具有完成汇编功能的程序。 目标程序:汇编语言源程序经过汇编得到的机器语言程序。 伪指令:提供汇编用控制信息的指令,只能被汇编程序所识别, 不是单片机的CPU可执行的指令。,1、定位伪指令ORG(Origin) 格式: 标号: ORG m m:16位二进制数,代表地址。 功能:得到机器语言程序的起始地址。 2、定义字节伪指令DB(Define Byte) 格式:标号: DB X1,X2,Xn Xn:单字节二进制、十进制、十六进制数,或以 括起来的字符串,数据符号。 功能:定义程序存储器从标号开始的连续单元,用来存放常 数、字符和表格。 3、定义字伪指令DW(Define Word) 格式:标号: DW Y1,Y2,Yn Yn:双字节二进制、十进制、十六进制数,或以 括起来的 字符串,数据符号。 功能:同DB,不同的是为16位数据。,4、汇编结束命令END 格式:标号: END 功能:END是汇编语言源程序的汇编结束标志,在它后面所 写的指令均不予处理。 5、等值命令EQU 格式:字符名称 EQU 数或汇编符号 功能:将一个数或特定的汇编符号赋予规定的字符名称。先 定义后使用。,三、汇编语言程序的结构 1、程序设计的基本步骤 一般步骤为: (1)分析题意,明确要求; (2)建立思路,确定算法; (3)编制框图,绘出流程; (4)编写程序,上机调试; 程序结构有简单顺序、分支、循环和子程序等 2、画流程图 画流程图是指用各种图形、符号、指向线等来说明程序 设计的过程。国际通用的图形和符号说明如下:,椭圆框:起止框,在程序的开始和结束时使用。 矩形框:处理框,表示要进行的各种操作。 菱形框:判断框,表示条件判断,以决定程序的流向。 指向线:流程线,表示程序执行的流向。 圆 圈:连接符,表示不同页之间的流程连接。 各种几何图形符号如下图所示。,4-2 汇编语言程序的基本结构形式 一、简单程序的设计 例4-1 已知两个压缩BCD码分别放在内部RAM的31H30H和33H 32H等4个单元中,试编程求和,结果存入R4R3R2中。 分析:流程如图:,程序如下: ORG 0000H LJMP MAIN ORG 0040H MAIN: MOV A,30H ADD A,32H DA A MOV R2,A MOV A,31H ADDC A,33H DA A MOV R3,A CLR A MOV ACC.0,C MOV R4,A HERE: SJMP HERE END,二、分支程序设计 1、单分支程序 单分支结构程序使用转移指令实现,即根据条件对程序的执行进行判断,满足条件是转移执行,否则顺序执行。 在MCS-51指令系统中条件转移指令有: (1)判A转移指令JZ、JNZ; (2)判位转移指令JB、JNB、JBC、JC、JNC; (3)比较转移指令CJNE; (4)减1不为0转移指令DJNZ;,例4-2 假定在外部RAM中有100H、101H和102H共3个连续单元,其中100H、101H单元中分别存放着两个8位无符号数,要求找出其中的大数并存入102H单元。 分析:两个无符号数的大小比较可利用两数相减是否有借位来判断,流程图和程序如下所示:,ORG 0000H LJMP START ORG 0040H START:CLR C MOV DPTR,#100H MOVX A, DPTR MOV R7, A INC DPTR MOVX A, DPTR SUBB A, R7 JC BIG1 MOVX A, DPTR SJMP BIG2 BIG1:XCH A, R7 BIG2:INC DPTR MOVX DPTR,A SJMP ,2、多分支程序 (1)嵌套分支结构 例4-3 设变量X存放于30H单元,函数值Y存放31H单元。试按照式: 1 X0 Y= 0 X=0 的要求给Y赋值 -1 X0 分析:X是有符号数,判断符号位是0还是1可利用JB或JNB指令。 判断X是否等于0则直接可以使用累加器A的判0指令。 流程、程序如下页:,ORG 0000H LJMP START ORG 0040H START: MOV A,30H JZ OVER JNB ACC.7,LAB1 MOV A, #0FFH SJMP OVER LAB1: MOV A, #1 OVER: MOV 31H, A SJMP ,(2)多重分支结构 利用MCS-51单片机的散转指令JMP A+DPTR, 可方便地实现多重分支控制,因此,又称为散转程序。 假定多路分支的最大序号为n,则分支的结构如图所示。,三、循环程序设计 1、循环程序的结构 循环程序包括以下四个部分: 置循环初值 循环体 循环控制变量修改 循环终止控制 常用于循环控制的指令有: DJNZ、CJNE、JC、JNC 等控制类指令。,2、单循环 终止循环控制采用计数的方法,即用一个寄存器作为循环次数计数器,每次循环后计数加1或减1,达到终止值后退出循环。 例4-4 计算50个8位二进制数(单字节)之和。 要求:50个数存放在30H开头的内部RAM中,和放在R6R7中。 分析:采用DJNZ循环体的流程框图如下页所示,在参考程序中,R0为数据地址指针,R2为减法循环计数器。,START:MOV R6, #0 MOV R7, #0 MOV R2, #50 MOV R0, #30H LOOP:MOV A, R7 ADD A, R0 MOV R7, A CLR A ADDC A, R6 MOV R6, A INC R0 DJNZ R2, LOOP SJMP $,3、多重循环 如果在一个循环程序中嵌套了其他的循环程序,称为多重循环程序。在用软件实现延时时显得特别有用。 例4-5 设计1秒延时子程序,假设fosc=12MHz。 分析:软件延时与指令的执行时间关系密切,在使用12MHz晶振时,一个机器周期的时间为1us,执行一条DJNZ指令的时间为2us,我们可以采用三重循环的方法写出延时1秒的子程序 流程、程序如下图所示:,DELAY:MOV R7, #10; DL3: MOV R6, #200 ; DL2: MOV R5, #250 ; DL1: DJNZ R5, DL1 ; DJNZ R6, DL2 ; DJNZ R7, DL3 ; RET,4、按条件转移控制的循环 例4-6 把内部RAM从地址20H开始存放的数据传送到以地址40H开始的存储区中,数据块长度未知,但已知数据块的最后一个字节内容为00H,而其它字节均不为0。并设源地址与目的地址空间不重复。 分析:可以利用判断每次传送的内容是否为 0 这一条件来控制循环。也可用CJNE来比较与0是否相等设计。 利用判A转移控制的循环流程图如下图所示。,START:MOV R0, #20H MOV R1, #40H LOOP:MOV A, R0 JZ ENT MOV R1,A INC R0 INC R1 SJMP LOOP ENT:RET,四、应用控制流程设计 1、控制流程设计的基本方法 在单片机的控制系统中,为了实现系统的自动控制,必须将控制现场的信息输入到单片机,经过计算机的处理以后以被控对象能够接受的形式输出到执行机构,实现对现场的控制。 例4-7 电机的简单起停控制;其框图如下页图 a 所示 1)分析:简单的电机起动停止控制,其控制的示意图及I/O分配如图 b 所示。 输入信号:启动按钮SB1、停止按钮SB2 输出信号:继电器KA,假定:按下按钮,相应的接口信号为低电平(P1.1=0)时; 若:程序使 P1.3=1,即KA = 1; 则:电机启动。,2)按照上述的控制思路,流程图如下图所示。,ORG 1000H STR:MOV P1, #00000110B WT1:JB P1.1, WT1 ;启动? SETB P1.3 ;电机启动 WT2:JB P1.2, WT2 ;停止? CLR P1.3 ;电机停止 SJMP WT1 END,2、应用程序控制流程设计 例4-8 某机床动力头,其行程如图(a)所示,,SQ1、SQ2为左、右行程开关,要求: 1)每次按SB1启动,工作3个来回后停止,等待下次启 动 2)每次按SB2按钮,在完成当前进给后,停在初始 位SQ1处,等待下次启动;,1 硬件原理图,如图(b)所示,其中: 输入信号:启动按钮P1.0、停止P1.1、 左右行程开关 P1.2、P1.3; 输出信号:前进LED灯P1.7、后退 LED灯P1.6。,2 控制流程:如图(c)。,3)汇编程序 MAIN: MOV R0, #00H MOV P1, #0FH WT1: JB P1.0,WT1 LOOP: SETB P1.7 WT2: JB P1.3,WT2 CLR P1.7 SETB P1.6 INC R0 W
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度汽车零部件企业车辆采购协议
- 2025版挡土墙结构检测与维修劳务分包合同
- 2025版碧桂园主题公园总承包施工合同
- 2025版水利工程建设项目施工合同补充协议范本
- 二零二五年度住宅小区车辆收费员雇佣合同材料+服务
- 二零二五年度定制门窗与户外广告合同
- 奉化建筑工装知识培训班课件
- 山谷回音课件
- 大黄猫进城课件
- 山竹进货知识培训课件
- 劳务外包服务投标方案(技术标)
- 股权转让股东会决议范本
- 合作社和公司合作协议书(2篇)
- 路试作业安全操作规程(4篇)
- keycloak中文使用文档-Keycloak使用手册(打印版)
- 医药代表大客户管理经验分享
- 教师安全教育培训内容
- 人教版八年级下册地理2024-2025学年八年级下册地理期末综合测试卷(二)(含答案)
- 密态深度学习-记录
- 医院医学院医疗机构培训《烧伤病人护理教学查房》课件
- 家政服务协议书范本
评论
0/150
提交评论