汇编语言程序设计课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《汇编语言程序设计课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序设计 课件
- 资源描述:
-
1、第5章 汇编语言程序设计教学目的:教学目的:熟悉80C51系列单片机的汇编语言,能够熟练编写汇编语言源程序。教学重点:教学重点:常用汇编语言程序设计方法。教学难点:教学难点: 分支程序、散转程序与子程序的设计 汇编语言汇编语言 图51 源程序、汇编程序、目的程序之间关系示意图 v程序设计语言:机器语言、汇编语言、高级语言程序设计语言:机器语言、汇编语言、高级语言v机器语言不易识别和记忆,使用不便,很难用它机器语言不易识别和记忆,使用不便,很难用它来进行程序设计。来进行程序设计。5.1.1 程序设计语言程序设计语言 4-14-1 汇编程序约定汇编程序约定汇编语言程序:汇编语言程序:用汇编语言编写
2、的、用汇编语言编写的、完成特定功能的指令序列。完成特定功能的指令序列。汇编程序:汇编程序:能将汇编语言能将汇编语言源程序源程序转换成机器语言转换成机器语言目标目标程序的程序的系统软件。系统软件。 汇编语言程序到机器语言程序的转换过程称为汇编。汇编语言程序到机器语言程序的转换过程称为汇编。1.手工汇编手工汇编:人工查指令表汇编。用于设计短小程序:人工查指令表汇编。用于设计短小程序或调试程序的场合。或调试程序的场合。2. .机器汇编机器汇编:用汇编程序进行汇编:用汇编程序进行汇编。5.1.2 汇编语言规范高级语言:一种面向过程且独立于计算机硬高级语言:一种面向过程且独立于计算机硬件结构的通用计算机
3、语言件结构的通用计算机语言汇编语言格式与伪指令汇编语言格式与伪指令1)1)汇编语言源程序由以下两种指令构成汇编语言源程序由以下两种指令构成汇编语句(指令语句)汇编语句(指令语句)伪指令(指示性语句)伪指令(指示性语句)2)2)汇编语句的格式:汇编语句的格式: 标号标号:操作码操作码操作数操作数;注释;注释3) 伪指令:控制汇编用的特殊指令,这些指令不伪指令:控制汇编用的特殊指令,这些指令不属于指令系统,不产生机器代码。属于指令系统,不产生机器代码。 2. 80C51汇编程序设计中常用的伪指令v(1)ORG 汇编起始指令 v规定目标程序的起始地址,格式如下: 标号 操作码 操作数v ORG 表达
4、式(exp)必须为16位地址v(2) EQU 赋值指令v把操作数段中的地址或数据赋值给标号,格式如下: v标号 操作码 操作数v字符名称 EQU 数或汇编符号 v例1 AA EQU R1 ;R1与AA等值v 则 MOV A, AA 指令与 MOV A,R1指令结果相同。(3)DB(3)DB 从指定单元开始定义(存储)若干个字节的数从指定单元开始定义(存储)若干个字节的数据或据或ASCIIASCII码字符,常用于定义码字符,常用于定义8 8位数据常数表。位数据常数表。格式:格式: 操作码操作码 操作数操作数 DB DB 字节常数或字节常数或ASCIIASCII字符字符例例: :ORGORG 10
5、00H 1000HDBDB34H34H,7373,AA,BBDBDB0AH0AH,0BH0BH,2020则则 (1000H1000H)34H 34H (1001H1001H)49H 49H (1002H1002H)41H 41H (1003H1003H)42H 42H (1004H1004H)0AH 0AH (1005H1005H)0BH0BH (1006H1006H)14H 14H (4) DW 定义字指令 定义程序存储器中存放的若干个字的数据或ASCII码字符16位常数表格式 DW。v例3 ORG 2200Hv DW 1246H,7BH,10v 则 (2200H)12H (2201H)46
6、Hv (2202H)00 (2203H)7BHv (2204H)00 (2205H)0AHv(5) BIT 定义位地址指令 v 格式 BITv 例4 ABC BIT P1.0v Q4 BIT P2.2v 则汇编后,位地址P1.0,P1.2分别赋给变量ABC和Q4。v(6) END 汇编结束指令(7) DATA定义标号数值为指令定义标号数值为指令 格式:格式: 标号标号 操作码操作码 操作数操作数 符号名称符号名称 DATA 表达式表达式如如 MN DATA 3000H ;MN相当于相当于3000HDATA与与EQU的区别在于前者可以先使用后定义而的区别在于前者可以先使用后定义而后者不行,必须先
7、定义才能使用。后者不行,必须先定义才能使用。(8)DS定义存储空间指令定义存储空间指令 功能:从指定地址开始保留功能:从指定地址开始保留DS之后表达式的值所之后表达式的值所规定的存储单元。规定的存储单元。 格式:格式: 标号标号 操作数操作数 DS 表达式表达式例:例:P105 例例7判断框判断框 连接点连接点 图图:常用流程图符号常用流程图符号 美国国家标准化协会美国国家标准化协会ANSIANSI(American National American National Standard InstituteStandard Institute)设定了一些常用的流程图符号如图所示:)设定了一些常
8、用的流程图符号如图所示:起止框起止框 或或 流程线流程线输入输出框输入输出框 处理框处理框5.1.35.1.3 汇编语言程序设计步骤汇编语言程序设计步骤一一. .分析工作任务、分析工作任务、确定方案和计算方法确定方案和计算方法二二. .了解应用系统的硬件配置、性能指标。了解应用系统的硬件配置、性能指标。三三. .建立系统数学模型,确定控制算法和操作步骤。建立系统数学模型,确定控制算法和操作步骤。四四. .画程序流程图画程序流程图 表示程序结构和程序功能表示程序结构和程序功能 五五. . 编制源程序编制源程序1.1.合理分配存储器单元和了解合理分配存储器单元和了解I/OI/O接口地址。接口地址。
9、2.2.按功能设计程序,明确各程序之间的相互关系。按功能设计程序,明确各程序之间的相互关系。3.3.用注释行说明程序,便于阅读和修改调试和修改。用注释行说明程序,便于阅读和修改调试和修改。开始开始1 YN? 52 顺序与循环程序设计 v5.2.1 顺序程序设计(又称简单程序) 常用程序结构常用程序结构: 顺序程序、循环程序、分支程序、查表程序、子程顺序程序、循环程序、分支程序、查表程序、子程将一个字节内的两个将一个字节内的两个BCD码拆开并变成码拆开并变成ASCII码,码, 存入两个存入两个RAM单元。单元。BCD码放在内码放在内RAM的的20H, 转换后高半字节放到转换后高半字节放到21H,
10、低字节放,低字节放22H。 BCDH BCDLBCDH BCDL0011001100110011ROMROM21H21H22H22H20H20HBCD码码09对应的对应的ASCII码为码为30H39H转换时,将转换时,将20H中的中的BCD码拆开,高四位置为码拆开,高四位置为“0011”即可。即可。BCDHBCDHBCDLBCDL上页上页下页下页回目录回目录ASCII码码即:采用先把即:采用先把20H中低中低4位位BCD码交换出来加以转换、码交换出来加以转换、存放,然后再把高存放,然后再把高4位位BCD码交换至低码交换至低4位加以转换、位加以转换、存放。存放。 0011 BCDH0011 BC
11、DH0000 00000000 0000 MOV R0, #22H MOV R0,#0 MOV A, 20H XCHD A, R0 ORL 22H, #30H SWAP A ORG 1000H ORL A, #30H MOV 21H, A SJMP $ END;R0 22H; 22H 0;两个两个BCD数送数送A;BCDL数送数送22H;完成转换完成转换;BCDH数送数送A的低的低4位位;完成转换完成转换;存数存数BCDH BCDLBCDH BCDLBCDLBCDL0000000000110011BCDH BCDLBCDH BCDLROMROM21H21H22H22H20H20H0000000
12、0 BCDHBCDH00110011A上页上页下页下页回目录回目录R05.2.25.2.2 循环程序循环程序包含多次重复执行的程序段,循环结构使程序紧凑。包含多次重复执行的程序段,循环结构使程序紧凑。循环控制 ?循环工作循环结束循环初始化YN各个环节任务:各个环节任务:一一初始化部分(循环初态)初始化部分(循环初态)循环准备工作。如:清结果单元、循环准备工作。如:清结果单元、设指针、设循环控制变量初值等。设指针、设循环控制变量初值等。二二循环体循环体循环工作部分:循环工作部分:需多次重复处理的工作。需多次重复处理的工作。循环控制部分:循环控制部分:1.1.修改指针和循环控制变量。修改指针和循环
13、控制变量。2.2.检测循环条件:满足循环条件,继续循环,否则退出循环。检测循环条件:满足循环条件,继续循环,否则退出循环。三三. .结束部分结束部分 处理和保存循环结果。处理和保存循环结果。允许允许0 0次循环的循环结构:在循环工作之前检测循环条件。次循环的循环结构:在循环工作之前检测循环条件。简单循环结构:循环体中不套循环简单循环结构:循环体中不套循环。例例2 2:试计算下列程序段执行时间。:试计算下列程序段执行时间。 程序程序 指令执行周期指令执行周期 MOV R7MOV R7, #64H #64H 1T1TLOOPLOOP:NOP NOP 1T1T NOP NOP 1T1T DJNZ R
14、7 DJNZ R7, LOOP LOOP 2T2T解:上述程序显然属于循环程序,其算法结构解:上述程序显然属于循环程序,其算法结构如图所示。循环次数如图所示。循环次数100100次,根据每条指令的次,根据每条指令的执行周期可得每次循环消耗执行周期可得每次循环消耗1+1+2=41+1+2=4(机器周(机器周期),加上第一条指令,整个程序段共计消耗期),加上第一条指令,整个程序段共计消耗时间为(时间为(4 4100+1100+1)T= 401TT= 401T,当晶振频率为,当晶振频率为6MHZ6MHZ时,时,T=2sT=2s,故上述程序实际消耗,故上述程序实际消耗802s802s。多重循环多重循环
15、循环体中套循环结构。以双重循环使用较多。循环体中套循环结构。以双重循环使用较多。软件延时程序。软件延时程序。用循环程序将指令重复多次执行,实现软件延时。用循环程序将指令重复多次执行,实现软件延时。v试计算延时程序的执行时间。试计算延时程序的执行时间。v源程序源程序指令周期指令周期(M) (M) 指令执行次数指令执行次数DELAYDELAY:MOV R6MOV R6,#64H#64H1 1I1I1: MOV R7MOV R7,#0FFH#0FFH1 1I2I2: DJNZ R7DJNZ R7,I2I22 2 DJNZ R6 DJNZ R6,I1I12 2 RET RET2 2延时时间计算:(设时
16、钟延时时间计算:(设时钟f=12MHzf=12MHz,M=1sM=1s)t=(1t=(11+11+1100+2100+2100100255+2255+2100+2100+21)1)M=51.3 msM=51.3 ms1 11001001001002552551001001 1习题:习题:试计算延时程序的执行时间。试计算延时程序的执行时间。源程序源程序指令周期指令周期(M) (M) 指令执行次数指令执行次数DELAYDELAY:MOV R6MOV R6,#100#1001 1D1D1: MOV R7MOV R7,#10#101 1D2D2: NOPNOP1 1 DJNZ R7DJNZ R7,D2
17、D22 2 DJNZ R6 DJNZ R6,D1D12 2 RET RET2 2计算延时程序的执行时间计算延时程序的执行时间( (设时钟设时钟f=6MHz)f=6MHz)。53 分支程序设计v5.3.1 分支程序设计综述v分支程序应用要点是正确使用转移指令,通常有如下3种指令。 v1. 无条件转移:与以执行程序的结果无关,只要给出正确的转移目标地址或偏移量即可 v2. 条件转移 :根据已执行程序对特殊或特定存储器的影响结果来决定程序的走向。v3. 散转:根据某种已输入的或运算的结果,是程序转到各个处理程序中 例3 设5AH单元中有一变量X,请编写计算下述函数式的程序,结果存入5BH单元vY=
18、3X , X 10vY= 2X +10 , 10= X 155.3.2 无条件/条件转移程序 ORG 200H MOV A,5AH ADD A,5AH ;2XA MOV R1,A MOV A,5AH ;重新把X装入A CJNE A,#10,L1L1: JC L2 ;X15 CJNE A,#10H,L3 ;与16比L3: JNC L4 ;X15转L4 MOV A,R1 ADD A,#10 ;10X15,Y2X10 MOV R0,A SJMP L4L2: MOV A,R1 ADD A,5AH ;X10,Y=3X MOV R0,AL4 : MOV 5BH,R0 ;存结果 SJMP $ END空调机制
19、冷时,若排出的空气温度比吸入的空气空调机制冷时,若排出的空气温度比吸入的空气 温度低温度低8则认为工作正常,否则便认为是故障,则认为工作正常,否则便认为是故障, 并设置故障标志。并设置故障标志。为了可靠的监控空调机的工作情况,做两次减法:为了可靠的监控空调机的工作情况,做两次减法:第一次(第一次(40H)-(41H),若),若CY=1 ,则肯定有故障;,则肯定有故障;第二次两个温度的差值减去第二次两个温度的差值减去8 ,若,若CY=1 ,则肯定,则肯定有故障有故障程序的流程图如下:程序的流程图如下:上页上页下页下页回目录回目录首先定义一些工作单元首先定义一些工作单元内部内部RAM40H41H4
展开阅读全文