单片机原理及其接口技术胡汉口第3版第4章-汇编程序设计

上传人:飞*** 文档编号:47151038 上传时间:2018-06-30 格式:PPT 页数:49 大小:460KB
返回 下载 相关 举报
单片机原理及其接口技术胡汉口第3版第4章-汇编程序设计_第1页
第1页 / 共49页
单片机原理及其接口技术胡汉口第3版第4章-汇编程序设计_第2页
第2页 / 共49页
单片机原理及其接口技术胡汉口第3版第4章-汇编程序设计_第3页
第3页 / 共49页
单片机原理及其接口技术胡汉口第3版第4章-汇编程序设计_第4页
第4页 / 共49页
单片机原理及其接口技术胡汉口第3版第4章-汇编程序设计_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《单片机原理及其接口技术胡汉口第3版第4章-汇编程序设计》由会员分享,可在线阅读,更多相关《单片机原理及其接口技术胡汉口第3版第4章-汇编程序设计(49页珍藏版)》请在金锄头文库上搜索。

1、第4章:汇编语言程序设计本章基本要求: 汇编语言的构成 源程序的设计与汇编* 应用程序设计*4.1汇编语言的构成4.1.1程序设计语言用户要使计算机能完成各式各样的任务, 就要设计各种相应的应用程序, 而设计程序就要 用到程序设计语言。程序设计语言有3种: 机器语言汇编语言高级语言。 4.1汇编语言的构成表4-1 机器语言和汇编语言的形式地址机器语言形式汇编语 言形式二进制形式十六进 制形式 2000H0111010000000101B7405HSTART:MOV A,#05H2002H0020010000001010B240AH ADD A,#0AH2004H1111010100100000

2、BF520H MOV 20H,A2006H1000000011111110B80FEH SJMP $机器语言中二进制形式不便记忆,常采用十 六进制形式记忆4.1汇编语言的构成在Keil调试环境下反汇编程序1、汇编源程序:2、反汇编程序:地址机器码反汇编程序汇编源程序4.1汇编语言的构成4.1.3汇编语言构成 汇编语言语句分为:指令性语句、指示性语句两 类。 1、 (概念4-1)指令性语句 指采用指令助记符构成的汇编语言语句, 必须符合汇编语言的语法规则,包括指令系统中 的全部指令,每条指令有对应的机器代码,并可 由CPU执行。 2、 (概念4-2)指示性语句 在汇编源程序的过程中,还有一些指令

3、不 要求CPU进行任何操作,也没有对应的机器码,不影 响程序的执行,仅仅是能够指导汇编进行处理的一 些指令,称之为伪指令。 4.1汇编语言的构成伪指令的主要功能是:1)用来指定程序或数据的起始位置2)给出一些连续存放数据的确定地址3)为中间运算结果保留一部分存储空间4)以及表示源程序结束等等。不同版本的汇编语言,伪指令的符号和含义可能有所不同, 但是基本用法是相似的。下面介绍几种常用的基本伪指令。MCS-51单片机伪指令伪指令仅在汇编过程中起控制作用不产生可执行 目标代码,又称为软指令1、起点指令 ORG格式: ORG H (16位地址或标号) 功能:给程序起始地址或数据块的起始地址赋值例:用

4、法:一般出现在每段源程序或数据块的开始一个源程序可多次出现ORG指令ORG 2000H START:MOV A,#64H;源程序的起始地址 为2000H首地址首地址2、结束命令 END格式:END功能:汇编程序结束标志附在一个源程序的结尾 一个源程序只能出现一次END指令用法:MCS-51单片机伪指令3、等值命令 EQU格式:字符名称 EQU 数据或汇编符号功能:将一个数据或汇编符号赋予标号段规定的字符名称例:ORG 8000HAA EQU R6MOV A,AA;AA与R6等值;A (R6)MCS-51单片机伪指令例: A10 EQU 10DELY EQU 07EBHMOV A,A10LCAL

5、L DELY;A10 = 10;DELY = 07EBH;转向入口地址 07EBH使用EQU指令,须先赋值后使用,不能反之4、数据地址赋值等值命令 DATA格式: 字符名称 DATA 数据或表达式 功能: 此命令把数据/代码地址赋予标号段所规定的字符名称。定义的字符名称可先使用后定义INDEXJ DATA 8096HORG 8000H INDEXJ DATA 8096HLJMP INDEXJ ENDORG 8000HLJMP 8096HEND;INDEXJ这个字符名称的地址为8096H例:等 价 于MCS-51单片机伪指令EQU与 DATA的区别(1) DATA与EQU相似,但DATA定义的字

6、符名称,可先使用后定义 ,EQU则不能(2) EQU指令可把汇编符号赋给字符名称,DATA则不能 (3) DATA可把表达式的值赋给字符名称,EQU则不能 DATA常在程序中定义数据地址EQU常在程序中定义字符数据 MCS-51单片机伪指令5、定义字节命令 DB格式:功能:标号:DB 字节常数或字符串 (8位)定义字节的内容,汇编程序把DB定义的字节依次存入标号开始的存储单元有定义的内存单元地址项或项表例:ORG 8000H TAB: DB 45H,73,5,A TAB1:DB 101B伪指令ORG 定义了TAB的起始地址为8000H,伪指令DB定义了8000H8003单元的内容依次为:(80

7、00H)= 45H (8001H)= 49H(8002H)= 35H(8003H)= 41H(8004H)= 05HTABTAB1(1) 由 ORG定义(2) 跟在其他源程序之后6、定义字命令DW格式: 功能:标号:DW 字或字表 定义若干个字(双字节) 例:ORG 8000H TAB:DW 7234H,8AH,10 (8000H)= 72H (8001H)= 34H (8002H)= 00H (8003H)= 8AH(8005H)= 0AH汇编后:(8004H)= 00HMCS-51单片机伪指令7、定义空间命令 DS格式:功能:标号:DS 数据或字符及表达式例:(8008H)=30H (80

8、09H)=8AH从指定单元地址开始,由数据或字符及 表达式的值来定义应保留的单元数,备用ORG 8000H DS 08H DB 30H,8AH即:8000H8007H单元保留备用定义空 间MCS-51单片机伪指令8、位地址符号命令 BIT格式:字符名称 BIT 位地址功能: 把位地址赋予标号段的字符名称A1 BIT P1.0A2 BIT P2.0例:;P1.0, P2.0赋予位地址字符名称A1、A2,在编程时可以直接把A1、A2 当成位地址使用MCS-51单片机伪指令4.2汇编源程序的设计与汇编4.2.1汇编程序设计步骤1、确定方案和计算方法2、了解应用系统的硬件配置、性能指标。3、建立系统数

9、学模型,确定控制算法和操作步骤。4、画程序流程图,表示程序结构和程序功能。5、编制源程序合理分配存储器单元和了解I/O接口地址。按功能设计程序,明确各程序之间的相互关系。用注释行说明程序,便于阅读和修改调试和修改 。6、上机调试,对程序的正确性作最后的确定。4.2 汇编源程序的设计与汇编程序设计步骤 流程:拟制设计任务书建立或修改数学模型确定算法编制或修改流程图编制或修改程序汇编通过?上机调试调试通过?程序有大问题?试运行通过?完成YNYYYNNN汇编程序的操作分两次扫描(汇编) 第一次扫描(汇编)检查语法结构,对源程序中的符号、表达式、标号进行定义,处理伪指令,建立符号表显示 ERROR,并

10、提示行号显示 ERROR,并提示行号修改!修改!第二次扫描(汇编)汇编成目标代码和汇编程序清单可执行的代码(机器码)4.2汇编源程序的设计与汇编4.2.2源程序的汇编 CPU可以执行的只能是机器码程序。称:把源 程序翻译成机器码的过程为汇编。汇编可:人工汇编和 机器汇编两类。 1、人工汇编 由人工直接将汇编源程序翻译成机器码。 2、机器汇编 使用计算机执行“汇编程序”来代替人工实现 将汇编源程序翻译成机器码。汇编语言 源程序机器语言汇编反汇编交叉 汇编4.3.1简单程序设计例4.1请编写能把20H单元内两个BCD数变成相 应的ASCII码并放在21H(高位BCD数的ASCII码) 和22H (

11、低位BCD数的ASCII码)单元的程序。 分析: 1) 20H单元存放的为压缩BCD码,送入A中,先 处理低四位,使用交换低四位指令,结果存入 22H单元XCHD A,Ri(唯一一个交换低四位指令) 本设计用R0实现。 2)BCD码与ASCII码关系: BCD码+30H=相应 ASCII码4.3简单程序与分支程序设计程序: ORG 0000HLJMP MAINORG 30H MAIN: MOV SP,#60HMOV A,20H ;A (20H) BCD码MOV R0,#22H ;R0=22HMOV R0,#00H ;(22H)=0XCHD A,R0 ;低位BCD码与22H半字节 交换ORL 2

12、2H,#30H ;加30H完成ASCII码变换SWAP A ;高位BCD码高低位半字节 交换ORL A,#30H ;加30H完成ASCII码变换( ADD A,#30H )MOV 21H,A ;存入21H单元END例2、3、4、5、6、7程序所占单片机内部RAM资源例2:从外部1234H单元(外设)读回重量数据,共操作八次,读 回的数据存放31H-3CH单元,次数存放30H单元 例3:八次的数据求和,高位存3DH,低位存3EH 例4: 3DH,3EH得数据求平均值并存放在3FH单元 例5: 3FH单元数据换算成钱数,存在40H单元(二进制) 例6: 40H单元内容转换成BCD码,并存在41H(

13、高位)42H 43H 例7: BCD码转换成共阴字形码,并存在44H 45H 46H 30H:从外部读回数据的个数(假设8次) 31H-3CH:从外部读回原始数据 3DH,3EH:原始数据的累计和 3FH:存放实际重量 40H:实际收费数,二进制形式41H 42H 43H :40H单元内容的BCD码,41H高位44H 45H 46H:对应的共阴字形码 SP:60H-7FH 读外部数据地址为1234H2) DUSHU子程序: 读取传感器数据,并存到30H开始的单元(假设为重量)org 0000h ljmp start org 30h start:mov sp,#60h DUSHU:MOV R0,

14、#0H MOV R1,#31H DU:MOV DPTR,#1234H; MOVX A,DPTRMOV R1,AINC R0INC R1CJNE R0,#8H,DU;RET endSUM求和子程序3例:求n个单字节数据的累加,设数据串已在31H起始单元,数据 串长度在30H单元,累加和不超过2个字节。存在3DH(高字节),3EH 单元.(n不大于12) SUM:MOVR0,#30H ;设指针 MOVA,R0 MOVR2,A ;循环计数器n CLRA ;结果单元清0 MOVR3,A ADD1: INCR0 ;修改指针 ADDA,R0 ;累加 JNC NEXT ;处理进位 INCR3 ;有进位,高字

15、节加1 NEXT:DJNZ R2,ADD1 ;循环控制:数据是否 加完? MOV3EH,A ;循环结束,保存结 果 MOV3DH,R3 RET 子程序的入口参数:R0,R2;出口参数3EH,3DH简单循环结构:循环体中不套循环。4) PINGJUN 求平均值子程序 3DH(高),3EH内容除以8程序,结果存入3FH单元(平均值)PINGJUN:MOV R2,#3H DDD:MOV A,3DH CLR C RRC A MOV 3DH, A MOV A,3EH RRC A MOV 3EH, A DJEZ R2,DDD MOV 3FH, 3EH RET例5: JIAGE价格转换子程序:重量G不超20千克,超过报警;计价: 当G5千克,价格M=G3(元);当G5千克,价格M=G3+(G-5)2 (元 )JIAGE: SETB P1.0MOV A,3FH ;取重量MOV R3,AMOV B,#03H ;M=G3MUL ABMOV R2,A ;暂存3GMOV A,R3

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

当前位置:首页 > 资格认证/考试 > 其它考试类文档

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