单片微机原理与应用第2版 罗印升part_03.2

上传人:E**** 文档编号:89108600 上传时间:2019-05-18 格式:PPT 页数:49 大小:1.04MB
返回 下载 相关 举报
单片微机原理与应用第2版 罗印升part_03.2_第1页
第1页 / 共49页
单片微机原理与应用第2版 罗印升part_03.2_第2页
第2页 / 共49页
单片微机原理与应用第2版 罗印升part_03.2_第3页
第3页 / 共49页
单片微机原理与应用第2版 罗印升part_03.2_第4页
第4页 / 共49页
单片微机原理与应用第2版 罗印升part_03.2_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《单片微机原理与应用第2版 罗印升part_03.2》由会员分享,可在线阅读,更多相关《单片微机原理与应用第2版 罗印升part_03.2(49页珍藏版)》请在金锄头文库上搜索。

1、2019/5/18,1,3.8 汇编语言程序设计,2019/5/18,2,3.8 汇编语言程序设计,3.8.1 汇编语言程序设计概述,3.8.2 常用伪指令,3.8.3 顺序结构程序设计,3.8.4 分支结构程序设计,3.8.5 循环结构程序设计,3.8.6 子程序设计与综合应用,2019/5/18,3,3.8.1 汇编语言程序设计概述,程序是完成某一特定任务的若干指令的有序集合。程序设 计就是用计算机所能识别的语言把解决问题的步骤描述出来, 即编写程序。目前计算机语言可分为三类:机器语言、汇编语 言和高级语言。,1. 程序设计的三种语言 机器语言 在计算机中,用二进制代码表示的指令、数字和符

2、号简称 为机器语言。直接用机器语言编写的程序称为机器语言程序。 机器语言编制的程序不易看懂,难于编写、难于查错和难 于交流,容易出错。 汇编语言 汇编语言是用助记符、符号和数字等来表示指令的程序语 言,它与机器码指令一一对应。用汇编语言编写的程序必须经 汇编后才能生成目标代码,才能被计算机识别和执行。,2019/5/18,4,将汇编语言源程序转换成机器语言目标程序的系统软件,就 称为汇编程序。 (3)高级语言 计算机高级语言是一种面向算法、过程和对象的程序设计 语言,它采用更接近人们习惯的自然语言和数学语言描述算 法、过程和对象,如BASIC,C,JAVA等都是常用的高级语言。,3.8.1 汇

3、编语言程序设计概述,2. 汇编语言程序设计思路 程序设计简明,占用内存少,执行时间短的原则。以下几个 过程: (1)分析问题,确定算法 分析所需解决的问题,明确目的和任务,了解现有条件和目 标要求后再确定解决该问题的方法和步骤,即通常所说的算法。 对于一个问题,一般有多种不同的解决方案,通过比较从中挑选 较优方案。,2019/5/18,5,3.8.1 汇编语言程序设计概述,(2)画程序流程图 用流程图中的各种图形、符号、流向线等来描述程序设计的 过程,它可以清晰表达程序的设计思路。,2019/5/18,6,3.8.1 汇编语言程序设计概述,(3)分配存储器工作单元、确定程序和数据的存放地址 (

4、4)编写源程序 根据流程图中各部分的功能,选取合适的指令和结构编写出具体程序。 (5)汇编和调试 对已编写好的程序,先进行编辑、汇编。在汇编过程中,若有语法错误,需要对源程序进行修改。 汇编工作完成后,上机调试运行。先输入给定的数据,运行程序,检查运行结果是否正确,若发现错误,通过分析,再对源程序进行修改。直到 正确解决问题为止。,2019/5/18,7,3.8.2 常用伪指令,伪指令又称汇编程序控制指令,是指示性语句,不产生相应的机器码。它们只在计算机将汇编语言转换为机器码时,指导汇编过程,告诉汇编程序如何完成汇编工作。,1. ORG起始地址指令(Original)定位伪指令 格式: ORG

5、 16位绝对地址或表达式 功能:指明其后的程序或数据块存放的起始地址。 例如:指令地址 机器码 源程序 ORG 2000H 2000H 78 30 MAIN:MOV R0,#30H 2002H E6 MOV A,R0 ,2019/5/18,8,3.8.2 常用伪指令,【注意】一个源程序中,可以多次使用ORG指令,规定不同的程序段地址。地址必须由小到大,不能交叉、重叠。若程序段前无ORG伪指令,则汇编后的目标程序将从0000H地址开始或紧接前段程序。,2. 汇编结束伪指令 格式:END 功能:END是汇编源程序的结束标志。 在整个源程序中只能有一条END命令,且位于程序的最后。如果END命令出现

6、在中间,则其后的源程序汇编时将不予处理。,3. 定义字节数据伪指令 DBDefinition Byte) 格式:标号: DB n1,n2,n3, 6,B .nn 功能:从指定的程序存储器的连续单元开始,定义字节数据。常用于存放数据表格。,2019/5/18,9,例如: ORG 1000H TAB:DB 23H,73,6,B TABl:DB 110B DB功能是从指定地址单元1000H开始定义若干字节: (1000H)=23H (1001H)=49H (1002H)=36H (1003H)=42H (1004H)=06H 其中,36H和42H分别是字符6和B的ASCII码,其余的十进制数(73)

7、和二进制数(110B)也都换算为十六进制数了。,3.8.2 常用伪指令,2019/5/18,10,例如: ORG 1000H TAB: DW 1234H,0ABH,10 汇编后:(1000H)=12H (1001H)=34H (1002H)=00H (1003H)=ABH (1004H)=00H (1005H)=0AH,4. 定义字数据伪指令 DW Definition Word 格式:标号: DW 16位字数据表 功能:从指定的程序存储器的连续单元开始,定义字数据。存 放时,数据的高8位在低地址,低8位在高地址。,5. 赋值伪指令 EQU Equal 格式: 字符名称 EQU 赋值项 功能:

8、用于给字符名称赋值。赋值后,其符号值在整个程序中有效。,3.8.2 常用伪指令,2019/5/18,11,说明:赋值项可以是常数、地址、标号或表达式。其值为8位或16位二进制数。赋值以后的字符名称既可以作立即数使用,也可以作地址使用。必须先定义后使用,放在程序开头。 例如: TEST EQU 80H MOV A,TEST 表示TEST=80H,在汇编时,凡是遇到TEST,均以80H代替。,6. 数据地址赋值伪指令 格式:字符名称 DATA 表达式 功能:将表达式的值或数据赋值给指定的字符名称。 DATA与EQU指令有区别: EQU指令应先定义后使用,而DATA指令可以先使用后定义。,3.8.2

9、 常用伪指令,2019/5/18,12,7. 位地址符号定义伪指令 格式:字符名称 BIT 位地址 功能:用于给字符名称赋以位地址。 位地址可以是绝对地址,也可以是符号地址、即位符号名称。 例如: KEY0 BIT P1.0 表示把P1.0的位地址赋给变量KEY0,在其后的编程过程中, KEY0就可以作为位地址(P1.0)使用。,3.8.2 常用伪指令,2019/5/18,13,3.8.3 顺序结构程序设计,顺序结构程序是最简单、最基本的程序。程序按编写的顺序依次往下执行每一条指令,直到最后一条指令。它能够解决某些实际问题,或成为复杂程序的子程序。 顺序结构是按照语句出现的先后次序、执行一系列

10、的操作,它没有分支、循环和转移。,【例题3-38】 将片内RAM 30H单元中的压缩BCD码转换成二进制数送到片内RAM 40H单元中。,分析,两位压缩BCD码转换成二进制数的算法为:(a1a0)BCD=10a1a0,2019/5/18,14,ORG 1000H START:MOV A, 30H;取两位BCD压缩码 ANL A,#0F0H ;取高4位BCD码 SWAP A;高4位与低4位换位 MOV B, #0AH;将二进制数10送B MUL AB;将10a1送入A中 MOV R0,A;结果送入R0中保存 MOV A,30H;BCD压缩码送A ANL A,#0FH;取低4位BCD码 ADD A

11、,R0;求和10a1+ a0 MOV 40H,A ;结果送入40H保存 SJMP $;程序执行完,“原地踏步” RET,3.8.3 顺序结构程序设计,2019/5/18,15,例3-38-2 三字节无符号数相加,其中被加数在内部RAM的50H、51H和52H单元中;加数在内部RAM的53H、54H和55H单元中;要求把相加之和存放在50H、51H和52H单元中,进位存放在位寻址区的00H位中。,3.8.3 顺序结构程序设计,2019/5/18,16,MOV R0,#52H MOV R1,#55H MOV A, R0 ADD A,R1 MOV R0 ,A DEC R0 DEC R1 MOV A,

12、 R0 ADDC A,R1 MOV R0 ,A DEC R0 DEC R1 MOV A, R0 ADDC A,R1 MOV R0 ,A CLR A ADDC A,#00H MOV 00H,C,;被加数的低字节地址 ;加数的低字节地址 ;低字节相加 ;存低字节相加结果 ;中间字节带进位相加 ;存中间字节相加结果 ;高字节带进位相加 ;存高字节相加结果 ;若不用以下这两句 ;存放进位的单元地址 ;进位送00H位保存,MOV R0,#20H MOV R0,A,MOV C,ACC.0 MOV 00H,C,3.8.3 顺序结构程序设计,2019/5/18,17,例3-38-3 压缩式BCD码分解成为单字

13、节BCD码。,MOV R0,#40H ;设指针 MOV A,R0 ;取一个字节 MOV R2,A ;暂存 ANL A,#0FH ;高半字节清0 INC R0 MOV R0,A ;保存数据个位 MOV A,R2 SWAP A ;十位换到低半字节 ANL A,#0FH INC R0 MOV R0,A ;保存数据十位 RET,3.8.3 顺序结构程序设计,2019/5/18,18,3.8.4 分支结构程序设计,根据不同条件做出判断和选择,转向不同的处理程序,这种结构的程序称为分支结构程序。分支结构又叫条件选择结构。 51单片机指令系统中的条件转移指令、比较转移指令和位转移指令,均可以用来实现分支结构

14、程序设计。,由不同的转移指令构成程序判断框部分,形成分支结构。,在51系列单片机指令系统中,可利用JZ,JNZ,CJNE, DJNZ,JC,JNC,JB,JNB,JBC等指令,完成为0、为1、为正、为负以及相等、不相等各种条件判断。,2019/5/18,19,3.8.4 分支结构程序设计,2019/5/18,20,【例题3-39】 统计从P1口输入的数字中正数、负数、零的个数。设R0、R1、R2三个工作寄存器分别为统计正数、负数、零的个数的计数器。,ORG 0000H LJMP START ORG 0100H START:CLR A MOV R0,A MOV R1,A MOV R2,A MOV

15、 P1,#0FFH ;置P1口为输入状态 ENTER:MOV A,P1 ;从P1口读取一个数 JZ ZERO ;该数为0,转ZERO JB ACC.7,NEG ;该数为负,转NEG INC R0 ;该数不为0、不为负则必为正数 SJMP ENTER ;循环自P1口取数 ZERO:INC R2 ;零计数器加1 SJMP ENTER NEG: INC R1 ;负数计数器加1 SJMP ENTER END,3.8.4 分支结构程序设计,2019/5/18,21,【例题3-39-2】假定在外部RAM中有ST1、ST2和ST3共3个连续单元, 其中ST1和ST2单元中分别存放着一个8位无符号二进制数,要求找出其中的 大数并存入ST3 单元中。,START:CLR C MOV DPTR,#ST1 MOVX A,DPTR MOV R2,A INC DPTR MOVX A,DPTR SUBB A,R2 JNC BIG1 XCH A,R2 BIG0: INC DPTR MOVX DPTR,A RET BIG1: MOVX A,DPTR SJMP BIG0,;进位位清“0” ;设置数据指针,指向ST1 ;取第一个数 ;第一个数存R2 ;数据指针加1,指向ST2 ;取第二个数 ;两数比较(第二个数第一个数) ;第二个数大转BIG1(C=0无借位跳) ;第一个数

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

当前位置:首页 > 高等教育 > 其它相关文档

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