单片机四c单片机汇编语言程序设计

上传人:乐*** 文档编号:117175613 上传时间:2019-11-18 格式:PPT 页数:65 大小:6.73MB
返回 下载 相关 举报
单片机四c单片机汇编语言程序设计_第1页
第1页 / 共65页
单片机四c单片机汇编语言程序设计_第2页
第2页 / 共65页
单片机四c单片机汇编语言程序设计_第3页
第3页 / 共65页
单片机四c单片机汇编语言程序设计_第4页
第4页 / 共65页
单片机四c单片机汇编语言程序设计_第5页
第5页 / 共65页
点击查看更多>>
资源描述

《单片机四c单片机汇编语言程序设计》由会员分享,可在线阅读,更多相关《单片机四c单片机汇编语言程序设计(65页珍藏版)》请在金锄头文库上搜索。

1、第四章 汇编语言程序设计 高级语言如 C+ 汇编语言如 MCS-51指令 汇编 目标文件 按照语法格式 编写源程序 *.ASM *.C 按照语法格式 将源程序翻译 成机器代码 计算机识别的 二进制代码 *.OBJ 编译 目标文件 本章结构 4.1 单片机程序设计语言概述 4.5 单片机汇编语言伪指令 4.4 汇编语言编辑和汇编 4.2 汇编语言程序的基本结构形式 顺序程序结构 分支程序结构 循环程序结构 4.3 汇编语言程序设计举例 一、 程序设计语言及语言处理程序 程序设计语言分:机器语言、汇编语言和中高级语言 1.机器语言:(上KEIL仿真器,看反汇编界面) 硬件识别,二进制,无需翻译、直

2、接执行,面向机器; 速度快,效率高,难以辨认和记忆,易错,难修改。 4.14.1 概述概述 地址 机器码源程序 ORG 2000H 2000H 78 30 MAIN: MOV R0,#30H 2002H E6 MOV A,R0 2.汇编语言: 由字母,数字符号组成,翻译成机器语言再由CPU执行 ,面向机器,编译后执行速度接近机器语言,易读, 不易错,但必须熟悉指令系统,移植性差; 程序精细、具体,结构紧凑,运行时间精确,高效。 运算量大,实时性要求高时常用汇编。 地址 机器码源程序 ORG 2000H 2000H 78 30 MAIN: MOV R0,#30H 2002H E6 MOV A,R

3、0 3.中高级语言: 面向过程和面向对象。参照数学语言又类似日常会话 语言。 高级语言中,一条高级语言指令,代替几上百条汇 编指令。 直观,易学,便于移植(由编译器负责),也需经过编 译、解释成机器代码后执行。C、BASIC、C 4.1.3、汇编语言特点及其格式 P77 1、汇编语言的语句格式 标 号:操作码 操作数 ;注释 BEGIN:MOV A,#50H ;将立即数50H给A 1)标 号:用户定义的符号地址,便于查询和修改程 序,在汇编时自动生成与该语句翻译成机器 码存放在ROM单元地址相对应的16bit数。 ORG0000H ;伪指令定义起始地址 LJMPMAIN ;跳转至主程序 ORG

4、0030H MAIN: MOV A,#0F0H ;主程序入口 4.1.3、汇编语言特点及其格式 P77 1、汇编语言的语句格式 标 号:操作码 操作数 ;注释 BEGIN:MOV A,#50H ;将立即数50H给A 1) 标号命名规定: 18个ASCII码,首字符为字母; 不可用已经定义的符号作为标号,如助记符等; 标号后跟着冒号“:”; 同标号在一个程序只能定义一次; 标号可以省略不用,指令前是否有标号取决于本程序 其他语句是否要访问此指令。 4.1.3、汇编语言特点及其格式 P77 1、汇编语言的语句格式 标 号:操作码 操作数 ;注释 BEGIN:MOV A,#50H ;将立即数50H给

5、A 1) 标号举例: 错误的标号 正确的标号 1BT:LooP2: BEGIN STAB: TB+5T:TAB_CE: ADD: Q: 2) 操作码:规定指令所执行的操作,汇编指令中不可 缺少的部分,在汇编时自动生成机器码。 4.1.3、汇编语言特点及其格式 P77 1、汇编语言的语句格式 标 号:操作码 操作数 ;注释 BEGIN:MOV A,#50H ;将立即数50H给A 3)操作数:是参加运算的数据或者数据的地址。通常有单操作数 、双操作数和无操作数三种情况。如果是双操作数,则操作数 之间,要以逗号隔开。 (1)十六进制、二进制和十进制形式的操作数表示(注意后缀) 十六进制,后缀“H”

6、;二进制,后缀“B”;十进制,后 缀“D”,也可省略。 若十六进制的操作数以字符AF中的某个开头时,则需在 它前面加一个 “0”,以便在汇编时把它和字符AF区别开来。 4.1.3、汇编语言特点及其格式 P77 1、汇编语言的语句格式 标 号:操作码 操作数 ;注释 BEGIN:MOV A,#50H ;将立即数50H给A 3)操作数: (2)工作寄存器和特殊功能寄存器的表示 采用工作寄存器和特殊功能寄存器的代号来表示,也可用其地 址来表示。 例如,累加器可用A(或ACC)表示。也可用0E0H来表示,0E0H 为累加器A的地址。 (3)美元符号$的使用 用于表示该转移指令操作码所在的地址。例如,如

7、下指令 : JNB F0, $ 与如下指令是等价的: HERE:JNB F0,HERE 4.1.3、汇编语言特点及其格式 P77 1、汇编语言的语句格式 标 号:操作码 操作数 ;注释 BEGIN:MOV A,#50H ;将立即数50H给A 4)注 释:解释说明,增加可读性,汇编时不产生任 何机器码 5)分界符: 冒号“:”:用于标号之后。 空格“ ”:用于操作码和操作数之间。 逗号“,”:用于操作数之间。 分号“;”:用于注释之前。 一、 汇编语言语句的种类和格式 汇编语言语句包含两种基本类型: 指令语句 和 伪指令语句 1.指令语句: (前面已经讲解) 每一条指令语句在汇编时都产生一个指令

8、代码机器代码 2.伪指令语句: (后面讲解) 是为汇编服务的。在汇编时没有机器代码与之对应。 4.54.5 单片机汇编语言伪指令单片机汇编语言伪指令 P93P93页页 地址 机器码源程序 无代码对应 ORG 2000H 2000H 78 30 MAIN: MOV R0,#30H 2002H E6 MOV A,R0 二、汇编语言伪指令 1、ORG:起始伪指令Origin,指明程序和数据块起始 地址。 指令地址 机器码 源程序 ORG 2000H 2000H 78 30 MAIN:MOV R0,#30H 2002H E6 MOV A,R0 ORG 3000H 3000H 23 DB 23H,100

9、,A 3001H 64 3002H 41 2、END 汇编结束伪指令。 P94 例:START: END 3、EQU 赋值伪指令。为标号或标识符赋值Equate X1 EQU 2000H X2 EQU 0FH MAIN:MOV DPTR,#X1 ADD A,#X2 P95 4、 DB 定义字节伪指令。Define Byte 8bit 例 : DB 12H,100,A 存储: 00010010,01100100,01000001 5、 DW 定义双字节伪指令。Define Word 16bit 例 : DW 2030H,8CH ,“AB” 存储:00100000 00110000 0000000

10、0 10001100 01000001 01000010 P95 6、DS 定义存储区伪指令 DEFINE STORAGE 从指定地址开始保留指定数目的字节单元 备用。 7、BIT 位定义伪指令 把一个可位寻址的位单元赋值给所规定的 字符名称 一、 什么叫编辑和汇编 1.编辑:编写程序的过程叫编辑,编写完的程序存成的 文件叫源文件。用汇编语言编写的程序,叫汇编语言源 程序,存成“.ASM”类型的文件汇编源文件。 2.汇编:汇编语言源程序“翻译”成机器代码的过程, 称为“汇编” 。 需要汇编的原因汇编语言无法被单片机识别并 运行。 4.44.4 汇编语言源程序的汇编语言源程序的 编辑和汇编编辑和

11、汇编 P91P91 二、 手工汇编 人工查表翻译指令。但遇到的相对转移指令的偏移量的 计算,要根据转移的目标地址计算偏移量,不但麻烦, 且容易出错。 4.44.4 汇编语言源程序的汇编语言源程序的 编辑和汇编编辑和汇编 P91P91 用编辑软件进行源程序的编辑。编辑完成后,生成一个ASCII 码文件,扩展名为“.ASM”。然后在微计算机上运行汇编程序, 把汇编语言源程序翻译成机器代码。 交叉汇编汇编后的机器代码是在另一台计算机(这里是单片 机)上运行。 三、 机器汇编与交叉汇编 四、 单片机软件设计 MCS-51单片机的应用程序的完成,应经过三个步骤; (1)在微计算机上,运行编辑程序进行源程

12、序的输入和编辑; (2)对源程序进行交叉汇编得到机器代码; (3)通过微计算机的串行口(或并行口)把机器代码传送到用 户样机(或在线仿真器)进行程序的调试和运行。 4.44.4 汇编语言源程序的汇编语言源程序的 编辑和汇编编辑和汇编 P91P91 单片机软件设计三步曲:单片机软件设计三步曲: 机器编辑机器编辑 交叉汇编交叉汇编 串行传送串行传送 (过程图见教材(过程图见教材9292页)页) 单片机的开发过程 设计硬件 源代码烧入单片机 软件编程 软件仿真调试 插入单片机脱机工作 模数电路/单片机硬件 MCS51汇编语言/C 计算机/MEDWIN环境 计算机/烧写器 整机调试/测试 程序设计基本

13、方法 在能完成规定的功能任务基础上还要求: 执行速度快、占用内存少、条理清晰、 阅读方便、便于移植、巧妙而实用。 步骤: 1分析问题、确定算法、分配存储单元 2画出程序流程图 3编写汇编语言源程序 4汇编并调试程序 流程图符号和说明: 4.2 汇编程序的基本结构 顺序程序结构 分支程序结构 单分支程序结构 多分支程序结构 循环程序结构 另外,再加上广泛使用的子程序和中断服 务子程序。 过程A过程B 是 否 入口 出口 条件满足? P2 入口 出口 P1 P3 过程 是 否 入口 出口 条件满足? (a) 顺序结构(b) 分支结构(c) 循环结构 汇编程序基本结构流程 4.2.1 顺序程序结构

14、是汇编语言程序的最简单也是最基本的程序结 构。程序执行时一条接一条地按顺序执行指令, 无分支、循环以及调用子程序。 ORG 0000H LJMP MAIN ORG0030H MAIN:MOV A , #30H ADDA , #58H MOV 30H , A SJMP$ 顺序程序结构分析: 找出关键的执行实际功能操作的指令, 然后将其前面与该指令相关的指令规类为 该指令的前期配置指令来分析。需要对指 令占用的资源和操作的影响有全局的把握 。 MOV R0,#52HDEC R1MOV A,R0 MOV R1,#55HMOV A,R0ADDC A,R1 MOV A,R0ADDC A,R1MOV R0

15、,A ADD A,R1MOV R0,AMOV 20H,C MOV R0,ADEC R0 DEC R0DEC R1 4.2.2 分支程序结构 程序分支是通过转移指令实现的,也称 为选择结构。可分为单分支和多分支两类。 单分支程序结构,通过条件转移指令实现, 即根据条件对程序的执行进行判断、满足条 件则进行程序转移,不满足条件就顺序执行 程序。可用指令JZ、JNZ、CJNE、DJNZ; JC、JNC、JB、JNB、JBC。 图4-2-2 分支程序结构流程图 多分支程序是首先把分支程序按序号排列, 然后按序号值进行转移。 指令:JMP A+DPTR 条件满足? A Y N (a) 条件满足? AB N Y (b) (c) A0A1An K=0 K=1 K=n K=? 1、单分支程序结构 在MCS-51指令系统中,通过条件判断实现单分支程序转 移的指令有:JZ、JNZ、CJNE、DJNZ等。此外还有以位状态 作为条件进行程序分支的指令,如JC

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件 > 高中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号