汇编语言程序设计

上传人:宝路 文档编号:47900245 上传时间:2018-07-06 格式:PPT 页数:40 大小:921.67KB
返回 下载 相关 举报
汇编语言程序设计_第1页
第1页 / 共40页
汇编语言程序设计_第2页
第2页 / 共40页
汇编语言程序设计_第3页
第3页 / 共40页
汇编语言程序设计_第4页
第4页 / 共40页
汇编语言程序设计_第5页
第5页 / 共40页
点击查看更多>>
资源描述

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

1、第3章 MCS-51单片机汇编语言程序设计 单片机原理、接口及应用单片机原理、接口及应用第3章 MCS-51单片机汇编语言程序设计 内 容 提 要概述伪指令汇编语言程序设计步骤顺序程序设计分支程序设计循环程序设计位操作程序设计子程序小结第3章 MCS-51单片机汇编语言程序设计 6.1 汇编语言MCS-51单片机的编程语言可以是汇编语言也可以 是高级语言(如C语言),高级语言编程快捷,但程序 长,占用存储空间大,执行慢;汇编语言产生的目标 程序简短,占用存储空间小,执行快,能充分发挥计 算机的硬件功能。无论是高级语言还是汇编语言,源 程序都要转换成目标程序(机器语言)单片机才能执 行。 第3章

2、 MCS-51单片机汇编语言程序设计 目前很多公司将编辑器、汇编器、编译器、连接/定位器、符号转换程序做成集成软件包,用户进入该集成环境,编辑好程序后,只需点击相应菜单就可以完成上述的各步,如WAVE、KEIL . 汇编:将汇编语言源程序转换成机器语言目标程序的过程称为汇编。 汇编程序:能将汇编语言源程序转换成机器语言目标程序的系统软件称为汇编程序。第3章 MCS-51单片机汇编语言程序设计 汇编的方法:汇编的方法有两种1.手工汇编:人工查指令表,查出程序中每条指令对应的机器代码。早期的计算机使用。2.机器汇编:用计算机中的汇编程序对用户源程序进行汇编。用机器汇编要提供给汇编一些信息,遵循汇编

3、程序的一些约定。这些由伪指令指定。第3章 MCS-51单片机汇编语言程序设计 汇编语言程序设计步骤一.确定方案和计算方法二.了解应用系统的硬件配置、性能指标三.建立系统数学模型,确定控制算法和操作步骤 四.合理分配存储器单元和了解I/O接口地址五. 编制源程序 1.按功能设计程序,明确各程序之间 的相互关系 2. 用流程图表示程序结构和功能开始1YN?3.程序中用注释说明指令在程序中的 作用,方便阅读、调试和修改第3章 MCS-51单片机汇编语言程序设计 6.2 顺序程序设计 顺序程序(简单程序),程序走向只有一条路径 。常用程序结构顺序程序、分支程序、循环程序、子程序第3章 MCS-51单片

4、机汇编语言程序设计 例6-1:将R2,R3双字节符号数求补程序。ORG 2000H MAIN:MOV A,R2CPL AADD A,#01HMOV R2,A ;低位字节补码送R2MOV A,R3CPL AADDC A,#01H ;高位加进位MOV R3,A ;高位字节补码送R3RET分析: 本程序对R3(高)、R2(低)中 的二进制定点数取反加1,便得到其补码 :第3章 MCS-51单片机汇编语言程序设计 例6.2 拆字程序。将30H的内容拆开,高位送入31H,低位送入 32H。ORG 0050H CWIRD:MOV A,30HSWAP AANL A,#0FHMOV 31H,A MOV A,3

5、0HANL A,#0FHMOV 32H,AEND片内RAM32H0531H0630H650605第3章 MCS-51单片机汇编语言程序设计 地址数据 TAB0TAB+11TAB+24TAB+39TAB+416HTAB+525H例3-4 设变量放在片内RAM的20H单元,其值为00H05H 之间,要求编查表程序,查出变量的平方值, 并放入片内RAM的21H单元。ORG 0000HMOV DPTR,#TAB MOV A,20HMOVC A,A+DPTR ;查表MOV 21H,ASJMP $ TAB2: DB 00H,01H,04H,09H,16H,25H END分析 :在程序存储器安排一张平方表,

6、首地址为TAB ,以DPTR指向表首址,A存放变量值,利用查表指令 MOVC A,A+DPTR,即可求得。 表中数据用BCD码存放合乎人们的习惯. 如果平方值为两个字节,程序应如何编。DPTRA第3章 MCS-51单片机汇编语言程序设计 6.3 循环结构程序设计需要对某段程序多次重复执行时,可采用循环的方法。循环结构包括下面几个部分:1.置循环初值2.循环体3.循环修改4.循环控制第3章 MCS-51单片机汇编语言程序设计 例6.3 数据传送程序。将内部RAM 40H单元开始的内容 依次传送到外部RAM 1000H单元开始的区域,直到遇 到传送的内容是0为止。ORG 0000HMOV R0,#

7、40HMOV DPTR,#1000H MAIN:MOV A,R0MOVX DPTR,ACJNZ A,#00,NEXTSJMP FINISH NEXT: INC DPTRINC R0SJMP MAINFINISH:SJMP $END第3章 MCS-51单片机汇编语言程序设计 例6.4 数据极值查找程序。内部RAM 30H单元开始存放了10 个数,找出期中最大的数。MAX DATA 50HORG 0000HMOV R0,#30HMOV R2,#9MOV MAX,R0 AGAIN: INC R0MOV A,R0CJNE MAX,A,CHK CHK: JC SASJMP NEXT SA: MOV MA

8、X,A NEXT:DJNZ R2,AGAINEND第3章 MCS-51单片机汇编语言程序设计 第3章 MCS-51单片机汇编语言程序设计 ORG 0000HMOV A,R2JNB ACC.7,N ;为正数?CPL A ;负数变补INC AMOV R2,A N: SJMP $ ;结束3.4 分支程序的设计由条件转移指令构成程序判断框部分,形成分支结构3.5.1 单分支程序一个判断决策框,两种分支结构图。 条件满足? N影响条件Y处理段条件满足? N影响条件Y处理1处理2例1 求8位有符号数的绝对值。方法:正数不变,负数变补第3章 MCS-51单片机汇编语言程序设计 例2 用单片机加重力传感器作磅

9、秤,秤出重量后算出行李运费 价格,其秤出的重量以10kg为1个计价单位G , G已存入40H单元 。计价方法 为50kg以内按3元, 50kg以上 分段计价: 50kg按3元计价 ,超过部分按2元计价。 由此列出算式: G3 + (G-5)2; 当G5M=G3 ;当G5 3G因重复使用,先暂存在R2。流程 见左, 程序如下:第3章 MCS-51单片机汇编语言程序设计 ORG 0100H FRT: MOV A,40H;取行李重量计价单位GMOV R3,AMOV B,#03H;运费M=G3MUL ABMOV R2,A;暂存3GMOV A,R3;取回GCJNE A,#05H,L1;G 5 ?SJMP

10、 WETC L1: JC WETC;是,转至WETCSUBB A,#05H;否则 M=3G+2(G-5) RLC AADD A,R2MOV R2 ,A WETC:MOV 41H,R2 ;存运费 MRET第3章 MCS-51单片机汇编语言程序设计 多分支散转程序的设计 有一类分支程序,它根据不同的输入条件或不同的运算结果, 转向不同的处理程序,称之为散转程序。这类程序通常利用 JMPA+DPTR间接转移指令实现转移。有如下两种设计方法 :1. 查转移地址表:将转移地址列成表格,将表格的内容作转移的目标地址。2. 查转移指令表:将转移到不同程序的转移指令列成表格,判断条件后查表 ,转到表中指令执行

11、,下面用两个例子说明。第3章 MCS-51单片机汇编语言程序设计 1. 利用转移地址表实现转移例3-7 根据R3的内容转向对应的程序,R3的内容为0n,处 理程序的入口符号地址分别为PR0PRn (n128)。分析:将PR0PRn入口地址列在表格中,每一项占两个单元 ,PRn在表中的偏移量为2n,因此将R3的内容乘2即得PRn 在表中的偏移地址,从偏移地址2n和2n+1两个单元分别取 出PRn的高八位地址和低八位地址送DPTR寄存器,用JMP A+DPTR指令(A先清零)即转移到PRn入口执行。第3章 MCS-51单片机汇编语言程序设计 ORG 0000H MOV A,R3 ;R3A ADD

12、A,ACC ;A*2 MOV DPTR,#TAB PUSH ACC MOVC A,A+DPTR ;取地址表中高字节 MOV B,A ;暂存于B INC DPL POP ACC MOVC A,A+DPTR ;取地址表中低字节 MOV DPL,A MOV DPH,B ;DPTR为表中地址 CLR A ;A=0 JMP A+DPTR ;转移 TAB:DW PR0,PR1,PR2,.,PRn ;转移地址表 END01100220.TABTAB+2DPH DPL例如 R3=1的操作0220第3章 MCS-51单片机汇编语言程序设计 2. 利用转移指令表实现转移例3-8 设有五个按键 0、1、2、3、4其

13、编码分别为3AH、47H、65H、70H、8BH,要求根据按下的键转向不同的处理程序,分别为PR0 、PR1 /PR2、PR3、PR4,设按键的编码已在B寄存器中,编出程序。分析: 将键码排成表,将键码表中的值和B中的键编码比对,记 下在键码表中和B中的键编码相等的序号,另安排一个转移表, 安排AJMP指令(机器码),因每条AJMP指令占二字节,将刚才 记下的序号乘2即为转移表的偏移地址,利用JMP A+DPTR 执行表内的AJMP指令,从而实现多分支转移, 设JPT的地址为001AH、PR0入口地址为0110H、 ,参考2.4.2 节,求AJMP PR0的机器码 0000 0001 0001

14、 0000 001 00001 0000 (2110h )a10a9a8a7a6a5a4a3a2a1a0 第3章 MCS-51单片机汇编语言程序设计 AJMP PR0的机器码为2110H, PR1入口地址为0220H AJMP PR1的机器码为4120H,转移指令表JPT的内容如下所示。设 B=65H,键值为2:2041JPT+42002JPT+21021JPTAJMP PR0AJMP PR1AJMP PR2TAB3AHTAB+147HTAB+265HTAB+370H转移指令表JPT键码表TAB65HA2B2AA=1A=2A=065H65H第3章 MCS-51单片机汇编语言程序设计 ORG 0000HMOV DPTR,#TAB ;置键码表首址MOV A,#0 ;表的起始位的偏移量为0NEXT: PUSH ACCMOVC A,A+DPTR ;A=键码表的编码CJNE A,B,AGAN ;将B中值和键码表的值比较POP ACCRL A ;如相等,序号乘2得分支表内偏移量MOV DPTR,#JPT ;置分支表首址JMP A+DPTRAGAN: POP ACC ;不相等比较下一个INC A ;序号加1CJNE A,#5,NEXTSJMP $ ;键码查完还没有B中按键编码程序结束

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

当前位置:首页 > 中学教育 > 教学课件

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