单片机原理:第4章汇编语言程序设计

上传人:努力****83 文档编号:94185571 上传时间:2022-05-22 格式:PPTX 页数:25 大小:173.30KB
收藏 版权申诉 举报 下载
单片机原理:第4章汇编语言程序设计_第1页
第1页 / 共25页
单片机原理:第4章汇编语言程序设计_第2页
第2页 / 共25页
单片机原理:第4章汇编语言程序设计_第3页
第3页 / 共25页
资源描述:

《单片机原理:第4章汇编语言程序设计》由会员分享,可在线阅读,更多相关《单片机原理:第4章汇编语言程序设计(25页珍藏版)》请在装配图网上搜索。

1、一、程序设计语言用于编制计算机程序的语言称为程序设计语言。按照语言的结构及其功能可以分为三种:机器语言、汇编语言、高级语言。1. 机器语言机器语言是用二进制代码0和1表示的计算机能直接识别和执行的一种机器指令的集合。它是计算机的设计者通过计算机的硬件结构赋予计算机的操作功能。机器语言具有灵活、直接执行和速度快等特点。一条指令就是机器语言的一个语句,它是一组有意义的二进制代码,指令的基本格式有操作码字段和地址码字段,其中操作码指明了指令的操作性质及功能,地址码则给出了操作数或操作数的地址。用机器语言编出的程序全是些0和1的指令代码,直观性差,还容易出错。2. 汇编语言汇编语言是面向机器的程序设计

2、语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址,如此就增强了程序的可读性并且降低了编写难度,象这样符号化的程序设计语言就是汇编语言,亦称为符号语言。使用汇编语言编写的程序,机器不能直接识别,还要由汇编程序或者叫汇编语言编译器转换成机器指令。汇编程序将符号化的操作代码组装成处理器可以识别的机器指令,这个组装的过程称为组合或者汇编。因此,有时候人们也把汇编语言称为组合语言。3. 高级语言高级语言是对计算机操作步骤进行描述的一整套标记符号、表达格式、结构及其使用的语法规则。它是一种面向过程或对象的语言,使用一些接近人们书写习惯的英语和数学表达式去编写程序,使

3、用方便,通用性强,不依赖于具体计算机。如目前流行的Java,C,C+,C#,Pascal,Lisp,Prolog,FoxPro,VC等等。二、汇编语言的语句结构1. 汇编语言的指令类型MCS-51单片机汇编语言,包含两类不同性质的指令。(1)基本指令:即指令系统中的指令。它们都是机器能够执行的指令,每一条指令都有对应的机器码。(2)伪指令:汇编时用于控制汇编的指令。它们没有机器码,不能被执行。2. 汇编语言的语句格式汇编语言源程序是由指令组成的。汇编语言一般由四部分组成。其典型的汇编语句格式如下:标号: 操作码 操作数 ;注释START: MOV A,30H ;A(30H)各部分之间必须用分隔

4、符分开,即在标号之后要加冒号“:”;在操作码和操作数之间要用空格间隔;在操作数内部要用“,”分割;在注释段与操作数之间用分号“;”分隔。u标号标号是用户给指令语句设定的一个符号,在汇编产生目标程序时,汇编程序将把标号所在的指令语句机器码首字节的存储单元地址值赋给该标号。于是,标号便可作为地址或数据在其他语句的操作数部分引用。标号是以字母开头的18个字母或数字串组成,汇编时,超过的部分被截断而无效。注意,不能使用指令助记符、伪指令或寄存器名称作标号。u操作码操作码指定计算机完成某种操作,不可缺省,可以是指令助记符或伪指令助记符。u操作数操作数是操作码操作的对象,它是参加操作的数或是操作数据所在的

5、地址。操作数的形式与CPU的指令形式有关,MCS-51单片机的操作数有三种类型:立即数(8位或16位)、寄存器和地址。u注释为了便于阅读和交流,常常对源程序进行注释,简明扼要地说明程序段或关键指令的作用,一般只在程序关键处加以注释。良好的注释,是编写汇编语言程序的一个重要部分。汇编时,注释部分不会被汇编成机器码,注释部分前必须加分号“;”,如果注释的内容超过一行,则换行后前面还要加上分号。注释也可以从一行的最前面开始三、伪指令伪指令是告诉汇编程序如何进行汇编的指令,它不控制机器的操作也不能被汇编成机器码,只被汇编程序识别并指导汇编如何进行。MCS-51单片机主要有7条伪指令,分别为汇编语言提供

6、了不同的信息与参数。1. ORG:汇编起始地址功能:用来说明它之后的程序段在存储器中存放的起始地址。例如程序: ORG 2000H START: MOVE A, #55H MOVE R0,#17H . . .说明:从START开始的以下程序从存储器的2000H单元地址开始存放,START=2000H。2. EQU:赋值功能:给变量标号赋予一个确定的数值。例如: DATA1 EQU 89H DATA2 EQU 56H说明:使得DATA1=89H,DATA2=56H。EQU相当于“=”。3. DB:定义数据字节功能:按字节的形式把数据存放在存储单元中。例如:ORG 1234H DB 12H,23H

7、,56H,99H,-1说明:从1234H单元开始连续存放字节数据12H,23H,56H,99H,-1。负数是以一字节补码数的形式存放在存储器中的,即-1是以FFH形式存放在1238H单元中的。4. DW:定义数据字功能:按字(双字节)的形式把数据存放在存储单元中。例如: ORG 1234H FIE: DW 12H,5678H,AB说明:以上伪指令经汇编后,程序存储器有关单元如图4-1所示,其中16位数据的高8位存入低地址单元,低8位存入高地址单元。字母存入的为对应的ACSII。5. DS:定义存储区功能:从指定的地址单元开始,保留一定数量的存储单元。例如:ORG 0500H DS 09H说明:

8、从0500H地址开始,留出9个字节的存储单元。6. BIT:位定义功能:用规定的字符名称表示位地址。例如:FLAG BIT 35H说明:FLAG以后可以作为位地址35H使用。7. END:汇编结束功能:标志源程序的结束,即通知汇编程序不再继续向下汇编。图4-1 存储单元图一、程序设计步骤汇编语言源程序设计的一般步骤是:1. 分析问题熟悉和明确问题的要求,明确已知条件以及对运算与控制的要求,准确地规定程序将要完成的任务,建立数学模型。2. 确定算法根据实际问题的要求和指令系统的特点,选择解决问题的方法。3. 设计程序流程图程序流程图是程序结构的一种图解表示法,它直观、清晰地体现了程序设计思想,是

9、程序结构设计的一种常用工具。4. 分配内存单元分配内存工作单元,确定程序和数据区域的起始地址。5. 编写汇编语言源程序根据流程图和指令系统编写源程序。6. 调试程序源程序编好后,必须上机调试。先将源程序通过汇编生成目标程序,并消除语法错误,然后进行仿真,使程序达到问题要求。二、顺序程序顺序结构的程序,是指程序按指令的排列顺序依次执行直至程序结束。这种结构是程序结构中最简单的一种,用程序流程图表示的顺序结构程序,是一个处理框紧接一个处理框。【例题4-1】 将40H单元内的两位BCD码拆开并转换成ACSII码,存入31H和32H单元。分析:数字09的ACSII码为30H39H。若将两位BCD码拆开

10、分别再加30H,即可实现BCD码到ACSII码的转换,然后存入到31H和32H中。流程图见图4-2。程序如下: ORG 1000H MOV A, 40H ;取数 ANL A, #0FH ;取低4位 ADD A, #30H ;转换成ASCII码 MOV A, 32H ;保存结果 MOV A, 40H ;取数 SWAP A ;高4位与低4位互换 ANL A, #0FH ;取低4位 ADD A, #30H ;转换成ASCII码 MOV A, 31H ;保存结果 SJMP $三、分支程序分支程序是按照给定的条件进行判断,根据不同的情况使程序发生转移,选择不同的程序入口。在汇编语言程序中,通常利用条件转

11、移指令形成不同的程序分支。下面首先介绍分支程序的基本形式,然后通过举例说明分支程序的设计方法。1. 分支程序的基本形式分支程序有三种基本形式,如图4-3所示。图4-3(a)和(b)是双向分支的两种情况。其中,图(a)是当条件满足时,执行程序段A;条件不满足时,则跳过程序段A。图(b)是当条件满足时,执行程序段A;条件不满足时,执行程序段B。图4-3(c)是一种多分支的情况,根据M值选择相应的分支。分支程序主要是用条件转移指令实现的,因此设计分支程序的关键是如何判断分支条件,通常是把Cy、累加器A或片内RAM某位的状态作为判断的条件。2. 单分支结构程序举例【例题4-3】 将4位二进制数转化为A

12、CSII码。4位二进制数存于40H单元中,转换后的ACSII码存于41H单元中。程序流程图如图4-4所示。分析:4位二进制数范围在09区间时,对应的ACSII为30H39H,即4位数加上30H;4位二进制数范围在AF区间时,对应的ACSII为41H46H,即4位数加上30H,还要再加上07H。程序如下: ORG 1000H MOV A, 40H ANL A, #0FH ADD A, #30H MOV 41H, A CLR C SUBB A, #3AH JC LEND MOV A, 41H ADD A, #07H MOV 41H, A LEND: SIMP $3.两分支结构程序举例【例题4-4】

13、 设X在30H单元中,根据下式 X+5 X0Y= 10 X=0 X X0求出Y值,并将Y值存入31H单元。分析:正数和零的最高位都是0,负数的最高位是1。如果该数是0,则标志位Z为1。流程图如图4-5。四、循环程序典型的循环结构一般包含程序初始化、循环处理、循环控制和循环结束四部分。1. 初始化部分为实现程序循环做准备,如建立循环计数器、设地址指针以及为变量赋初值等。2. 循环处理部分该部分是循环程序的主体,在这里对数据进行实际的处理,是重复执行部分,所以这段程序的设计非常关键,应充分考虑程序的效率3. 循环控制部分为下一次数据处理而修改计数器和地址指针,并判断循环是否结束。4. 结束部分分析

14、、处理或存放结果。第二部分和第三部分的次序根据具体情况可以先处理数据后判断,也可以先判断后处理数据。另外,有时问题比较复杂,处理段中还需要使用循环结构,即通常所说的循环嵌套(也称多重循环)。下面具体举例介绍循环结构。 【例题4-6】 编程计算1+2+3+10的值。分析:循环次数已知道,可以利用 “DJNZ Rn, 标号”指令,直接把10赋给Rn,从后往前加。流程图如图4-6。程序如下: ORG 1000H CLR A CLR C MOV R5, #0AH LOOP:ADDC A, R5 DJNZ R5, LOOP SJMP $五、子程序1子程序概念程序中多次出现的程序片段,一般都编成相对独立的

15、子程序。子程序放在程序存储器的特定区域,执行时由主程序来调用它。子程序是构成单片机复杂应用程序不可缺少的部分。所谓调用子程序,就是暂时中断主程序的执行,而转到子程序的入口地址去执行子程序。子程序执行完毕,自动返回主程序,主程序继续往下执行。子程序调用过程如图4-8。调用子程序应注意:(1)子程序占用的存储单元和寄存器。如果在调用前主程序已经使用了这些存储单元或者寄存器,在调用后,这些寄存器和存储单元又有其它用途,就应该把这些单元或寄存器中的内容压入堆栈保护起来,调用完后再从堆栈中弹出以便加以恢复。图4-8 子程序的调用与返回(2)参数的传递。调用之前一定要按子程序的要求设置好入口参数,只有这样

16、才能在调用完成后,由出口参数得到调用后的正确结果。(3)子程序可以从指定的地址单元或寄存器获得调用程序的数据参数,经过调用后得到的数据可输出到指定的地址单元或寄存器,从而实现主程序和子程序、子程序和子程序之间的参数传递。(4) 嵌套调用。子程序还可以调用其它子程序,子程序是一个相对的概念。如图4-9。 图4-9 子程序的嵌套调用与返回2. 子程序设计举例【例题4-9】 用调用子程序的方法实现:w=x2+y2+z2,其中,x,y,z均小于9,存放于30H,31H,32H中,结果存放于33H中。分析:因为x,y,z均小于9,则它们的平方和为单字节数。此外,本例中三次用到平方值,所以程序中把求平方的

17、程序段作为子程序。程序如下: x DATA 30H y DATA 31H z DATA 32H w DATA 33H ORG 1000H MAIN: MOV A, x LCALL SQR MOV B, A MOV A, y LCALL SQR ADD A, B MOV w,A MOV A, z LCALL SQR ADD A, w MOV w,A SJMP $ SQR: MOV DPTR, #TAB MOVC A, A+DPTR RET TAB: DB 0,1,4,9,16,25,36,49,64,81 END 六、位操作程序MCS-51单片机有着优异的位操作性能,可以方便地实现各种复杂的逻辑运算。这种用软件替代硬件的方法,可以大大简化硬件设计甚至完全不用硬件,但比硬件要多花一些运行时间。【例题4-10】 编写一程序,实现图4-10中的逻辑运算性能。其中P3.1、P1.1、P1.0分别是单片机端口线上的信息,RS0、RS1是PSW寄存器中的两个标志位,30H、31H是两个位地址。程序如下: ORG 0000H MOV C, P3.1 ANL C, P1.1CPL CMOV 20H, C MOV C, 30HORL C, /31HANL C, RS1ANL C, 20HANL C, RS0MOV P1.0, SJMP $

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!