汇编语言程序设计幻灯片

上传人:F****n 文档编号:88151952 上传时间:2019-04-20 格式:PPT 页数:45 大小:862KB
返回 下载 相关 举报
汇编语言程序设计幻灯片_第1页
第1页 / 共45页
汇编语言程序设计幻灯片_第2页
第2页 / 共45页
汇编语言程序设计幻灯片_第3页
第3页 / 共45页
汇编语言程序设计幻灯片_第4页
第4页 / 共45页
汇编语言程序设计幻灯片_第5页
第5页 / 共45页
点击查看更多>>
资源描述

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

1、第5章 汇编语言程序设计,教学目的:熟悉80C51系列单片机的汇编语言,能够熟练编写汇编语言源程序。 教学重点:常用汇编语言程序设计方法。 教学难点: 分支程序、散转程序与子程序的设计,汇编语言 图51 源程序、汇编程序、目的程序之间关系示意图,5.1 概 述,程序设计语言:机器语言、汇编语言、高级语言,5.1.1 程序设计语言,4-1 汇编程序约定,汇编语言程序: 用汇编语言编写的、完成特定功能的指令序列。 汇编程序: 能将汇编语言源程序转换成机器语言目标程序的系统软件。,汇编语言程序到机器语言程序的转换过程称为汇编。 1.手工汇编:人工查指令表汇编。用于设计短小程序或调试程序的场合。 2.

2、机器汇编:用汇编程序进行汇编。,5.1.2 汇编语言规范,高级语言:一种面向过程且独立于计算机硬件结构的通用计算机语言,汇编语言格式与伪指令,1)汇编语言源程序由以下两种指令构成 汇编语句(指令语句) 伪指令(指示性语句) 2)汇编语句的格式: 标号: 操作码 操作数 ;注释 3) 伪指令:控制汇编用的特殊指令,这些指令不属于指令系统,不产生机器代码。,2. 80C51汇编程序设计中常用的伪指令,(1)ORG 汇编起始指令 规定目标程序的起始地址,格式如下: 标号 操作码 操作数 ORG 表达式(exp)必须为16位地址 (2) EQU 赋值指令 把操作数段中的地址或数据赋值给标号,格式如下:

3、 标号 操作码 操作数 字符名称 EQU 数或汇编符号 例1 AA EQU R1 ;R1与AA等值 则 MOV A, AA 指令与 MOV A,R1指令结果相同。,(3)DB 从指定单元开始定义(存储)若干个字节的数据或ASCII码字符,常用于定义8位数据常数表。 格式: 操作码 操作数 DB 字节常数或ASCII字符 例: ORG 1000H DB 34H,73,A,B DB 0AH,0BH,20 则 (1000H)34H (1001H)49H (1002H)41H (1003H)42H (1004H)0AH (1005H)0BH (1006H)14H,(4) DW 定义字指令 定义程序存储

4、器中存放的若干个字的数据或ASCII码字符16位常数表 格式 DW。,例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 汇编结束指令,(7) DATA定义标号数值为指令 格式: 标号 操作码 操作数 符号名称 DATA 表达式 如 MN DATA 3000H ;MN相当于3000

5、H DATA与EQU的区别在于前者可以先使用后定义而后者不行,必须先定义才能使用。 (8)DS定义存储空间指令 功能:从指定地址开始保留DS之后表达式的值所规定的存储单元。 格式: 标号 操作数 DS 表达式 例:P105 例7,判断框 连接点 图:常用流程图符号,美国国家标准化协会ANSI(American National Standard Institute)设定了一些常用的流程图符号如图所示:,起止框 或 流程线,输入输出框 处理框,5.1.3 汇编语言程序设计步骤,一.分析工作任务、确定方案和计算方法 二.了解应用系统的硬件配置、性能指标。 三.建立系统数学模型,确定控制算法和操作步

6、骤。 四.画程序流程图 表示程序结构和程序功能,五. 编制源程序 1.合理分配存储器单元和了解I/O接口地址。 2.按功能设计程序,明确各程序之间的相互关系。 3.用注释行说明程序,便于阅读和修改调试和修改。,52 顺序与循环程序设计,5.2.1 顺序程序设计(又称简单程序) 既无分支,又无循环,按照顺序执行 可完成一定的基本功能,是编写复杂程序的基础,常用程序结构: 顺序程序、循环程序、分支程序、查表程序、子程,例1:将一个字节内的两个BCD码拆开并变成ASCII码, 存入两个RAM单元。BCD码放在内RAM的20H, 转换后高半字节放到21H,低字节放22H。,BCDH BCDL,0011

7、,0011,BCD码09对应的ASCII码为30H39H 转换时,将20H中的BCD码拆开,高四位置为“0011”即可。,BCDH,BCDL,上页,下页,回目录,即:采用先把20H中低4位BCD码交换出来加以转换、存放,然后再把高4位BCD码交换至低4位加以转换、存放。,程序:,0011 BCDH,0000 0000,;两个BCD数送A,;BCDL数送22H,;完成转换,;BCDH数送A的低4位,;完成转换,;存数,BCDH BCDL,BCDL,0000,0011,0000,BCDH,0011,上页,下页,回目录,5.2.2 循环程序 包含多次重复执行的程序段,循环结构使程序紧凑。,各个环节任

8、务: 一初始化部分(循环初态) 循环准备工作。如:清结果单元、设指针、设循环控制变量初值等。,二循环体 循环工作部分: 需多次重复处理的工作。 循环控制部分: 1.修改指针和循环控制变量。 2.检测循环条件:满足循环条件,继续循环,否则退出循环。 三.结束部分 处理和保存循环结果。 允许0次循环的循环结构:在循环工作之前检测循环条件。,简单循环结构:循环体中不套循环。,定时 例2:试计算下列程序段执行时间。 程序 指令执行周期 MOV R7, #64H 1T LOOP:NOP 1T NOP 1T DJNZ R7, LOOP 2T,解:上述程序显然属于循环程序,其算法结构如图所示。循环次数100

9、次,根据每条指令的执行周期可得每次循环消耗1+1+2=4(机器周期),加上第一条指令,整个程序段共计消耗时间为(4100+1)T= 401T,当晶振频率为6MHZ时,T=2s,故上述程序实际消耗802s。,多重循环 循环体中套循环结构。以双重循环使用较多。,软件延时程序。 用循环程序将指令重复多次执行,实现软件延时。,试计算延时程序的执行时间。 源程序 指令周期(M) 指令执行次数,DELAY:MOV R6,#64H 1 I1: MOV R7,#0FFH 1 I2: DJNZ R7,I2 2 DJNZ R6,I1 2 RET 2,延时时间计算:(设时钟f=12MHz,M=1s) t=(11+1

10、100+2100255+2100+21)M=51.3 ms,1 100 100255 100 1,习题:试计算延时程序的执行时间。 源程序 指令周期(M) 指令执行次数,DELAY:MOV R6,#100 1 D1: MOV R7,#10 1 D2: NOP 1 DJNZ R7,D2 2 DJNZ R6,D1 2 RET 2 计算延时程序的执行时间(设时钟f=6MHz)。,53 分支程序设计,5.3.1 分支程序设计综述 分支程序应用要点是正确使用转移指令,通常有如下3种指令。 1. 无条件转移:与以执行程序的结果无关,只要给出正确的转移目标地址或偏移量即可 2. 条件转移 :根据已执行程序对

11、特殊或特定存储器的影响结果来决定程序的走向。 3. 散转:根据某种已输入的或运算的结果,是程序转到各个处理程序中,例3 设5AH单元中有一变量X,请编写计算下述函数式的程序,结果存入5BH单元,Y= 3X , X 15,5.3.2 无条件/条件转移程序,ORG 200H MOV A,5AH ADD A,5AH ;2XA MOV R1,A MOV A,5AH ;重新把X装入A CJNE A,#10,L1 L1: JC L2 ;X15 CJNE A,#10H,L3 ;与16比 L3: JNC L4 ;X15转L4 MOV A,R1 ADD A,#10 ;10X15,Y2X10,MOV R0,A S

12、JMP L4 L2: MOV A,R1 ADD A,5AH ;X10,Y=3X MOV R0,A L4 : MOV 5BH,R0 ;存结果 SJMP $ END,例4:空调机制冷时,若排出的空气温度比吸入的空气 温度低8则认为工作正常,否则便认为是故障, 并设置故障标志。,解:,为了可靠的监控空调机的工作情况,做两次减法: 第一次(40H)-(41H),若CY=1 ,则肯定有故障; 第二次两个温度的差值减去8 ,若CY=1 ,则肯定 有故障,程序的流程图如下:,上页,下页,回目录,首先定义一些工作单元,流程图:,上页,下页,回目录,故 障,正常,程序:,; A(40H)-(41H),;CY=1

13、,则故障,;是则故障,;温度小于8?,;工作正常标志,;转出口,;设置故障标志,若CY1顺序执行,CY=1转移,CY=1转移,若CY1顺序执行,上页,下页,回目录,5.3.3 散转程序设计,例5 根据R3的内容,转向各个操作程序。 R30, 转入OPR0 R31, 转入OPR1 . R3n, 转入OPRn 解:程序清单如下。 MOV DPTR,TAB1 ;跳转表首地址送数据指针 MOV A,R3 ;R32 A(修正变址值) ADD A,R3 JNC NOAD ;判有否进位 INC DPH ;有进位则加到高字节地址 NOAD: JMP ADPTR ;转向形成的散转地址入口 TAB1: AJMP

14、OPR0 ;转移到OPR0 AJMP OPR1 AJMP OPRn,5.4 查表程序,上页,下页,回目录,对于复杂参数的计算如:,非线性参数,对数、指数、三角函数,微分、积分等,用汇编编程十分困难,甚至无法建立数学模型,用查表的方法简单容易,80C51指令系统中有两条指令具有极强的查表功能,(1) MOVC A,A+DPTR,作基址寄存器,作变址寄存器,长查表指令,寻址64KB,(2) MOVC A,A + PC,作基址寄存器,作变址,短查表指令 页内查表指令,指向表格首址,指向表格的第 i 项,第i项加 变址调整值,例6:一个十六进制数放在HEX单元的低四位, 将其转换成ASCII码,查表程

15、序:,解:,十六进制 09 的ASCII码为 30H39H, AF 的ASCII码为 41H46H,,利用查表指令 MOVC A,A+DPTR,MOVC A,A+PC,先用伪指令 DB 或 DW 把表格的数据存入ROM,上页,下页,回目录,来获得数据,ASCII码表格的首址为ASCIITAB,上页,下页,回目录,编程1:,0 1 2 3 4 5 6 7 8 9,A B C D E F,(A)= 3,33H,(A)= 15,46H,例1 设计一个将16进制数转换成ASCII码的子程序,设16进制数存放在R0的低4位,要求将转换后的ASCII码送回R0。,ORG 30H MOV A,R0 ANL A,0FH ; 保留低4位 ADD A,2 ;变址调整 MOVC A,AP

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

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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