第五章 汇编语言程序设计方法.doc

上传人:s9****2 文档编号:559534052 上传时间:2023-10-28 格式:DOC 页数:20 大小:153.01KB
返回 下载 相关 举报
第五章 汇编语言程序设计方法.doc_第1页
第1页 / 共20页
第五章 汇编语言程序设计方法.doc_第2页
第2页 / 共20页
第五章 汇编语言程序设计方法.doc_第3页
第3页 / 共20页
第五章 汇编语言程序设计方法.doc_第4页
第4页 / 共20页
第五章 汇编语言程序设计方法.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《第五章 汇编语言程序设计方法.doc》由会员分享,可在线阅读,更多相关《第五章 汇编语言程序设计方法.doc(20页珍藏版)》请在金锄头文库上搜索。

1、第五章 汇编语言程序设计方法本章课题:汇编语言程序设计方法教学内容:1)、汇编语言程序设计 2)、顺序与循环程序设计方法 3)、分支程序设计方法 4)、查表程序设计方法 5)、子程序设计方法 6)、综合程序设计方法教学目的:通过本章的学习应掌握汇编语言程序设计方法,具备较复杂程序设计能力。本章重点:汇编语言程序设计方法本章难点:分支程序设计方法教 案:第一节 汇编语言程序设计1、程序设计语言1)、机器语言 直接用二进制数表示指令和数据的最原始的程序设计语言。2)、汇编语言用助计符来表示的面向机器的程序设计语言。用汇编语言编制的程序须要用“人工汇编”或“机器汇编”将其翻译成机器语言,才能被机器认

2、识。3)、高级语言 高级语言是一种面向过程而独立于计算机硬件结构的通用计算机语言。如FORTRAN、PASCAL、C语言等。注意:机器语言直接面对机器,实时性好,但难以编出较复杂的程序,现基本上被汇编语言代替;汇编语言是目前单片机初学者采用的一种编程方法,它具有实时性强,对较复杂的程序也能编制。高级语言它面向过程易于编制复杂程序,具有通用性好,程序简单,但它要求占用较大的内存空间,实时性差,目前从事单片机的开发和研究工作须掌握这种方法。2、汇编语言的规范 1)、汇编语言源程序的格式 标号:操作码 目的操作数,源操作数;注释 2)、汇编语言伪指令ORG-起始地址伪指令;功能:用来规定目标程序或数

3、据的起始地址。格式:标号: ORG 16位地址说明:在一个程序中允许有多个ORG指令,以规定不同程序段的起始位置。END-汇编结束伪指令;功能:用来告诉汇编程序,此源程序到此结束。格式:标号: END说明:在一个程序中有且只有一个END指令。例如: ORG 1000HSTART:MOV A,B JNB ACC.7,DONE CPL ADONE:MOV B,A ENDEQU-赋值伪指令;格式: 字符名称 EQU 数或汇编符号功能:将右边值赋给左边用户定义的字符说明:a、由EQU赋的字符可以作数值、数据地址、代码地址。 b、由EQU伪指令所定义的符号必须先定义后使用。例如:SDGFG EQU 58

4、H ;表示SDGFG=58HDB-定义字节伪指令;格式:标号: DB 8位(二进制)数据表。功能:用于告诉汇编程序从指定的地址单元开始,定义若干个字节存储单元的内容。说明:a、数据表可以是二进制数也可以是ASC编码,数据之间用逗号分开,ASC要加单引号,如C,要写成C。 b、它只适应程序存储器。例如: ORG 1000H1000H 73H1001H 20H1002H 45H1003H 67H1004H 01H1005H 74H1006H 55H1007H 34H1008H 67H1009H 89H100AH 70HFIRST:DB 73H,20H,45H,67H,01H MOV A,#55H

5、DB 34H,67H,89H,70H执行后的结果如图1所示、DW-定义值伪指令;功能:用来告诉汇编程序从指定的地址单元开始,定义若干个16位数据(二进制)。格式:标号: DW 字常数或ASC字符图1 由DB建立的数据表说明:a、字常数可以是8位也可以是更多位。b、尽管在存储数据的形式上与DB相同但使用不一样,DB后面只能跟8位的数据或ASC字符。 C、它只适应程序存储器。d、单个DW、DB定义的数表个数不得超过80个,多于80个数据应用多个指令完成例如: ORG 1000H地址: 数据1000H 56H1001H 78H1002H 12H1003H 34H1004H 23H1005H 79HP

6、IOI:DW 5678H,1234H,2379H结果如图2所示。、TA-数据地址赋值伪指令;格式:字符名称 DATA 表达式功能:它的功能是给标号段中的标号赋以数值。说明:a、本语句与EQU相似,但本语句可以先用后定义;图2由DW建立的数据表b、在程序中它常用来定义数据地址。、BIT-位地址赋值伪指令;格式:字符名称 BIT位地址功能:用于告诉汇编程序,把位地址赋予规定的字符名称,用于位处理程序中。例如: X0 BIT P1.03、汇编语言程序设计方法1)、程序设计过程建立数学模型选择适当的算法编制程序流程图汇编语言程序设计汇编语言程序调试 2)、程序流程图程序流程图的作用能直观形象地表示各部

7、分的逻辑关系及程序结构,它是设计程序特别是复杂程序的重要工具。程序流程图的组成l 端点框表示程序的开始或结束,用 表示,可在内填上相应文字。l 流程线表示程序的组向,用方向键 表示。l 处理框表示一种处理功能 ;框内用文字说明。用 表示。l 判断框用 表示,该框用于指示一个判定点,从这点产生分支,在框内就注明测试条件,而测试结果应注明在各分支流程线上。l 连接框连接框用 表示,它表示流程中止而并非流程结束。通常用来辟免流程线交叉,在流程图中标识相同的连接框表示流程相连。l 子程序框用 表示,该框表示调用子程序。在该框内填入相应的子程序名称或入口地址。程序流程图的设计程序流程图的设计将在具体的程

8、序设计方法中针对具体的例子加以介绍。第二节 顺序与循环程序设计方法1、 顺序程序设计1)、顺序结构程序设计方法 建立数学模型 画程序流程图 编写汇编程序2)、应用举例开始低位取反加1高位取反加C结束 例1:设有16位二进制数存放在R0、R1中(R0存放高位),试编写实现16位二进制数“取反加1”的操作程序。解法1: 程序流程如图3所示,程序如下:ORG 1000HSTART:MOV A,R1 CPL A ADD A, #01H MOV R1, A MOV A,R0图3 程序流程图 CPL A ADDC A, #00H MOV R0, A END解法2:通过将R0、R1分别送DPTR的高低字节,

9、然后利用 INC DPTR实现加1,取反后再用:CPL A这样的指令实现。 例2:设在8031单片机内部RAM的40H单元中存放8位二进制数,要求将其转换成相应BCD码并由高位的顺序存入内部RAM以60H为首址的3个连续单元中,试编写相应程序: 解:本题的关键是如何将二进制数转换成BCD码。 由数学变换知:8位二进制/100=BCD码的百位数 余数/10= BCD码的十位数 余数= BCD个位数 程序如下: ORG 1000H BINBCD: MOV R0, #60H MOV A, 40H MOV B, #100 DIV AB ;整数存于A中 MOV R0, A INC R0 MOV A, #

10、10 XCH A, B DIV AB MOV R0, A INC R0 XCH A, B MOV R0, A END思考题:对于任意一个16进制表示的数,如AB9EF087,存放在以20H为首址的单元中,如何将其转化成BCD码?2、 循环程序设计方法1)、循环结构程序的组成初始化部分:它是用来设置循环初始化状态,如设置地址指针、循环计数器初值等。循环处理部分:它是重复执行的数据处理程序。循环控制部分:它通过检测循环次数或循环结束条件从而控制程序循环继续与否。结束部分:它是对结果分析处理和存放结果。2)、循环程序设计方法(1)单循环程序设计方法循环次数是已知的循环程序设计先分析要解决的问题,建立

11、解决问题的数学模型,然后编写出对应的程序,按已知条件设置程序循环次数。循环次数未知的循环程序设计先分析要解决的问题,建立解决问题的数学模型,确定待测定循环的参数,在编程过程中,选取合适的判别语句控制程序的循环。(2) 多循环程序设计方法多循环程序设计除必须满足单循环程序设计的规则外,尚须符合循环不允许交叉的规定。3)、应用举例 单循环程序设计举例: 例1:已知80C51单片机使用6MHZ晶振,要求设计一个软件延时程序,延时时间为10ms。分析:晶振为6MHZ的单片机一个机器周期为2us,如果采用循环方法,控制程序循环次数,就可以实现定时功能。如图4为程序流程。如程序如下: 周期数 ORG 2000H1 MOV R0,#0AH;毫秒数1 DL2:MOV R1,#MT1 DL1:NOP1 NOP2 DJNZ R1,DL1图4 程序流程图2 DJNZ R0,DL2END定时值的确定:(1+1+2)2usMT=1000us MT=7DH 例2:用P1口作为数据读入口,为了读取稳定的值,要求连续读8次,然后取平均值。分析:设R0、R1作为连续8次累加的16位工作寄存器,且R0存放高位,R1存放低位,在二进

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 社会民生

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