第4章汇编程序设计.ppt

上传人:王** 文档编号:595769 上传时间:2023-12-08 格式:PPT 页数:80 大小:827KB
下载 相关 举报
第4章汇编程序设计.ppt_第1页
第1页 / 共80页
第4章汇编程序设计.ppt_第2页
第2页 / 共80页
第4章汇编程序设计.ppt_第3页
第3页 / 共80页
第4章汇编程序设计.ppt_第4页
第4页 / 共80页
第4章汇编程序设计.ppt_第5页
第5页 / 共80页
第4章汇编程序设计.ppt_第6页
第6页 / 共80页
第4章汇编程序设计.ppt_第7页
第7页 / 共80页
第4章汇编程序设计.ppt_第8页
第8页 / 共80页
第4章汇编程序设计.ppt_第9页
第9页 / 共80页
第4章汇编程序设计.ppt_第10页
第10页 / 共80页
亲,该文档总共80页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第4章汇编程序设计.ppt》由会员分享,可在线阅读,更多相关《第4章汇编程序设计.ppt(80页珍藏版)》请在优知文库上搜索。

1、第4章MCS-51汇编语言程序设计 第第4章章MCS-51汇编语言程序设计汇编语言程序设计 4.1简单程序设计4.2分支程序设计4.3循环程序设计4.4散转程序设计4.5子程序和参数传递方法4.6查表程序设计4.7数制转换习题与思考题第4章MCS-51汇编语言程序设计 程序设计是为了解决某一个问题而将指令有序地组合在一起的过程。程序有简有繁,但复杂程序往往是由简单的基本程序所构成的。本章将通过一些基本程序,介绍部分常用的程序设计方法。程序设计的过程大致可以分为以下几个步骤:(1)编制要解决问题的程序框图。(2)确定数据结构、算法、工作单元、变量设定。(3)根据所用计算机的指令系统,按照已编制的

2、程序框图用汇编语言编制出源程序。(4)将编制的程序在计算机上调试,直至实现预定的功能。第4章MCS-51汇编语言程序设计 一、汇编程序功能一、汇编程序功能 源程序源程序 (汇编指令程序)(汇编指令程序)汇编汇编 目标程序目标程序(机器码指令程序)(机器码指令程序)汇编指令与机器码指令有一一对应的关系。汇编指令与机器码指令有一一对应的关系。汇编程序是一种翻译程序,将源程序翻译成目标程序。汇编程序是一种翻译程序,将源程序翻译成目标程序。第4章MCS-51汇编语言程序设计 二、汇编程序的汇编过程二、汇编程序的汇编过程 汇编有两种方法:手工汇编、机器汇编。汇编有两种方法:手工汇编、机器汇编。1 1、手

3、工汇编:、手工汇编:第一次汇编:确定地址,翻译成各条机器码,字符标号第一次汇编:确定地址,翻译成各条机器码,字符标号原样写出;原样写出;第二次汇编:标号代真,将字符标号用所计算出的具体第二次汇编:标号代真,将字符标号用所计算出的具体地址值或偏移地址值或偏移量代换。量代换。第4章MCS-51汇编语言程序设计 源程序源程序 目标程序目标程序 地址地址 ORG 1000H ORG 1000H START START:MOV R0MOV R0,2FH 2FH MOV R2 MOV R2,#00H#00H MOV A MOV A,R0 R0 MOV R3 MOV R3,A A INC R3 INC R3

4、 SJMP SJMP NEXT NEXT LOOP LOOP:INC R0 INC R0 CJNE R0 CJNE R0,#44H#44H,NEXTNEXT INC R2 INC R2 NEXT NEXT:DJNZ R3DJNZ R3,LOOPLOOP MOV MOV 2AH2AH,R2 R2 SJMP$SJMP$END END 第一次汇编第一次汇编第二次汇编第二次汇编1000 A82F1002 7A001004 E61005 FB1006 0B1007 80NEXT1009 08100A B644NEXT100D 0A100E DBLOOP1010 8A2A1012 80FEA82F7A00

5、E6FB0B800508B644010ADBF98A2A80FE第4章MCS-51汇编语言程序设计 2 2、机器汇编、机器汇编两次扫描过程。两次扫描过程。第一次扫描:第一次扫描:检查语法错误,确定符号名字;检查语法错误,确定符号名字;建立使用的全部符号名字表;建立使用的全部符号名字表;每一符号名字后跟一对应值(地址或数)。每一符号名字后跟一对应值(地址或数)。第二次扫描:第二次扫描:是在第一次扫描基础上,将符号地址转换成是在第一次扫描基础上,将符号地址转换成 地址(代真);地址(代真);利用操作码表将助记符转换成相应的目标码。利用操作码表将助记符转换成相应的目标码。第4章MCS-51汇编语言程

6、序设计 三、伪指令三、伪指令 伪指令是告诉汇编程序,如何汇编源程序的指令。伪指令是告诉汇编程序,如何汇编源程序的指令。伪指令既不控制机器的操作,也不能被汇编成机器代码,伪指令既不控制机器的操作,也不能被汇编成机器代码,故称为伪指令。故称为伪指令。1 1、起始地址伪指令、起始地址伪指令 ORGORG ORG addr16ORG addr16 用于规定目标程序段或数据块的起始地址,用于规定目标程序段或数据块的起始地址,设置在程序开始处。设置在程序开始处。2 2、汇编结束伪指令、汇编结束伪指令 ENDEND 告诉汇编程序,对源程序的汇编到此结束。告诉汇编程序,对源程序的汇编到此结束。一个程序中只出现

7、一一个程序中只出现一 次,在末尾。次,在末尾。第4章MCS-51汇编语言程序设计 3 3、赋值伪指令、赋值伪指令 EQUEQU 告诉汇编程序,将汇编语句操作数的值赋予本语句的标号。告诉汇编程序,将汇编语句操作数的值赋予本语句的标号。格式:格式:标号名称标号名称 EQU EQU 数值或汇编符号数值或汇编符号 “标号名称标号名称”在源程序中可以作数值使用,也可以作数据地址、在源程序中可以作数值使用,也可以作数据地址、位地址使用。位地址使用。先定义后使用,放在程序开头。先定义后使用,放在程序开头。4 4、定义字节伪指令、定义字节伪指令 DBDB 告诉汇编程序从指定的地址单元开始,定义若干字节存储单告

8、诉汇编程序从指定的地址单元开始,定义若干字节存储单 元并赋初值。元并赋初值。格式:格式:标号:标号:DB DB 字节数据或字节数据表字节数据或字节数据表第4章MCS-51汇编语言程序设计 例、例、ORG 1000HORG 1000H PIOI PIOI:DW 7654HDW 7654H,40H40H、1212、ABAB 6 6、数据地址赋值伪指令、数据地址赋值伪指令 DATADATA 将表达式指定的数据地址赋予规定的字符名称将表达式指定的数据地址赋予规定的字符名称 格式:格式:字符名称字符名称 DATA DATA 表达式表达式注:该指令与注:该指令与EQUEQU指令相似,只是,可先使用后定义,

9、指令相似,只是,可先使用后定义,放于程序开头、结尾均可。放于程序开头、结尾均可。5、定义字伪指令、定义字伪指令 DW 从指定地址开始,定义若干个从指定地址开始,定义若干个16个位数据,高八位存入低个位数据,高八位存入低地址;低八位存入高地址。地址;低八位存入高地址。第4章MCS-51汇编语言程序设计 7 7、定义空间伪指令、定义空间伪指令 DSDS 从指定地址开始,保留由表达式指定的若干字节空间作从指定地址开始,保留由表达式指定的若干字节空间作 为备用空间。为备用空间。格式:格式:标号:标号:DS DS 表达式表达式例例2 2、ORG 1000HORG 1000H DS 0AH DS 0AH

10、DB 71H DB 71H,11H11H,11H 11H ;从;从100BH100BH开始存放开始存放 ;71H11H71H11H、11H11H。注:注:DBDB、DWDW、DS DS 只能用于程序存储器;只能用于程序存储器;而不能用于数据存储器。而不能用于数据存储器。第4章MCS-51汇编语言程序设计 8 8、位地址赋值伪指令、位地址赋值伪指令 BITBIT将位地址赋予规定的字符名称。将位地址赋予规定的字符名称。格式:格式:字符名称字符名称 BIT BIT 位地址位地址 例例3 3、X1 BIT P12X1 BIT P12 相当于相当于 X1 EQU 92HX1 EQU 92H 第4章MCS

11、-51汇编语言程序设计 程序设计有时是一件很复杂的工作,但往往程序设计有时是一件很复杂的工作,但往往有些程序结构是很典型的。采用结构化编程时,有有些程序结构是很典型的。采用结构化编程时,有规律性极强、简单清晰、容易读写、可靠性高等特规律性极强、简单清晰、容易读写、可靠性高等特点。点。根据根据结构化程序设计的观点结构化程序设计的观点,功能复杂的程序,功能复杂的程序结构由基本算法结构组成,基本结构有三种:结构由基本算法结构组成,基本结构有三种:顺序顺序结构、循环结构和分支结构。结构、循环结构和分支结构。第4章MCS-51汇编语言程序设计 语句 3语句 2顺序结构顺序结构 入口入口语句 1 出口出口

12、分支结构分支结构入口入口条件满足否?条件满足否?分支分支 1 出口出口YN 分支分支 2循环结构循环结构入口入口 处理 修改条件条件满足否?Y 出口出口N第4章MCS-51汇编语言程序设计 4.1简单程序设计简单程序设计简单程序又称顺序程序。计算机是按指令在存储器中存放的先后次序来顺序执行程序的。【例4-1】两个8位的无符号数相加的和仍是8位。设内部 RAM的40H、41H单元中分别存放8位数N1、N2,两数相加的结果送42H单元。程序如下:AD1:MOV R0,#40H ;设R0为数据指针 MOV A,R0 ;取N1 INC R0 ;修改指针 ADD A,R0 ;N1+N2 INC R0 M

13、OV R0,A ;存结果 END第4章MCS-51汇编语言程序设计【例4-2】将两个半字节数合并成一个一字节数。设内部RAM的40H、41H单元中分别存放着8位二进制数,要求取出两个单元中的低半字节,并将其合并成一个字节后存放在42H单元。程序如下:第4章MCS-51汇编语言程序设计 START:MOV R1,#40HMOV A,R1 ANL A,#0FH ;取第一个半字节 SWAP A ;移至高4位 INC R1 XCH A,R1 ;取第二个字节 ANL A,#0FH ;取第二个半字节 ORL A,R1 ;拼字 INC R1 MOV R1,A ;存放结果 END第4章MCS-51汇编语言程序

14、设计 以上程序均采用了寄存器寻址方式,可以方便地取数、存数。例4-2 中用XCH A,R1指令,既取出了数,又保存了中间结果。第4章MCS-51汇编语言程序设计 4.2分支程序设计分支程序设计在处理实际事务中,只用简单程序设计的方法是不够的,因为大部分程序总包含有判断、比较等情况,程序将根据判断、比较的结果转向不同的分支。下面举两个分支程序的例子。第4章MCS-51汇编语言程序设计【例4-3】两个无符号数比较大小。设存储单元ST1和ST2中存放着两个不带符号的二进制数,找出其中的大数存入ST3单元中。流程图如图4-1所示。第4章MCS-51汇编语言程序设计 图4-1两个无符号数的比较流程 第4

15、章MCS-51汇编语言程序设计 程序如下:ST1:EQU 8040HORG 8000HSTART1:CLR C ;进位位清0 MOV DPTR,#ST1 ;设数据指针 MOVX A,DPTR ;取第一个数 MOV R2,A ;暂存于R2 INC DPTR MOVX A,DPTR ;取第二个数 SUBB A,R2 ;两数比较 JNC BIG1 XCH A,R2 ;第一个数大第4章MCS-51汇编语言程序设计 BIG0:INC DPTR MOVX DPTR,A ;存大数 RET BIG1:MOVX A,DPTR ;第二个数大 SJMP BIG0 END第4章MCS-51汇编语言程序设计 上面程序中

16、,用减法指令SUBB来比较两数的大小。由于这是一条带借位的减法指令,因此在执行该指令前,应先把进位位清0。用减法指令通过借位(CY)的状态判别两数的大小,是两个无符号数比较大小时常用的方法。设有两数x,y,执行x-y,当xy 时,结果无借位产生,则CY=0;反之,则CY=1,表示x0,1A SJMP FINISHSUL:MOV A,#0 SJMP FINISH NEG1:MOV A,#FFH;x0,-1A FINISH:MOV DPTR,#BUF MOVX DPTR,A END第4章MCS-51汇编语言程序设计 4.3循环程序设计循环程序设计在程序设计中,在程序设计中,只有简单程序和分支程序是不够的。只有简单程序和分支程序是不够的。因为简单程序每条指令只执行一次,因为简单程序每条指令只执行一次,而分支程序则根据条而分支程序则根据条件的不同,件的不同,会跳过一些指令,会跳过一些指令,执行另一些指令。执行另一些指令。它们的它们的特点是,特点是,每一条指令至多执行一次。每一条指令至多执行一次。在处理实际事务时,在处理实际事务时,有时会遇到有时会遇到多次重复处理的问题,多次重复处理的问题,用循

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

copyright@ 2008-2023 yzwku网站版权所有

经营许可证编号:宁ICP备2022001189号-2

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