第二部分 微机原理 第4章 汇编语言 程序设计 主讲教师:喻红.

Slides:



Advertisements
Similar presentations
第7章 AT89S51单片机的 串行口 1.
Advertisements

本章内容: 中断的概念 MCS-51单片机中断系统 外部事件中断及应用
A B C D E F 5-2 七段數字顯示控制實習 Input 0H 1H 2H 3H 4H 5H 6H 7H 8H 9H 0AH 0BH
5-3 8x8矩陣LED控制實習.
第四章 指令系统及汇编语言程序设计.
8051 指令.
第四章 指令系统及汇编语言程序设计.
本章分为四节,主要介绍: 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.1 可编程并行输入/输出接口芯片8255A 9.2 可编程计数器/定时器 可编程串行输入/输出接口芯片8251A
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月26日.
第4章 智能仪器通信接口 4.1 GPIB通用接口总线 4.2 GPIB接口电路的设计 4.3 串行通信总线 4.4 串行通信接口电路的设计
第9章 串行扩展技术 (课时:6学时).
第9章 数模转换器与模数转换器 本章学习目标 了解数模转换器的工作原理及性能指标 掌握模数转换器的应用 掌握数模转换器的应用.
第2章 MCS-51单片机指令系统与汇编语言程序设计
報告者:朱耿育 紀翔舜 組員:詹以群 張永傑 指導老師:梁新潁
复 习 一. 计算机中的数和编码 1. 2,10,16进制数及其之间的转换(整数) 按权展开,除x取余 2
单片机应用技术 项目一 循环彩灯装置 第6讲 指令功能及汇编语言程序设计(一) 《单片机应用技术》精品课程组 湖北职业技术学院机电工程系.
本章内容: 中断的概念 MCS-51单片机中断系统 外部事件中断及应用
第8章 模拟接口 8.1 模拟接口概述 8.2 DAC及其接口 8.3 ADC及其接口.
第二部分 微机原理 第3章 MCS-51的 指令系统 主讲教师:喻红.
一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置. 一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置.
第14章 单片机应用系统抗干扰 与可靠性设计 1.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年12月10日.
第6章 MCS - 51单片机内部定时器/ 计数器 及串行接口 6.1 定时器/计数器的结构及工作原理 6.2 方式和控制寄存器
單晶片微電腦控制實習 使用計時中斷作走馬燈 計時器的基礎實習 國立大甲高工 電機科 2018年11月21日
本章分为三节,主要介绍: 6.1 计算机串行通信基础 C51的串行口 6.3 单片机串行口应用举例.
第3章 AT89C51指令系统 3.1基本概念内部结构和引脚功能 指令、指令系统、机器代码
单片机原理及应用 MCS-51系列单片机的基本硬件结构 MCS-51指令系统 MCS-51单片机的系统扩展与应用.
A B C D E F 5-2 七段數字顯示控制實習 Input 0H 1H 2H 3H 4H 5H 6H 7H 8H 9H 0AH 0BH
4.A/D与D/A转换器 1).DAC0832与MCS-51接口
第八章 MCS-51与数码显示器和键盘的接口 一、MCS-51与数码显示器接口 数码显示器是单片机应用产品中最常用的廉价的输 出设备,它由8个发光二极管按一定规律排列而成, 当某一发光二极管导通时,则会被点亮,控制不同 组合的二极管导通,就能显示出各种字符。 1.显示器的结构.
本 章 重 点 单片机的简单I/O扩展 8255A可编程并口芯片 8279可编程键盘/显示器接口芯片 单片机键盘接口技术
单片机原理 单 片 机 单片机接口技术 单片机应用技术.
第三章 指令系统.
第3章 指令系统及程序设计举例 3.1 指令格式与寻址方式 一、指令格式 1. 指令 操作码 目标操作数,源操作数
计算机原理及系统结构 第十八讲 主讲教师:赵宏伟                 学时:64.
第10章 综合实训 课题一 水温控制系统设计 一、实训目的 二、课题要求 熟悉常用温度传感器AD590的特性及接口电路的设计方法;
第8章 MCS-51串行口 8.1 串行口及其通信方式 8.2 IBM-PC系列机与 单片机 的通信技术.
一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置. 一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置.
6.1 输入/输出 6.2 CPU与外设数据传送方式 6. 3 MCS-51中断系统 6. 4 中断应用举例
单元五 MCS-51单片机内部资源 5.1 任务九 单片机计数并显示 5.2 任务十 单片机流水灯控制 5.3 任务十一 两台单片机数据互传
第5章 循环与分支程序设计 学习目标: 了解并掌握循环程序的构造方法,尤其是对循环控制条件的设置以及可能出现的边界情况的考虑。掌握起泡排序算法这种多重循环程序设计中的常用方法。交换标志位的设置在此算法中更能提高效率。学会在数组排序算法中采用折半查找法来提高查找效率。学会使用跳跃表法实现CASE结构。
第四章 指令系统及汇编语言程序设计.
第4章 中断技术 一个完整的微机系统是由硬件和软件共同构成的。微机系统的硬件有CPU、存储器和I/O口,外设组成。CPU与存储器之间的信息交换比较简单,而CPU与外设之间进行信息交换之前必须确定外设是否准备好,即选择I/O传送方式。I/O传送方式有4种:无条件、查询、中断和DMA。本章学习中断传送方式的有关内容。
数码管数字时钟电路的设计 1. 系统硬件电路的设计
第3章 MCS-51指令系统 介绍MCS—51系列单片机的寻址方式 介绍MCS—51系列单片机的指令系统
第4章 80C51系列指令系统 教学目的:熟悉80C51系列单片机的寻址方式及 每一种寻址方式对应的寻址空间;掌 握每一条指令功能。
本章内容 MCS-51单片机指令系统的格式 MCS-51单片机寻址方式 指令系统的分析
5-6 串列埠模式0輸出埠擴充實習.
3.1 指令系统简介 一、几个概念 二、汇编语言指令格式 三、指令的分类 四、指令的符号说明 主讲:吴政江 下一页.
第三章 计算机系统的组成与工作原理.
汽车单片机应用技术 学习情景1: 汽车空调系统的单片机控制 主讲:向楠.
四、手工汇编 完成汇编的方法有两种:手工汇编和汇编程序汇编 1.手工汇编步骤 A
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月06日.
单片机原理与应用.
3. 逻辑运算指令 A、简单逻辑操作指令 CLR A. (不影响CY、AC、 OV标志) CPL A
单片机原理及应用 (C语言版) 第8章 单片机系统扩展
得技通电子 问题 1 右何者非為假指令 (1) XRL (2) EQU (3) MACRO (4) ORG.
简单芯片扩展I/O接口 8155可编程接口芯片及其使用 键盘及显示器接口设计 A/D和D/A转换接口技术
4.3 汇编语言程序设计 顺序程序设计 顺序程序设计是最基本的程序设计。它是按照指令排列的先后顺序依次执行,每条指令都必须执行,且只执行一遍。顺序程序设计一般比较单一、简单,常常作为复杂程序的一部分。
单片机应用技术 (C语言版) 第3章 MCS-51指令系统及 汇编程序设计
第二章 MCS-51单片机程序设计 第一章 8086程序设计 第三章 微机基本系统的设计 第四章 存贮器与接口 第五章 并行接口
微机原理与接口技术 第5章 汇编语言程序设计 西安邮电大学计算机学院 王 钰.
第4章 MCS-51汇编语言程序设计 教学基本要求: (1)、了解MCS-51汇编语言程序设计的特点;
第1章 微型计算机基础.
Presentation transcript:

第二部分 微机原理 第4章 汇编语言 程序设计 主讲教师:喻红

主要内容 汇编语言的基本概念 汇编语言程序方法

4.1 汇编语言的基本概念 一 、程序设计语言 (1)机器语言: 用二进制代码0和1表示指令和数据的最原始的程序设计语言。 (2)汇编语言: 4.1 汇编语言的基本概念 一 、程序设计语言 (1)机器语言: 用二进制代码0和1表示指令和数据的最原始的程序设计语言。 (2)汇编语言: 是一种符号语言。经过汇编后才能被计算机执行。 (3)高级语言: 是以接近于人的常用语言形式编写程序的语言。

一 、程序设计语言 目标程序 汇编语言源程序 汇编程序 源程序列表

二、汇编语言的语句结构 (1)汇编语言的指令类型 基本指令:指令系统中的指令,是机器能够执行的指令。 伪指令:汇编时用于控制汇编的指令,机器不能执行的指令。

(2)汇编语言的语句格式 标号: 操作码 操作数 ;注释 1.标号:将指令首字节的地址赋给标号;不能使用指令助记符等特殊意义的字符,同一程序中不可重复使用。 2.操作码:指令操作的性质和控制要求 3.操作数:操作的对象 4.注释:使程序具有可读性

三、伪指令 伪指令:是非执行指令,它只是在源程序进行汇编的过程中起某种控制作用。伪指令汇编后不产生目标代码,不影响程序的执行。 常用的伪指令:   ORG(Origin)、END;   EQU(Equate);   DB(Define Byte)、DW( Define Word)DS( Define Store)   BIT、DATA

1.ORG(Origin):设定程序或数据区的起始地址。 2.END:表示汇编语言源程序结束的伪指令。 3.EQU:赋值(或等值)指令。将地址或数据赋值给标号。 标号 EQU 数或汇编符号 ADDR EQU 1600H COUNT EQU R0 MOV DPTR,#ADDR MOV A,COUNT

4.DB:定义字节数据。从指定地址开始,存储若干个字节的数据或ASCII码字符。 ORG 2000H   TAB : DB 14H,26,’BC’ (2000H)=14H; (2001H)=1AH; (2002H)=42H; (2003H)=43H;

5.DW:定义字数据。从指定地址开始,存储若干个字数据。 ORG 2000H TAB: DW 1432H,26 (2000H)=14H; (2001H)=32H; (2002H)=00H; (2003H)=26H;

6.DS:定义存储区。从指定地址开始,保留指定数量的存储单元。 ORG 1000H TAB: DS 26 7.BIT:位地址符号指令。把位地址赋予给所规定的字符名称。用于定义位符号地址。 字符名称 BIT 位地址

8.DATA:数据地址赋值指令。将数据地址或代码地址赋予给所规定的标号。 可以先使用后定义。

4.2 汇编语言程序设计 一、程序设计步骤 1.分析问题 2.确定算法 3.设计程序流程图 4.分配内存单元 5.编写源程序 6.调试程序

二、顺序程序设计 顺序程序:最简单、最基本的程序。 特点:程序按照编写的顺序依次往下执行每一条指令,直到最后一条。 例4.2.1 将一个字节内的两位BCD码拆开并转换为ASCⅡ码,存入RAM区的两个单元。 解:查17页的表1.6.3可知,数字0~9的ASCⅡ码为30H~39H。 转换方法:将BCD码作为低4位,前面加0011即可成为ASCⅡ码

MOV R0,#32H MOV @R0,#0 ;32H单元清0 MOV A,30H ;取数 XCHD A,@R0 ;低4位存入32H单元 ORG 2000H MOV R0,#32H MOV @R0,#0 ;32H单元清0 MOV A,30H ;取数 XCHD A,@R0 ;低4位存入32H单元 ORL 32H,#30H ;低位数转换 SWAP A ORL A,#30H ;高位数转换 MOV 31H,A ;高4位存入31H单元 END

例4.2.2 设有两个4位BCD码,分别存放在片内RAM的 50H、51H单元和60H、61H单元中。试编写求这两数之和的程序,结果存放到40H、41H单元中,数据逆序存放。 先加低位,再加高位; 高位相加必须加进位标志C; BCD码运算时每位相加后进行BCD码调整。

ORG 2000H MOV A,50H ;取一数的低位字节 ADD A,60H ;两数的低位字节相加 DA A ;BCD码修正 MOV 40H,A ;存放低位结果 MOV A,51H ;取一数的高位字节 ADDC A,61H ;两数的高位字节相加 MOV 41H,A ;存高位结果

三、分支程序设计 分支程序:根据问题的需要,利用条件转移指令形成不同的程序分支,称为。 分支程序的基本形式

分支程序设计要点: 1.建立转移的测试条件 2.适当的转移指令(控制类转移指令) 3.正确的程序转移控制

1.双向分支程序例 例4.2.3 设数a在30H单元,数b在31H单元中。 当b≥10时,y=a+b; 当b<10时,y=a-b; 计算结果y存入32H中。 解 首先判断b的值是否大于或等于10,然后再根据b的值计算

ORG 1000H MOV A,31H CJNE A,#10,NEQU ;b≠10,转NEQU ADDAB: ADD A,30H ;b=10,计算a+b MOV 32H,A SJMP DONE NEQU: JNC ADDAB ;Cy=0,b>10,转ADDAB SUBAB: CLR C ;Cy=1,b<10,计算a-b MOV A,30H SUBB A,31H DONE: SJMP $

ORG 1000H MOV A,31H CLR C; SUBB A,#10; JC SUBAB ;b < 10,转SUBAB ADDAB: MOV A,30H; ADD A,31H SJMP DONE SUBAB: CLR C ;Cy=1,b<10,计算a-b MOV A,30H SUBB A,31H DONE: MOV 32H,A SJMP $

2.多向分支程序 例4.2.4 符号函数, x>0时,y=1; x=0时,y=0; x<0时,y=-1。 解 设变量x存于VAR单元中,函数y存于FUNC单元中,选用位操作类指令JB、JNB判断x的符号位。

ORG 1000H VAR DATA 30H ;定义变量x的单元地址 FUNC DATA 31H ;定义函数y的单元地址 MOV A,VAR ;取变量x JZ COMP ;x=0,转COMP JNB ACC.7,POSI ;x>0,转POSI MOV A,#0FFH ;x<0,-1→y SJMP COMP POSI: MOV A,#1 ;x>0,1→y COMP: MOV FUNC,A SJMP $

例4.2.5 根据R3的值,控制程序转向8个不同的 分支程序。 解法一:采用分支地址表法 表格是每个分支程序的地址 分支程序的首地址为两个字节 解法二:采用转移指令表法 表格是转移到每个分支程序的转移指令 分为两字节转移指令表和三字节转移指令表 解法三:采用地址偏移量表法 表格是每个分支程序的首地址与某个固定地址的差值(偏移量) 偏移量为一个字节,使用指令JMP @A+DPTR

四、循环程序设计 循环程序:程序设计中,某一段程序重复执行多次,可采用循环程序,以简化程序。 循环程序的结构: 置循环初值 循环体 循环控制 结束

例4.2.6 数据块求和,设有100个单字节数据,连续存放在内部数据存储器中,起始地址为BLOCK单元,数据和存放在RESULT单元中。

ORG 1020H BLOCK DATA 12H ;BLOCK=12H RESUL DATA 10H ;RESUL=10H RESUH DATA 11H ;RESUH=11H MOV A,#0 MOV R0,#BLOCK ;R0为地址指针 MOV R1,#100 ;R1中存放循环次数 MOV R2,#0 ;结果高位清0 LOOP: ADD A,@R0 ;求和 INC R0 ;修改指针 JNC OUT; INC R2; OUT: DJNZ R1,LOOP ;循环控制判断 MOV RESUL,A ;存结果 MOV RESUH,R2 LOOP2: SJMP LOOP2

例4.2.7 寻找最大数 方法:比较、置换

例4.2.8 排序 方法:比较、交换

例4.2.9 8051单片机的晶振频率为12MHz,设计延时20ms的程序。内循环1ms,外循环20次 ORG 1000H; 机器周期数 MOV R0,#20    ;1 DELAY2: MOV R1,#DIMS ;1 DELAY1: NOP ;1 NOP ;1 DJNZ R1,DELAY1 ;2 DJNZ R2,DELAY2 ;2 DIMS的计算: 机器周期tMC=12/fosc=1μs 内循环时间TM内=1ms=12/fosc×(1+1+2)×DIMS 则DIMS=250 总循环时间:T总=(TM内+1+2)×20=20061 μs=20.061ms

五、子程序设计 在同一个程序中,需要多次进行一些相同的计算和操作,可将这些相同的操作编写为一个独立的程序段,称为子程序。 调用子程序的程序称为主程序,子程序也可调用子程序。 调用子程序通过子程序调用指令LCALL和ACALL实现。 调用子程序和子程序执行完成返回,都会进行堆栈操作。

编写子程序时应注意: 1.子程序取名 子程序的第一条指令前必须加标号,该标号为子程序名。 2.正确的传送参数 即满足入口条件和出口条件 入口条件:执行子程序所必须的有关源数据输入 出口条件:子程序执行完毕计算结果输出 3.保护现场和恢复现场 保护现场:进入子程序后,将子程序要使用的寄存器的内容保存到堆栈。 恢复现场:子程序返回前,将保存在堆栈中的内容还原到对应寄存器中。 4.子程序返回 使用子程序返回指令RET

例4.2.10 用程序实现c=a2+b2。设a、b均小于10。 解 本题要求两次平方,所以先编写求平方子程序SQR。 ORG 2000H MOV A,31H ;取a ACALL SQR ;求a2 MOV R1,A ;存a2 MOV A,32H ;取b ACALL SQR ;求b2 ADD A,R1 ; 求a2+b2 MOV 33H,A ;存结果 HERE: SJMP HERE SQR: INC A ;A加1,表格在RET指令后 MOVC A,@A+PC ;查表 RET ;子程序返回,1字节指令 TABl DB 0,1,4,9,16 ;表格 DB 25,36,49,64,81 ;表格 END

本章结束