![[工学]4 MCS-51汇编语言程序设计.ppt_第1页](http://file.renrendoc.com/FileRoot1/2018-12/27/be8f851d-8297-4b8d-aa95-9279f3009a8e/be8f851d-8297-4b8d-aa95-9279f3009a8e1.gif)
![[工学]4 MCS-51汇编语言程序设计.ppt_第2页](http://file.renrendoc.com/FileRoot1/2018-12/27/be8f851d-8297-4b8d-aa95-9279f3009a8e/be8f851d-8297-4b8d-aa95-9279f3009a8e2.gif)
![[工学]4 MCS-51汇编语言程序设计.ppt_第3页](http://file.renrendoc.com/FileRoot1/2018-12/27/be8f851d-8297-4b8d-aa95-9279f3009a8e/be8f851d-8297-4b8d-aa95-9279f3009a8e3.gif)
![[工学]4 MCS-51汇编语言程序设计.ppt_第4页](http://file.renrendoc.com/FileRoot1/2018-12/27/be8f851d-8297-4b8d-aa95-9279f3009a8e/be8f851d-8297-4b8d-aa95-9279f3009a8e4.gif)
![[工学]4 MCS-51汇编语言程序设计.ppt_第5页](http://file.renrendoc.com/FileRoot1/2018-12/27/be8f851d-8297-4b8d-aa95-9279f3009a8e/be8f851d-8297-4b8d-aa95-9279f3009a8e5.gif)
已阅读5页,还剩42页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章 MCS-51汇编语言程序设计 课件制作:高惠芳 4.1 机器语言和汇编语言 指令系统:一台计算机所能识别、执行的指令的集合就是它 的指令系统。 机器语言:指令系统是一套控制计算机执行操作的二进制编 码,称为机器语言。机器语言指令是计算机唯一能识别和执 行的指令。 汇编语言:指令系统是利用指令助记符来描述的,称为汇编 语言。 计算机的指令系统一般都是利用汇编语言描述的,是由 计算机硬件设计所决定的。指令系统没有通用性。 单片机一般是空机,未含任何系统软件。因此在第一次 使用前,必须对其进行编程 4.1 单片机程序设计语言概述 高级语言:BASIC、PL/M、C语言 应用最广泛的是C语言 优点: 可以大大提高单片机应用系统研制开发的效率 易移植,有助于打破不同单片机之间的界限 缺点: 生成的目标程序代码较长,导致程序运行速度较慢 4.1.2 汇编语言指令格式与伪指令 1常用单位与术语 位(bit):位是计算机所能表示的最小的、最基本的数据单 位,位通常是指一个二进制位。 字节(Byte):一个连续的8位二进制数码称为一个字节,即 1Byte=8bit。 字(Word):通常由16位二进制数码组成,即1Word=2Byte。 字长:字长是指计算机一次处理二进制数码位的多少。MCS-51 型单片机是8位机,所以说它的字长为8位。 MCS-51系列单片机都是以Intel公司最早的典型产品8051 为核心,增加了一定的功能部件后构成的。本章以8051为主介 绍MCS-51系列单片机 。 2汇编语言指令格式 指令格式:指令的表示方式称为指令格式,它规定了指令的长 度和内部信息的安排。完整的指令格式如下: 标号: 操作码 操作数 ,操作数 ;注释 其中: 项是可选项。 标号:指本条指令起始地址的符号,也称为指令的符号地址。 代表该条指令在程序编译时的具体地址。 操作码:又称助记符,它是由对应的英文缩写构成的,是指令 语句的关键。它规定了指令具体的操作功能,描述指令的操作 性质,是一条指令中不可缺少的内容。 操作数:它既可以是一个具体的数据,也可以是存放数据的地 址。 注释:注释也是指令语句的可选项,它是为增加程序的可读性 而设置的,是针对某指令而添加的说明性文字,不产生可执行 的目标代码。 伪指令(也称为汇编程序的控制命令)是程序员发给汇编 程序的命令,用来设置符号值、保留和初始化存储空间、控制 用户程序代码的位置。 伪指令只出现在汇编前的源程序中,仅提供汇编用的某些 控制信息,不产生可执行的目标代码,是CPU不能执行的指令。 (1)定位伪指令ORG 格式:ORG n 其中:n通常为绝对地址,可以是十六进制数、标号或 表达式。 功能:规定编译后的机器代码存放的起始位置。 在一个汇编语言源程序中允许存在多条定位伪指令,但 每一个n值都应和前面生成的机器指令存放地址不重叠。 例如程序:ORG1000H START: MOVA,#20H MOVB,#30H 3伪指令 (2)结束汇编伪指令END 格式:标号: END 表达式 功能:放在汇编语言源程序的末尾,表明源程序的汇编到此 结束,其后的任何内容不予理睬。 (3)赋值伪指令EQU 格式:字符名称x EQU 赋值项n 功能:将赋值项n的值赋予字符名称x。程序中凡出现该字符 名称x就等同于该赋值项n,其值在整个程序中有效。赋值项n可 以是常数、地址、标号或表达式。在使用时,必须先赋值后使 用。 “字符名称”与“标号”的区别是“字符名称”后无冒号 ,而“标号”后面有冒号。 (4)定义字节伪指令DB 格式:标号: DB x1, x2, xn 功能:将8位数据(或8位数据组)x1, x2, xn顺序存放在从 当前程序存储器地址开始的存储单元中。xi可以是8位数据、 ASCII码、表达式,也可以是括在单引号内的字符串。两个数据 之间用逗号“,”分隔。 xi为数值常数时,取值范围为00HFFH。xi为ASCII码时,要 使用单引号,以示区别。xi为字符串常数时,其长度不应超 过80个字符。 例如:DB -2,-4,-6,10,11,17 把6个数转换为十六进制表示(即FEH,0FCH,0FAH, 0AH,0BH,11H),并连续存放在6个程序存储单元中 例如:存放数码管显示的十六进制数的字形码,可使用 多条DB命令定义: (5)定义双字节伪指令DW 格式:标号: DW x1, x2, xn 功能:将双字节数据或双字节数据组顺序存放在从标号指定 地址单元开始的存储单元中。其中,xi为16位数值常数,占两个 存储单元,先存高8位(存入低位地址单元中),后存低8位(存 入高位地址单元中)。 例如: 注意: DB和DW定义的数表,数的个数不得超过80个。 如数据的数目较多时,可使用多个定义命令 一般以DB来定义数据,以DW来定义地址 (6)预留存储空间伪指令DS 格式:标号: DS n 功能:从标号指定地址单元开始,预留n个存储单元,汇编时 不对这些存储单元赋值。n可以是数据,也可以是表达式。 (7)定义位地址符号伪指令BIT 格式:字符名称x BIT 位地址n 功能:将位地址n的值赋予字符名称x。程序中凡出现该字符 名称x就代表该位地址。位地址n可以是绝对地址,也可以是符 号地址。 AQ BIT P1.0 (8)数据地址赋值伪指令DATA 格式:字符名称x DATA 表达式n 功能:把表达式n的值赋值给左边的字符名称x。n可以是数 据或地址,也可以是包含所定义的“字符名称x”在内的表达 式,但不能是汇编符号。 DATA与EQU的主要区别是:EQU定义的“字符名称”必须先 定义后使用,而DATA定义的“字符名称”没有这种限制。所 以,DATA伪指令通常用在源程序的开头或末尾。 4.2.1 手工编程和汇编 4.2.2 机器编辑和交叉汇编 机器编辑:借助与PC机或开发器进行程序设计.其 扩展名为*.asm 交叉汇编:借助PC机运行汇编程序将汇编语言转 换成单片机能识别的机器码过程. 4.2 单片机汇编语言源程序的编辑 和汇编 4.3 单片机汇编语言程序设计 设计步骤 1、拟定设计任务书 2、建立数学模型 3、确定算法 4、分配内存单元,编制程序流程图 5、编制源程序 6、上机调试及程序优化 单片机汇编语言程序的基本结构形式 3种形式 顺序结构 分支结构 循环结构 4.3.1 顺序程序 顺序程序是最简单的程序结构,在顺序程序中既无 分支、循环,也不调用子程序,程序执行时一条一条地 按顺序执行指令。 例4.3.1 将片内RAM 30H单元中的两位 压缩BCD码转换成二进制数送到片内 RAM 40H单元中.(P63) ORG 1000H START:MOV A, 30H ; 取两位BCD压缩码a1a0送A ANL A, #0F0H ; 取高4位BCD码a1 SWAP A ; 高4位与低4位换位 MOV B, #0AH ; 将二进制数10送入B MUL AB ; 将10a1送入A中 MOV R0, A ; 结果送入R0中保存 MOV A, 30H ; 再取两位BCD压缩码a1a0送A ANL A, #0FH ; 取低4位BCD码a0 ADD A, R0 ; 求和10a1+ a0 MOV 40H, A ; 结果送入40H保存 SJMP $ ; 程序执行完,“原地踏步” END 例4.3.2 将内部RAM中20H单元的压缩BCD码拆开,转换成 相应的ASC码,存入21H、22H,高位存22H.(P64) ORG 1000H START:MOVA,20H ; 取压缩BCD码 ANLA,#0FH ; 取低位BCD码 ADD A,#30H ; 转换为低位ASCII码 MOV21H,A ; 保存低位ASCII码 MOVA,20H ; 重新取压缩BCD码 ANLA,#0F0H ; 分离高位BCD码 SWAPA ; 得到高位BCD码 ADD A,#30H ; 转换为高位ASCII码 MOV22H, A ; 保存高位ASCII码 SJMP$ END 补充举例:三字节无符号数相加,其中被加数在内部 RAM的50H、51H和52H单元中;加数在内部RAM的53H 、54H和55H单元中;要求把相加之和存放在50H、51H 和52H单元中进位存放在位寻址区的20H单元最低位中( 即20H.0)。 分析: 除最低字节可以使用ADD指令之外,其它字节 相加时要把低字节的进位考虑进去,因此使用ADDC指令 . MOV 00H,C #20H 4.3.2 分支程序设计 分支程序有三种形式( 见P64,图4.3.2) 一、单分支 二、双分支 三、多分支 分支程序设计要点: 1、先建立可供条件转移指令测试的条件 2、选用合适的条件转移指令 3、在转移的目的地址处设定标号 分支程序是通过转移指令实现的 一、单分支程序 使用条件转移指令实现,即根据条件对程序 的执行进行判断,满足条件则进行程序转移,否 则程序顺利执行。 可实现单分支程序转移的指令有: JZ、JNZ、CJNE、DJNZ等 还有以位状态作为条件进行程序分支的指令: JC、JNC、JB、JNB和JBC等 (1)单分支结构举例 例4.3.3 求符号函数的值。已知片内RAM的40H单元 内有一自变量X,编制程序按如下条件求函数Y的值, 并将其存入片内RAM的41H单元中。见P65 1 X0 0 X=0 -1 X0AH。 根据这个关系可以编出转换程序如下,程序以R
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工程环保培训
- 儿科护理复习试题及答案
- 2025年景德镇市高三语文三模考试卷附答案解析
- 读书节表彰大会校长讲话:读书节见分晓这些同学因读书被“点赞”
- 2025合作经营合同协议范本
- 各种常见腰痛病
- 同学会策划方案
- 核桃褐斑病及研究
- 2025关于二手房屋买卖合同
- 2025租房转租协议合同样本
- 公司安环部绩效考核实施管理方法
- 建筑施工现场安全培训课件
- 浴室租赁协议(3篇)
- pvc雨水管施工方案
- 建筑施工升降机安装使用拆卸安全技术规程
- 资产评估常用数据与参数手册
- 国家开放大学《中国现代文学专题》形考任务1-4参考答案
- 2023年某路桥工程有限公司生产安全事故综合应急预案
- 中石油职称俄语
- 棱柱棱锥棱台的表面积和体积课件-高一下学期数学人教A版
- 2023年中国邮政的招聘笔试参考题库附带答案详解
评论
0/150
提交评论