汇编语言程序设计知识

上传人:aa****6 文档编号:51275541 上传时间:2018-08-13 格式:PPT 页数:70 大小:329.50KB
返回 下载 相关 举报
汇编语言程序设计知识_第1页
第1页 / 共70页
汇编语言程序设计知识_第2页
第2页 / 共70页
汇编语言程序设计知识_第3页
第3页 / 共70页
汇编语言程序设计知识_第4页
第4页 / 共70页
汇编语言程序设计知识_第5页
第5页 / 共70页
点击查看更多>>
资源描述

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

1、第四章 汇编语言程序设计及知识4.1 编程的步骤、方法和技巧4.2 汇编语言源程序的编辑和汇编4.1 编程的步骤、方法和技巧4.1.1 编程的步骤4.1.2 编程的方法和技巧4.1.3 汇编语言程序的基本结构4.1.1 编程的步骤n一、分析问题n二、确定算法n三、画程序流程图n四、编写程序一、分析问题n对需要解决的问题进行分析,以求对问题由正确 的理解。如,n解决问题的任务是什么?n工作过程?n现有的条件,已知数据,对运算的精度和速度方 面的要求?n设计的硬件结构是否方便编程?二、确定算法n算法是如何将实际问题转化成程序模块来处理。n在编程以前,先要对几种不同的算法进行分析、 比较,找出最适宜

2、的算法三、画程序流程图n程序流程图是使用各种图形、符号、有向线段等来说明程序设计过程的一种直观的表示。n流程图步骤分得越细致,编写程序是也越方便。n画流程图是程序结构设计是采用的一种重要手段。n一个系统软件有总的流程图(主程序框图)和局部的流程图。n流程图常采用的图形和符号。椭圆框或桶形框:表示程序的开始或结束。矩形框:表示要进行的工作。菱形框:表示要判断的事情,菱形框内 的表达式表示要判断的内容。圆圈:表示连接点指向线:表示程序的流向四、编写程序n用80C51汇编语言编写的源程序行(一条语句) 包括四个部分,也叫四个字段: 标号:操作码操作数;注释n 每个字段之间要用分隔符分隔,而每个字段内

3、部不能使 用分隔符。可以用作分隔符的符号:空格“ ”、冒号“:”、 、逗号“,”、分号“;”等。 例:LOOP:MOV A,#00H;立即数00HA标号n标号是用户定义的符号地址。n一条指令的标号是该条指令的符号名字,标号的值是汇编 这条指令时指令的地址。n标号由以英文字母开始的18个字母或数字组成,以冒 号“:”结尾。n标号可以由赋值伪指令赋值,如果没有赋值,汇编程序把 存放该指令目标码第一字节的存储单元的地址赋给该标号 ,所以,标号又叫指令标号。操作码n操作码是必不可少的。n它用一组字母符号表示指令的操作码。在80C51 中,由80C51的指令助记符组成。操作数n汇编语言指令可能要求或不要

4、求操作数,所以这一字段可能有也可能 没有。n若有两个操作数,操作数之间用逗号“,”分开。n操作数包括的内容有:n(1)工作寄存器:由PSW.3和PSW.4规定的当前工作寄存器区中的 R0R7。n(2)特殊功能寄存器:21个SFR的名字。n(3)标号名:赋值标号由汇编指令EQU等赋值的标号;指令标号 指令标号指示的指令的第一字节地址是该标号的值。n(4)常数:可用二进制(B)、十进制、十六进制(H),若常数以 字符开头,前面加0。n(5)$:用来表示程序计数器的当前值。n(6)表达式:汇编时,计算出表达式的值填入目标码。注释n注释部分不是汇编语言的功能部分,只是用语增 加程序的可读性。n良好的注

5、释是汇编语言程序编写中的重要组成部 分。4.1.2 编程的方法和技巧一、模块化的程序设计方法二、编程技巧一、模块化的程序设计方法1、程序功能模块化的优点2、划分模块的原则1、程序功能模块化的优点n单个模块结构的程序功能单一,易于编写、调试和修改。n便于分工,从而可使多个程序员同时进行程序的编写和调 试工作,加快软件研制进度。n程序可读性好,便于功能扩充和版本升级。n对程序的修改可局部进行,其它部分可以保持不变。n对于使用频繁的子程序可以建立子程序库,便于多个模块 调用。2、划分模块的原则n每个模块应具有独立的功能,能产生一个明确的结果,即单模块的功能高内聚性。n模块之间的控制耦合应尽量简单,数

6、据耦合应尽量少,即模块间的低耦合性。控制耦合是指模块进入和退出的条件及方式,数据耦合是指模块间的信息交换方式、交换量的多少及交换频繁程度。n模块长度适中。20条100条的范围较合适。二、编程技巧1、尽量采用循环结构和子程序。2、尽量少用无条件转移指令。3、对于通用的子程序,考虑到其通用性,除了用于存放子程序入口参数的寄存器外,子程序中用到的其他寄存器 的内容应压入堆栈(返回前再弹出),即保护现场。4、在中断处理程序中,除了要保护处理程序中用到的寄存器外,还要保护标志寄存器。5、用累加器传递入口参数或返回参数比较方便,在子程序中,一般不必把累加器内容压入堆栈。4.1.3 汇编语言程序的基本结构一

7、、顺序程序二、分支程序三、循环程序一、顺序程序n顺序程序是最简单的程序结构,即顺序结 构。n程序按顺序一条一条地执行指令。例1:三字节无符号数相加 (50H)(51H)(52H)(50H)(51H)(52H)+(53H)(54H)(55H)MOV R0,#52HMOV R1,#55HMOV A,R0ADD A,R1MOV R0,ADEC R0DEC R1MOV A,R0ADDC A,R1MOV R0,ADEC R0DEC R1MOV A,R0ADDC A,R1MOV R0,ACLR AADDC A,#00HMOV R0,#20HMOV R0,A把进位结果送到20H单元(50H)(51H)(52

8、H)(50H)(51H)(52H)+(53H)(54H)(55H)顺序结构例2、字节分解 FJ: MOV A, 30HANL A, #0FHMOV 50H, AMOV A, 30HANL A, #0F0HMOV 51H, ARET有问题吗?二、分支程序n程序分支是通过条件转移指令实现的,即根据条件对程序的执行进行判断、满足条件则进行程序转移,不满足条件就顺序执行程序。n分支程序又分为单分支和多分支结构。n多分支程序是首先把分支程序按序号排列,然后按序号值进行转移。二、分支程序n在MCS-51指令系统中,通过条件判断实现单分支程序转移的指令有:JZ、JNZ、CJNE、DJNZ等。此外还有以位状态

9、作为条件进行程序分支的指令,如JC、JNC、JB、JNB、JBC等。使用这些指令可以完成0、1、正、负,以及相等、不相等作为各种条件判断依据的程序转移。n结构如图4-1所示。图4-1START: CLR CMOV DPTA,#ST1MOVX A,DPTRMOV R2,AINC DPTRMOVX A,DPTRSUBB A,R2JNC BIG1XCH A,R2BIG0:INC DPTR MOVX DPTR,ARETBIG1: MOVX A,DPTRSJMP BIG0单分支举例:外部RAM中有ST1、ST2、ST3共3个连续单元 ,要求从ST1、ST2两个单元中找出大数存入ST3中。 (均为无符号数

10、)CJNE A,55H,LOOP1AJMP FHLOOP1:JNC JWCJNE A,54H,LOOP2AJMP FHLOOP2:JC SWFH: RET多重单分支举例:温度值Ta在A中,内部RAM54H放温度下 限,55H放温度上限。根据温度比较,采取JW、SW、FH。例: 128种分支转移程序。 功能:根据入口条件转移到128个目的地址。 入口:(R3)=转移目的地址的序号00H7FH。 出口:转移到相应子程序入口。128个子程序首址JMP_128:MOV A,R3RL AMOV DPTR,#JMPTABJMP A+DPTR JMPTAB:AJMP ROUT00AJMP ROUT01 AJ

11、MP ROUT7F通过转移指令表实现程序多分支举例键盘上有3 个键 键值放在A 中01执行 DS02执行 XS03执行 CR MOV DPTR,#3000HCLR CRLC AJMP A+DPTR 3000H 3001H 3002H AJMP DS 3003H 3004H AJMP XS 3005H 3006H AJMP CRMOV A,R3 MOV DPTR,#brtab MOVC A,A+DPTR JMP A+DPTR BRTAB: DB BR0_BRTABDB BR1_BRTABDB BR2_BRTABDB BR3_BRTABBR0:MOV A,R0SJMP BRE BR1 :MOVX

12、A,R0SJMP BRE BR2: MOV A,R1ANL A,#0FHANL P2,#0FHORL P2,AMOVX A,R0 BR3: MOV DPL,R0MOV DPH,R1MOVX A,DPTR BRE : SJMP $通过数据表实现程序多分支举例,分支序号放在R3中MOV DPTR,#BRTAB MOV A,R0 RL A MOV R1,A INC A MOVC A,A+DPTR PUSH ACC MOV A,R1 MOVC A,A+DPTR PUSH ACC RET BRTAB:DW BR0DW BR1DW BR127通过堆栈实现程序多分支举例,分支序号放在R0中,分支程 序入口地

13、址放在BRATAB表中子程序返回指令 RET、RETI,弹出 断点送给PC,先弹 高8位,后弹低8位 ;DW定义数据字 命令:高8位在前 ,低8位在后MOV DPTR,#BS RL A MOV R2,A MOVC A,A+DPTR PUSH ACC MOV A,R2 INC AMOVC A,A+DPTR MOV DPH,A POP DPL CLR A JMP A+DPTR BS:DB RK0LDB RK0HDB RK1LDB RK1HDB RK2LDB RK2H键码放在A中键码 入口地址0 RK01 RK12 RK2三、循环程序n在程序运行时,有时需要连续重复执行某段程序 ,可以使用循环程序。

14、其结构包括四部分:1、置循环初值2、循环体(循环工作部分)3、修改控制变量4、循环控制部分1、置循环初值n对于循环程序中所使用的工作单元,在循环开始 时应置初值。n例如,工作寄存器设置计数初值,累加器A清0, 以及设置地址指针、长度等。2、循环体(循环工作部分)n重复执行的程序段部分,分为循环工作部分和循 环控制部分。n循环控制部分每循环一次,检查结束条件,当满 足条件时,就停止循环,往下继续执行其他程序3、修改控制变量n在循环程序中,不许给出循环结束条件。n常见的是计数循环,当循环了一定的次数后,就 停止循环。n在单片机中,一般用一个工作寄存器Rn作为计数 器,对该计数器赋初值作为循环次数。

15、每循环一次 ,计数器的值减1,即修改循环控制变量,当计数 器的置件为0时,就停止循环。4、循环控制部分n根据循环结束条件,判断是否结束循环。n80C51可采用DJNZ指令来自动修改控制变量并 能结束循环。置初值循环体循环修改循环控制退出循环未完完(a)置初值循环体循环修改循环控制退出循环 未完完(b)图 循环组织方式流程图MOV R2,#0FFHMOV R0,#3FH LOOP:INC R2INC R0 CJNE R0,#0DH,LOOPRET字符串存放在内部RAM从40H单元开始的连续单元, 以回车符结束。试统计字符串长度。把内部RAM起始地址为data的数据串传送到外部RAM以buffer 为首的区域

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

当前位置:首页 > 办公文档 > PPT模板库 > 教育/培训/课件

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