教学难点: 分支程序、散转程序与子程序的设计

Slides:



Advertisements
Similar presentations
第四章 汇编语言程序设计 程序设计概述 一、程序设计步骤 二、程序设计方法 三、汇编语言源程序的格式
Advertisements

第5章 中断系统 5.1 中断的概念 5.2 MCS-51单片机的中断流程 5.3 MCS-51的中断响应条件和中断处理
本章内容: 中断的概念 MCS-51单片机中断系统 外部事件中断及应用
第四章 指令系统及汇编语言程序设计.
8051 指令.
第4章 MCS-51程序设计 4.1 汇编语言的格式与伪指令 4.2 汇编语言程序设计步骤 4.3 查表程序设计 4.4 循环程序设计
第四章 汇编语言程序设计 §4-1 程序设计语言 §4-2 汇编语言源程序格式 §4-3 伪指令 §4-4 汇编语言程序设计基础.
第四章 指令系统及汇编语言程序设计.
本章分为四节,主要介绍: 4.1 程序编制的方法和技巧 4.2 源程序的编辑和汇编 4.3 基本程序结构 4.4 常用程序举例.
项目2 2个LED发光二极管控制 知识与能力目标 熟悉单片机的I/O口功能与特性。
得技通电子 问题 1 右何者非為假指令 (1) XRL (2) EQU (3) MACRO (4) ORG.
本章小结 C51单片机指令系统概述 C51单片机寻址方式 C51单片机指令系统
单片机原理与应用.
第9章 串行扩展技术 (课时:6学时).
第9章 数模转换器与模数转换器 本章学习目标 了解数模转换器的工作原理及性能指标 掌握模数转换器的应用 掌握数模转换器的应用.
第2章 MCS-51单片机指令系统与汇编语言程序设计
報告者:朱耿育 紀翔舜 組員:詹以群 張永傑 指導老師:梁新潁
复 习 一. 计算机中的数和编码 1. 2,10,16进制数及其之间的转换(整数) 按权展开,除x取余 2
第二部分 微机原理 第4章 汇编语言 程序设计 主讲教师:喻红.
单片机应用技术 项目一 循环彩灯装置 第6讲 指令功能及汇编语言程序设计(一) 《单片机应用技术》精品课程组 湖北职业技术学院机电工程系.
本章内容: 中断的概念 MCS-51单片机中断系统 外部事件中断及应用
6.3 定时器/计数器的应用 初始化 初始化的内容如下:
第8章 模拟接口 8.1 模拟接口概述 8.2 DAC及其接口 8.3 ADC及其接口.
第二部分 微机原理 第3章 MCS-51的 指令系统 主讲教师:喻红.
一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置. 一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置.
单片机应用技术 项目二 电子打铃装置 第1讲 指令功能及汇编语言 程序设计(二) 《单片机应用技术》精品课程组 湖北职业技术学院机电工程系.
第3章 AT89C51指令系统 3.1基本概念内部结构和引脚功能 指令、指令系统、机器代码
单片机原理及应用 MCS-51系列单片机的基本硬件结构 MCS-51指令系统 MCS-51单片机的系统扩展与应用.
走进编程 程序的顺序结构(二).
第2章 单片机的结构原理与 简单应用 (课时:10学时).
第八章 MCS-51与数码显示器和键盘的接口 一、MCS-51与数码显示器接口 数码显示器是单片机应用产品中最常用的廉价的输 出设备,它由8个发光二极管按一定规律排列而成, 当某一发光二极管导通时,则会被点亮,控制不同 组合的二极管导通,就能显示出各种字符。 1.显示器的结构.
本 章 重 点 单片机的简单I/O扩展 8255A可编程并口芯片 8279可编程键盘/显示器接口芯片 单片机键盘接口技术
单片机原理 单 片 机 单片机接口技术 单片机应用技术.
第三章 指令系统.
第3章 指令系统及程序设计举例 3.1 指令格式与寻址方式 一、指令格式 1. 指令 操作码 目标操作数,源操作数
第四章 汇编语言程序设计.
逆向工程-汇编语言
第10章 综合实训 课题一 水温控制系统设计 一、实训目的 二、课题要求 熟悉常用温度传感器AD590的特性及接口电路的设计方法;
一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置. 一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置.
6.1 输入/输出 6.2 CPU与外设数据传送方式 6. 3 MCS-51中断系统 6. 4 中断应用举例
单元五 MCS-51单片机内部资源 5.1 任务九 单片机计数并显示 5.2 任务十 单片机流水灯控制 5.3 任务十一 两台单片机数据互传
本 章 重 点 单片机的结构特点 单片机的存储器特点 I/O端口的特点 CPU时序 课时安排:3个课时.
第四章 指令系统及汇编语言程序设计.
第3章 MCS-51单片机指令系统 3.1 指令概述 3.2 寻址方式 3.3 MCS-51系列单片机的指令系统.
第4章 中断技术 一个完整的微机系统是由硬件和软件共同构成的。微机系统的硬件有CPU、存储器和I/O口,外设组成。CPU与存储器之间的信息交换比较简单,而CPU与外设之间进行信息交换之前必须确定外设是否准备好,即选择I/O传送方式。I/O传送方式有4种:无条件、查询、中断和DMA。本章学习中断传送方式的有关内容。
数码管数字时钟电路的设计 1. 系统硬件电路的设计
C语言程序设计 主讲教师:陆幼利.
第4章 汇编语言程序设计 (课时:12学时).
第3章 MCS-51指令系统 介绍MCS—51系列单片机的寻址方式 介绍MCS—51系列单片机的指令系统
第4章 80C51系列指令系统 教学目的:熟悉80C51系列单片机的寻址方式及 每一种寻址方式对应的寻址空间;掌 握每一条指令功能。
4.4 实用程序举例 延时 在程序设计过程中,有时需要程序“等待”一会儿再去处理某些事情,称之为延时。计算机延时实际就是让计算机反复执行一些空操作,这样就能起到拖延时间的作用。需要执行空操作次数的多少,取决于延时时间的长短。
本章内容 MCS-51单片机指令系统的格式 MCS-51单片机寻址方式 指令系统的分析
5-6 串列埠模式0輸出埠擴充實習.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月13日.
第九节 赋值运算符和赋值表达式.
任务五 学习、应用控制转移类指令 单片机应用技术 认知1 掌握无条件转移指令格式及应用
汽车单片机应用技术 学习情景1: 汽车空调系统的单片机控制 主讲:向楠.
单片机原理及应用 实践部分 主讲人:刘 强 四川工商学院单片机教学团队 单片机原理及应用 实践部分 主讲人:刘 强
College of Computer Science & Technology
四、手工汇编 完成汇编的方法有两种:手工汇编和汇编程序汇编 1.手工汇编步骤 A
单片机原理与应用.
3. 逻辑运算指令 A、简单逻辑操作指令 CLR A. (不影响CY、AC、 OV标志) CPL A
4.1 计算机语言概述 机器语言 机器语言就是用二进制编码表示每条指令。因为计算机只能识别二进制数,所以计算机能够直接执行用机器语言编出的机器码程序。不同种类的计算机,由于其内部结构不完全相同,它的机器码指令也不一定相同。
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
循环程序设计 在程序中包含重复执行的程序段称为循环程序设计。循环程序可以使程序结构性强、可读性好,从而大大提高了程序质量。
4.3 汇编语言程序设计 顺序程序设计 顺序程序设计是最基本的程序设计。它是按照指令排列的先后顺序依次执行,每条指令都必须执行,且只执行一遍。顺序程序设计一般比较单一、简单,常常作为复杂程序的一部分。
单片机应用技术 (C语言版) 第3章 MCS-51指令系统及 汇编程序设计
第二章 MCS-51单片机程序设计 第一章 8086程序设计 第三章 微机基本系统的设计 第四章 存贮器与接口 第五章 并行接口
第4章 MCS-51汇编语言程序设计 教学基本要求: (1)、了解MCS-51汇编语言程序设计的特点;
第1章 微型计算机基础.
Presentation transcript:

教学难点: 分支程序、散转程序与子程序的设计 第5章 汇编语言程序设计 教学目的:熟悉80C51系列单片机的汇编语言,能够熟练编写汇编语言源程序。 教学重点:常用汇编语言程序设计方法。 教学难点: 分支程序、散转程序与子程序的设计

5. 1 概述 5.1.1 程序设计语言 1. 机器语言 2. 汇编语言 图5-1 源程序、汇编程序、目的程序之间关系示意图 3. 高级语言

5.1.1 汇编语言规范 汇编语句格式与常用伪指令 1. 汇编语句格式 [标号:][指令助记符] [操作数][;注释] [标号:][指令助记符] [操作数][;注释] 不同仿真器提供的汇编环境对标号有不同的要求。但一般均应符合如下要求: 指令助记符、寄存器名、伪指令记忆符等不能作标号; 同一标号在一个独立程序中只能定义一次; 标号由1~8个ASCII字符组成,第一个字符必须是字母。

2. 80C51汇编程序设计中常用的伪指令 (1)ORG 汇编起始指令 规定目标程序的起始地址,格式如下: 标号 操作码 操作数 规定目标程序的起始地址,格式如下: 标号 操作码 操作数 ORG 表达式(exp) (2) EQU 赋值指令 把操作数段中的地址或数据赋值给标号,格式如下: 标号 操作码 操作数 字符名称 EQU 数或汇编符号 例1 AA EQU R1 ;R1与AA等值 则 MOV A, AA 指令与 MOV A,R1指令结果相同。

(3) DB定义字节指令 定义程序存储器中存放的8位常数表,格式如下: 操作码 操作数 DB 字节常数或ASCII字符 例2 ORG 1000H DB 76H,73,‘C’,‘B’ ;在表示ASCII字 符时要用‘ ’括号 DB OACH 则 (1000H)=76H (1001H)=49H (1002H)=43H (1003H)=42H (1004H)=0ACH

(4) DW 定义字指令 定义程序存储器中存放的16位常数表 格式 DW<16位数据表>。 例3 ORG 2200H DW 1246H,7BH,10 则 (2200H)=12H (2201H)=46H (2202H)=00 (2203H)=7BH (2204H)=00 (2205H)=0AH (5) BIT 定义位地址指令 格式 <字符名称>BIT<位地址> 例4 ABC BIT P1.0 Q4 BIT P2.2 则汇编后,位地址P1.0,P1.2分别赋给变量ABC和Q4。 (6) END 汇编结束指令

5.2 顺序与循环程序设计 5.2.1 顺序程序设计 例1 将20H单元的两个BCD码拆开并变成ASCII码,存入21H、22H单元。注意ASCII码0~9为30H~39H。 解:采用先把20H中低4位BCD码交换出来加以转换、存放,然后再把高4位BCD码交换至低4位加以转换、存放。

源程序如下: 地址 机器码 周期数 源程序 ORG 0000H 0000H 02 02 00 3 LJMP MAIN MAIN: 200H 78 22 1 MOV R0,#22 202H 76 00 1 MOV @R0,#0 204H E5 20 1 MOV A,20H 206H D6 1 XCHD A, @R0 207H 43 22 30 2 ORL 22H,#30H 20AH C4 1 SWAP A 20BH 44 30 1 ORL A,#30H 20DH F5 21 1 MOV 21H,A 20FH 80 FE 2 SJMP $ END

5.2.2 循环程序设计 例3 已知:80C51单片机使用的晶振为6MHz,要求设计一个软件延时程序,延时时间为10ms。 5.2.2 循环程序设计 例3 已知:80C51单片机使用的晶振为6MHz,要求设计一个软件延时程序,延时时间为10ms。 解:延时程序的延时时间主要与两个因素有关,一个是所用晶振,一个是延时程序中的循环次数。一旦晶振确定之后,则主要是如何设计与计算需给定的延时循环次数。在本题中已知晶振为6MHz,则可知一个机器周期为2s,可预计采用单重循环是有可能实现1ms的延时的。现根据题意编写源程序如下:

周期数 1 MOV R0,#0AH ;毫秒数R0 1 DL2: MOV R1,#MT ;1ms延时的预 定值MTR1 1 DL1: NOP 1 NOP 2 DJNZ R1,DL1 ;lms延时循环 2 DJNZ R0,DL2 ;毫秒数减1,不等于0,继续循环,等于0结束

例4 从22H单元开始有一个无符号数据块,其长度在20H单元。求出数据块中最大值,并存入21H单元 ORG 200H CLR A ;清A作为初始最大值 MOV R2,20H ;数据个数初值 MOV R1,#22H ;数据块首地址初值 LP:CLR C ;清进位 SUBB A,@R1 ;最大值减队列中数 JNC NEXT ;小于最大值继续 SJMP NEXT1

SUBB A,@R1 ;最大值减队列中数 JNC NEXT ;小于最大值继续 SJMP NEXT1 MOV A, @R1 ;大于最大值,则用此值代换 NEXT:ADD A, @R1 ;小于最大值,则恢复 NEXT1:INC R1 ;修改地址指针 DJNZ R2,LP ;依次重复比较,直至R2=0 MOV 21H ,A ;最大值存入21H单元

5.3 分支程序设计 5.3.1 分支程序设计综述 分支程序应用要点是正确使用转移指令,通常有如下3种指令。 1. 无条件转移 5.3 分支程序设计 5.3.1 分支程序设计综述 分支程序应用要点是正确使用转移指令,通常有如下3种指令。 1. 无条件转移 2. 条件转移 3. 散转

例3 设5AH单元中有一变量X,请编写计算下述函数式的程序,结果存入5BH单元 5.3.2 无条件/条件转移程序 例3 设5AH单元中有一变量X,请编写计算下述函数式的程序,结果存入5BH单元 Y= 3X , X < 10 Y= 2X +10 , 10= <X= <15 Y= 40 , X >15

ORG 200H MOV A,5AH ADD A,5AH ;2X→A MOV R1,A MOV A,5AH ;重新把X装入A CJNE A,#10,L1 L1:JC L2 ;X<10转L2 MOV R0,#40 ;先假设X>15 CJNE A,#10H,L3 ;与16比 L3:JNC L4 ;X>15转L4 MOV A,R1 ADD A,#10 ;10≤X≤15,Y=2X+10

MOV R0,A SJMP L4 L2: MOV A,R1 ADD A,5AH ;X<10,Y=3X L4 : MOV 5BH,R0 ;存结果 SJMP $ END

5.3.3 散转程序设计 例2 根据R3的内容,转向各个操作程序。 R3=0, 转入OPR0 R3=1, 转入OPR1 ………. R3=n, 转入OPRn 解:程序清单如下。 MOV DPTR,#TAB1 ;跳转表首地址送数据指针 MOV A,R3 ;R3×2 A(修正变址值) ADD A,R3 JNC NOAD ;判有否进位 INC DPH ;有进位则加到高字节地址 NOAD: JMP @A+DPTR ;转向形成的散转地址入口 TAB1: AJMP OPR0 ;转移到OPR0 AJMP OPR1 …….. AJMP OPRn

5.4 查表程序设计 5.4.1 查表程序综述 为了实现查表功能,在80C51汇编语言中专门设置了两条查表指令: MOVC A, @A+DPTR MOVC A, @A+PC 这2条指令特点不同,在应用时要注意区别。 为了便于查表,要求表中的数或符号按照便于查找的次序排列,并将它存放在从指定的首地址(或称基地址)开始的存储单元。

例1 设计一个将16进制数转换成ASCII码的子程序,设16进制数存放在R0的低4位,要求将转换后的ASCII码送回R0。 ORG 30H MOV A,R0 ANL A,#0FH ; 保留低4位 ADD A,#2 ;变址调整 MOVC A,@A+PC;查表获取ASCII码值 MOV R0,A RET TAB:DB 30H,31H,32H,33H,34H,35H DB 36H,37H,38H,39H,41H,42H,43H,44H,45H,46H

5.5 子程序设计 5.5.1 子程序结构与设计注意事项 子程序结构 编写子程序时的注意事项

5.5.2 子程序设计 例1 用程序实现c =a2+b2。设a、b均小于10。a存在31H单元中,b存在32H单元,把c存入33H单元。 解:因本题二次用到平方值,所以在程序中采用把求平方的程序段编为子程序的方法。依题意编写主程序和子程序如下:

地址 机器码 源程序 ORG 200H 200 75 81 3F MOV SP,#3FH ;设堆栈指针 地址 机器码 源程序 ORG 200H 200 75 81 3F MOV SP,#3FH ;设堆栈指针 203 E5 31 MOV A,31H ;取a值 205 12 04 00 LCALL SQR ;求a2 208 F9 MOV R1,A ;a2值暂存R1 209 E5 32 MOV A,32H ;取b值 20B 12 04 00 LCALL SQR ;求b2 20E 29 ADD A,R1 ;求a2+b2 20F F5 33 MOV 33H,A ;存入33H

; 子程序 地址 机器码 源程序 ORG 400H 400 04 SQR: INC A 401 83 MOVC A,@A+PC 401 22 RET 403 1 4 9 16 TAB: DB 0,1, 4, 9,16 408 25 36 49 DB 25,36,49 40B 64,81 DB 64,81

5.6 综合编程举例 例1 将R0所指出单元中的ASCII码转换成十六进制数,并把结果仍存于原单元中. 解:对于小于、等于 9的数,ASCII代码减去30H得一位十六进制数,对于大于9的ASCII代码减去37H,则恰好是“0AH~0FH”的结果。 编程如下: HEX: MOV A,@R0 ;取操作数 CLR C SUBB A,#30H ;0~9的转换 MOV @R0,A ;暂存结果 SUBB A,#0AH ;结果是否大于9 JC SB2 ;小于、等于9,则 返回 XCH A,@R0 SUBB A,#07H ;大于9,则减37H MOV @R0,A ;存结果 SB2: RET

例2 P1.0端口输出1kHZ和2kHZ的变频音调,每隔1S交替变换一次。 DLV:MOV R2,#08 ; 1kHZ的持续时间 DLV1:MOV R3 ,#0FAH DLV2:CPL P1.0 ; 输出1kHZ方波 LCALL D0.5ms ; 延时D0.5ms,省略 DJNZ R3,DLV2 DJNZ R2,DLV1 ; 持续1s DLV3: MOV R3,#0FAH DLV4: CPL P1.0 ;输出2kHZ方波 LCALL D0.25ms DJNZ R3,DLV4 DJNZ R2,DLV3 ;持续1s SJMP DLV ; 反复循环