第三章汇编语言程序设计_第1页
第三章汇编语言程序设计_第2页
第三章汇编语言程序设计_第3页
第三章汇编语言程序设计_第4页
第三章汇编语言程序设计_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第三章第三章 汇编语言程序设计汇编语言程序设计 教学目的: 1、通过本章的学习,使学生了解机器语言、汇编语言和高级语言的特点,掌握汇编语言程序的设计方法和设计步骤; 2、使学生熟悉Keil c仿真软件的使用。 教学重点:1、分支程序设计方法; 2、循环程序设计方法; 3、查表程序和子程序设计方法。 教学难点:1、分支程序的设计思想; 2、循环程序的设计思想; 3、查表程序和子程序的设计思想。 第一节 汇编语言的构成 汇编语句汇编语句的集合构成了汇编语言汇编语言,它是汇编语言的基本元素。 常分为指令性语句指令性语句和指示性语句指示性语句。1、指令性语句: 是采用助记符助记符构成的汇编语言语句汇编

2、语言语句,每条语句都有与之对应的指令码指令码。对MCS-51,指令性语句就是前面讲到的111条条指令的助记符语句。 它是汇编语句的主体,也是人们进行汇编汇编语言程序设计的基本语句语言程序设计的基本语句。2、指示性语句: 又称伪指令伪指令语句,简称伪指令伪指令。它不产生不产生可供机器直接执行的机器码机器码,也不也不会直接影响直接影响存储器中代码代码和数据分布数据分布,只是在机器汇编时汇编时供供汇编程序汇编程序识别和执行识别和执行的命令,用来对机器汇编过程汇编过程进行某种控制控制,令其进行一些特殊的操作。 在MCS-51中常用的伪指令有8条。 1)定位伪指令定位伪指令ORG 常用于汇编语言源程序源

3、程序或数据块开头开头,规定程序块程序块或数据块数据块存放的起始位置起始位置。 格式:格式: 标号: ORG 例如:例如: ORG 0030H MOV A,30H 表示指令MOV A,#20H所对应的的机器码74H、20H存放于程序存储器0030H开始的ROM存储单元。 注:一个汇编程序中可以有多个多个“ORG”语句,但必须按地址地址从小到大顺序从小到大顺序排放。 2)汇编结束伪指令END 格式: 标号: END 功能:功能:汇编语言源程序源程序结束标志结束标志,既告诉编译程序:本汇编程序到此结束本汇编程序到此结束(无论其后是否还有无论其后是否还有程序语句程序语句) 注: 本条伪指令能且只能能且

4、只能用于整个汇编语言程序的末尾处末尾处,且一个程序只能有一条只能有一条。 3)定义字节数据伪指令定义字节数据伪指令DB 格式: 标号: DB 功能:功能:从标号地址标号地址开始在程序存储器程序存储器中定义字节数据数据,字节数据表可以是多个字节数据、字符串字符串(单引号定界单引号定界)或表达式,它表示将字节数据表中的数据从左到右从左到右依次依次存放在指定地址单元。 例如:例如: ORG 1000H TAB:DB 2BH, 0A0H, A, 2*4 表示从程序存储器程序存储器1000H单元开始开始的地方连续连续存放数据2BH,0A0H,41H(字母A的ASCII码),08H。 4)定义字数据伪指令

5、定义字数据伪指令DW 格式: 标号: DW 功能:功能:与DB类似,但DW定义的数据项为字字,包括两个字节,存放时高高位在位在前前,低低位在位在后后。 例如:例如: ORG 1000H DATA: DW 324AH, 3CH 表示从程序存储器程序存储器1000H单元开始开始的地方存放数据32H,4AH,00H,3CH(3CH以字字的形式表示为003CH)。 5)定义空间伪指令定义空间伪指令DS 格式: 标号: DS 功能:功能:从指定的地址开始,保留值个存储单元作为备用备用的空间。 例如:例如: ORG 1000H BUF:DS 50 TAB:DB 22H ;22H存放在1032H单元 表示从

6、1000H开始开始的地方预留预留50(1000H1031H)个存储字节空间。 6)符号定义伪指令符号定义伪指令EQU或或“=” 格式: 符号名 EQU 或: 符号名= 功能:功能:将表达式的值值或某个特定汇编符号汇编符号定定义义为一个指定指定的符号名符号名,只能定义单字节单字节数据,并且必须遵循先定义先定义后使用后使用的原则,因此该语句通常放在放在源程序的开头部分开头部分。 例如例如: LEN=10 SUM EQU 21H MOV A,#LEN ; 执行指令后,累加器A中的值为0AH(10) 7)数据赋值伪指令数据赋值伪指令DATA 格式: 符号名 DATA 功能:功能:将表达式的值值或某个特

7、定汇编符号汇编符号定义定义为一个指定的符号名符号名,只能定义单字节数据,但可以可以先使用后定义先使用后定义,因此用它定义数据可以可以放在程序末尾末尾进行数据定义。 例如:例如: MOV A,#LEN LEN DATA 10 尽管LEN的引用在定义之前,但汇编语言系统仍可以知道A的值是0AH. 8)位地址符号定义伪指令位地址符号定义伪指令 BIT 格式: 字符名 BIT 位地址 功能:功能: 把BIT后面的位地址值位地址值赋给赋给字符名字符名。其中字符名字符名不是不是标号标号,其后没有冒号。 例如:例如: LED1 BIT P1.0 FLAG BIT 02H 经汇编后,P1口第0位的位地址90H

8、就赋给了LED1,而位寻址空间02H定义为FLAG。第二节汇编语言源程序的设计一、汇编语言源程序的设计步骤1、拟制设计任务书根据设计要求拟定拟定比较翔实的设计任务书任务书,包括:程序功能,技术指标,精度等级,实施方案,工程进度,所需设备,研制费用和人员分工等。2、建立数学模型既把控制系统的计算任务或控制对象的物理过程抽象归纳抽象归纳为数学模型数学模型(数学公式、数学的推数学公式、数学的推理和判断运行状态的模拟理和判断运行状态的模拟等)。3、确立算法根据被控对象的实时过程实时过程和逻辑关系逻辑关系,把数学数学模型模型演化演化为计算机可以处理的形式可以处理的形式,并拟制拟制出具体的算法和步骤算法和

9、步骤。 算法算法是解决问题的方案方案,是编写程序的一把钥匙,只要根据要求弄清题目的算法,编写程序就会十分容易。 教材中所列程序示例的算法通常比较简单,常用几行文字加以表达,阅读程序前应注意加深加深对他们的理解理解。4、绘制程序流程图根据实际情况确定确定程序的结构设计方法结构设计方法(如模模块化设计块化设计,自顶而下程序设计自顶而下程序设计等),并分别绘绘制制出相应的程序流程图程序流程图。 5、分配分配存储空间存储空间和工作单元工作单元 6、编辑编辑汇编语言源程序源程序 7、上机调试调试和程序优化优化 二、设计方法 常用的程序设计方是法模块化设计模块化设计(或称结构化结构化设计设计),是把总设计

10、任务划分成若干若干子任务子任务(子模块),分别分别设计设计各子模块各子模块,最后有机构成总模构成总模块块(主程序主程序)。 实现模块化设计的基本基本模块类型:顺序程序顺序程序;分分支程序支程序;循环程序循环程序。针对单片机特点还应掌握查查表程序表程序,中断程序中断程序,子程序子程序等的设计。 1、顺序程序和分支程序设计 1)顺序程序: 程序按按编写的顺序顺序依次依次往下执行执行每一条指令,直到直到最后一条最后一条。 它能够解决某些实际问题,顺序结构程序往往是分支程序和循环程序的组成部分。 例:编写计算下列算式的程序。 23H+45H+0ABH+03H 解: 分析:本题已给出给出了数学模型数学模

11、型,需要根据数学模型求出求出算法算法,再进行编程编程。 根据数学模型,显然要用加法指令加法指令,但当68H+0ABH时已超出超出一个字节,有溢出,结果也应显示,故,要有对溢出对溢出的处理处理。 流程图: ORG 0030H MOV A,#23H ADD A,#45H ADD A,#0ABH XCH A,B ADDC A,#00H XCH A,B ADD A,#03H END 2)分支程序: 在实际问题的编程处理中,通常会遇到根据不同不同的条件的条件进行判断判断,根据不同的判断结果不同的判断结果程序作出不同的相应处理不同的相应处理,这中结构称为分支分支。分支程序的设计主要依靠条件转移指令条件转移

12、指令、比较转移指令比较转移指令和位转移指令位转移指令来实现。 例:编写计算下列算式的程序。设乘积小于255,b不等于0,请能整除,a、b值分别存放在3001H和3002H单元,结果存放于片外3000H单元。 25, ab Y ab,ab 解: 数学模型模型已给出给出,显然用到条件转移条件转移指令。 由于条件转移指令中,或A与、direct,或Rn、Ri与比较,故都要将片外片外数据传到片内片内。 流程图:Org 2000hMov dptr,#3001hMovx a,dptrMov 30h,aInc dptrMovx a,dptrCjne a,30h,l1Mov a,#25Sjmp eeL1:jc

13、 l2Mov b,30hMul abSjmp eeL2:mov b,aMov a,30hDiv abEe:mov dptr,#3000hMovx dptr,aEnd 注: 1、在流程图中选选一条主线主线,遇到遇到有分支分支的地方就用用符号地址符号地址代替代替,直到直到公共公共插落点插落点,公共插落公共插落点点处用用一个符号地址符号地址,并用用短转移指令短转移指令转到转到这个符号地址符号地址,以等待等待其他分支其他分支; 2、用用各分支点定义定义的符号地址作符号地址作为为标号标号,分别写出写出其他支线到到公共插落点的程序程序,也用也用短转移指令转到转到公共分支点公共分支点的符号地址符号地址,当到

14、当到最后最后一个分分支时支时就可以继续继续向下向下运行运行; 3、若某一分支中没有没有实际实际的指令操作操作,其分支地方的符号地址符号地址就可以用用公共插落点处的符合地址符合地址,这一分支就可以省去省去不写。 例:已知内部RAM中的M1、M2单元中各有一个无符号8位二进制数。试编程比较它们的大小,并把大数放到MAX单元中。 解: 数学模型模型:若M1M2,则将M1放到MAX;M1=0;x=y。 算法:减法、循环。 流程图: Black equ 40h Mov sp,#70h Mov len,#10 Mov a,#100 Mov r1,#black Loop1:mov r1,a Inc r1 Inc a Djne len,loop1 Moc len,#15 Mov a,#30h Loop2:mov r1,a Inc r1 Inc a Djnz len,loop2 Clr a Mov len,#25 Mov r2,len Mov r1,#black Loop:clr c Subb a,r1 Jnc next1 Mov a,r1 Sjmp next2 Next1:add a,r1 Next2:inc r1

温馨提示

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

评论

0/150

提交评论