单片机原理及接口技术第4章80C51的汇编语言程序设计课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《单片机原理及接口技术第4章80C51的汇编语言程序设计课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 原理 接口 技术 80 C51 汇编语言 程序设计 课件
- 资源描述:
-
1、第第4 4章章 80C5180C51的汇编语言程序设计的汇编语言程序设计程序编制的程序编制的方法方法和和技巧技巧4.1源程序的源程序的编辑编辑和和汇编汇编4.2基本基本程序结构程序结构4.3子程序子程序及其调用及其调用4.4简单简单I/O设备的并口直接驱动设备的并口直接驱动示例示例4.52022-11-101 单片机应用系统由单片机应用系统由硬件系统硬件系统和和应用程序应用程序构成构成 汇编语言汇编语言 高级语言高级语言 应用程序设计方法应用程序设计方法 汇编语言汇编语言,生成的目标程序占内存空间少、运行速,生成的目标程序占内存空间少、运行速度快,具有效率高、实时性强。度快,具有效率高、实时性
2、强。高级语言高级语言,对系统的功能描述与实现简单,程序阅,对系统的功能描述与实现简单,程序阅读、修改和移植方便,适合于编写复杂的程序。读、修改和移植方便,适合于编写复杂的程序。2022-11-1024.1 程序编制的方法和技巧程序编制的方法和技巧4.1.1 4.1.1 程序编制的步骤程序编制的步骤 明确任务:功能要求、技术指标明确任务:功能要求、技术指标 运行环境调研运行环境调研 任务分析任务分析 将实际问题转化为计算机处理的程序算法将实际问题转化为计算机处理的程序算法 算法比较与优化(内存需求算法比较与优化(内存需求与与运行速度)运行速度)算法设计算法设计2022-11-103 流程描述流程
3、描述 流程图符号流程图符号“超级循环超级循环”框架框架2022-11-104 强化模块观念强化模块观念使程序占用空间减少、结构清晰使程序占用空间减少、结构清晰循环初值和结束条件,避免循环初值和结束条件,避免“死机死机”现象现象子程序的现场保护(注意栈平衡、寄存器内容)子程序的现场保护(注意栈平衡、寄存器内容)程序模块(主程序模块、各种子程序模块)程序模块(主程序模块、各种子程序模块)模块化优点:分块设计、便于阅读、调试方便模块化优点:分块设计、便于阅读、调试方便4.1.2 4.1.2 程序编制的方法和技巧程序编制的方法和技巧 采用循环和子程序采用循环和子程序对中断子程序还有注意保护对中断子程序
4、还有注意保护PSWPSW的内容的内容2022-11-1054.1.3 4.1.3 汇编语言的语句格式汇编语言的语句格式非数字字符开头,后跟字母、数字、非数字字符开头,后跟字母、数字、“-”-”、“?”等等不能用已定义的保留字(指令助记符、伪指令等)不能用已定义的保留字(指令助记符、伪指令等)后跟英文冒号后跟英文冒号“:”:”KeilKeil的汇编器的汇编器A51A51可以识别的语句形式为:可以识别的语句形式为:标号(即符号地址)标号(即符号地址)标号:指令助记符指令助记符 操作数1,操作数2,操作数3,;注释 指令助记符指令助记符是指令功能的英文缩写。是指令功能的英文缩写。2022-11-10
5、6数据:二进制(数据:二进制(B B)十进制(十进制(D D或省略或省略D D)十六进制(十六进制(H H),注意),注意A AFF开头时要加开头时要加“0 0”ASCII ASCII码,如码,如 AA,12451245v 符号:符号名、标号或符号:符号名、标号或“$”$”(PCPC的当前值)的当前值)v 表达式:由运算符和数据构成(见表表达式:由运算符和数据构成(见表4.14.1)操作数操作数 注释注释英文分号英文分号“;”;”开头开头2022-11-107优先级运 算 符功 能表达式及其结果示例高低()括号4*(5+6)即44NOT、HIGH、LOW取反、取高字节、取低字节NOT 55H
6、即AAH;HIGH 1234H 即12H、正号、负号5、6*、/、MOD乘、除(取商)、取余数17/5 即3;17 MOD 5 即2、加、减 54 即 9;54=即1SHL、SHR左移、右移2 SHL 2即8;8 SHR 2 即 2AND、OR、XOR与、或、异或45H AND 0FH即05H、=、=比较运算符MOV A,X8;若X8为真,则为MOV A,01H若X8为假,则为MOV A,00H表表4.14.12022-11-1084.2 源程序的编辑和汇编源程序的编辑和汇编目标程序的产生过程如下图:目标程序的产生过程如下图:2022-11-1094.2.1 4.2.1 源程序的编辑和汇编源程
7、序的编辑和汇编 源程序的编辑源程序的编辑 ORG ORG 0000H LJMP MAIN ORG ORG 0040HMAIN:MOV R7,#16 MOV R0,#60H MOV A,#55HLOOP:MOV R0,A INC R0 DJNZ R7,LOOP SJMP$ENDEND依据汇编语言规则依据汇编语言规则用好用好伪指令伪指令符号符号不用中文不用中文SJMP$SJMP$用于调试用于调试以以 .ASM.ASM存盘存盘2022-11-1010 源程序的汇编源程序的汇编汇编源程序转为目标程序的过程叫汇编源程序转为目标程序的过程叫汇编汇编汇编通常在汇编通常在WindowsWindows下的下的集
8、成开发环境集成开发环境完成完成用用A51.EXEA51.EXE汇编生成汇编生成.OBJ.OBJ、.LIB.LIB及及.LST.LST 目标程序的连接目标程序的连接.OBJ.OBJ、.LIB.LIB经经BL51.EXEBL51.EXE生成无扩展名的生成无扩展名的绝对地址目标文件绝对地址目标文件绝对地址目标文件绝对地址目标文件可以用于仿真器调试可以用于仿真器调试调试无误的目标文件用调试无误的目标文件用OH51.EXEOH51.EXE转换为转换为.HEX.HEX文件文件.HEX.HEX文件经文件经编程器编程器写入单片机存储器写入单片机存储器2022-11-10114.2.2 4.2.2 伪指令伪指令
9、伪指令,也叫汇编命令。仅对汇编过程进行指示伪指令,也叫汇编命令。仅对汇编过程进行指示伪指令无对应的单片机可执行代码伪指令无对应的单片机可执行代码 起始地址设定伪指令起始地址设定伪指令ORGORGORG ORG 表达式表达式表达式通常为十六进制地址,例:表达式通常为十六进制地址,例:ORG 8000HSTART:MOV A,#30H ORGORG可多次使用,但地址值的顺序要由小到大可多次使用,但地址值的顺序要由小到大 结束汇编伪指令结束汇编伪指令ENDENDEND该伪指令位于源程序的该伪指令位于源程序的最后一行最后一行。2022-11-1012 定义字节数据表伪指令定义字节数据表伪指令DBDB定
10、义字数据表伪指令定义字数据表伪指令DWDW1000H 标号:标号:DB DB 字节数据表字节数据表如:如:ORG 1000HORG 1000HDB -2,-4,-6,8,10,18DB -2,-4,-6,8,10,18FEH FCHFAH08H0AH12H1001H 标号:标号:DW DW 字数据表字数据表 ORG 1400H ORG 1400HDATA1:DW 32DATA1:DW 324A4AH,3CHH,3CH 1400H32H 4AH00H3CH1401H1402H1403H大端模式2022-11-1013 定义常值为符号名伪指令定义常值为符号名伪指令EQUEQU符号名符号名 EQU
11、EQU 常值表达式常值表达式 LENLEN EQUEQU 10 10 SUMSUM EQUEQU 21H 21HBLOCKBLOCK EQU EQU 22H 22H CLR A CLR A MOV R7,MOV R7,LENLEN MOV R0,MOV R0,BLOCKBLOCK LOOP:ADD A,R0 LOOP:ADD A,R0 INC R0 INC R0 DJNZ R7,LOOP DJNZ R7,LOOP MOV MOV SUMSUM,A,A 符号名为:符号名为:v地址地址v常数常数v段名段名v字符串字符串v寄存器名寄存器名v位名位名比较:比较:标号标号只能是地址只能是地址2022-1
12、1-1014 定义位地址为符号名伪指令定义位地址为符号名伪指令BITBIT符号名符号名 BIT BIT 位地址表达式位地址表达式如:如:ST BIT P1.0 ;ST BIT P1.0 ;将将P1.0P1.0的位地址赋给符号名的位地址赋给符号名STSTCF BIT 0D7H ;CF BIT 0D7H ;将位地址为将位地址为D7HD7H的位定义为符号名的位定义为符号名用用BITBIT定义的定义的“符号名符号名”一经定义便不能重一经定义便不能重新定义和改变新定义和改变其它一些伪指令参见教材表其它一些伪指令参见教材表4.2 4.2 2022-11-10154.3 基本程序结构基本程序结构一般不影响标
13、志寄存器一般不影响标志寄存器PSWPSW的状态。的状态。传送类指令有两大类传送类指令有两大类 一般传送(一般传送(MOVMOV )特殊传送,如:特殊传送,如:MOVC MOVC MOVX MOVX PUSH PUSH、POPPOP XCH XCH、XCHDXCHD SWAP SWAP 2022-11-10164.3.1 4.3.1 顺序程序顺序程序(无分支、无循环)(无分支、无循环)4.3 基本程序结构基本程序结构【例例4-14-1】片内片内RAMRAM的的21H21H单单元存放一个十进制数据十元存放一个十进制数据十位的位的ASCIIASCII码,码,22H22H单元存单元存放该数据个位的放该
14、数据个位的ASCIIASCII码。码。编写程序将该数据转换成编写程序将该数据转换成压缩压缩BCDBCD码存放在码存放在20H20H单元。单元。2022-11-1017 ORG 0040H ORG 0040HSTART:MOV A,21H ;START:MOV A,21H ;取十位取十位ASCIIASCII码码 ANL A,#0FH ;ANL A,#0FH ;保留低半字节保留低半字节 SWAP A ;SWAP A ;移至高半字节移至高半字节 MOV 20H,A ;MOV 20H,A ;存于存于20H20H单元单元 MOV A,22H ;MOV A,22H ;取个位取个位ASCIIASCII码码
15、ANL A,#0FH ;ANL A,#0FH ;保留低半字节保留低半字节 ORL 20H,A ;ORL 20H,A ;合并到结果单元合并到结果单元 SJMP$SJMP$END END2022-11-10184.3.2 4.3.2 分支程序分支程序(单分支、双分支、多分支)(单分支、双分支、多分支)【例例4-24-2】设变量设变量x x以补码以补码的形式存放在片内的形式存放在片内RAMRAM的的30H30H单元,变量单元,变量y y与与x x的关的关系是系是:当当x x大于大于0 0时时,y=x;,y=x;当当x=0 x=0时时,y=20H;,y=20H;当当x x小于小于0 0时时,y=x+5
16、,y=x+5。编制程序。编制程序,根根据据x x的大小求的大小求y y并送回原单并送回原单元。元。2022-11-1019 ORG 0040HORG 0040HSTART:MOV A,30H ;START:MOV A,30H ;取取x x至累加器至累加器 JZ NEXTJZ NEXT ;x=0,;x=0,转转NEXTNEXT ANL A,#80H ;ANL A,#80H ;否,保留符号位否,保留符号位 JZ DONEJZ DONE ;x 0,;x 0,转结束转结束 MOV A,#05H ;x 0MOV A,#05H ;x 0处理处理 ADD A,30H ADD A,30H MOV 30H,A
17、;X+05H MOV 30H,A ;X+05H送送Y Y SJMP DONE SJMP DONE NEXT:MOV 30H,#20H;x=0,20H NEXT:MOV 30H,#20H;x=0,20H送送Y Y DONE:SJMP DONE DONE:SJMP DONE END END 2022-11-1020【例例4-34-3】根据根据R7R7的内容的内容x x(转移序号)转向相应的处理程序。(转移序号)转向相应的处理程序。设设R7R7内容为内容为0 04 4,对应的处理程序入口地址分别为,对应的处理程序入口地址分别为PP0PP0PP4PP4。2022-11-1021 START:MOV R
18、7,#3 ;START:MOV R7,#3 ;以转移序号以转移序号3 3为例为例 ACALL JPNUMACALL JPNUM AJMP START AJMP START JPNUM:MOV DPTR,#TAB ;JPNUM:MOV DPTR,#TAB ;置分支入口地址表首址置分支入口地址表首址 MOV A,R7MOV A,R7 ADD A,R7ADD A,R7 ;乘乘2 2,调整偏移量,调整偏移量 MOV R3,A MOV R3,A MOVC A,A+DPTR ;MOVC A,A+DPTR ;取地址高字节,暂存于取地址高字节,暂存于R3R3 XCH A,R3 XCH A,R3 INC A I
19、NC A MOVC A,A+DPTR ;MOVC A,A+DPTR ;取地址低字节取地址低字节 MOV DPL,A ;MOV DPL,A ;处理程序入口地址低处理程序入口地址低8 8位送位送DPLDPL MOV DPH,R3 ;MOV DPH,R3 ;处理程序入口地址高处理程序入口地址高8 8位送位送DPHDPH CLR A CLR A JMP A+DPTRJMP A+DPTR 2022-11-1022 TAB:DW PP0 TAB:DW PP0 DW PP1 DW PP1 DW PP2 DW PP2 DW PP3DW PP3 DW PP4 DW PP4 PP0:MOV 30H,#0 ;PP0
20、:MOV 30H,#0 ;转移序号为转移序号为0 0时时,置功能号置功能号“0”0”于于30H30H单元单元 RETRET PP1:MOV 30H,#1 ;PP1:MOV 30H,#1 ;转移序号为转移序号为1 1时时,置功能号置功能号“1”1”于于30H30H单元单元 RETRET PP2:MOV 30H,#2 ;PP2:MOV 30H,#2 ;转移序号为转移序号为2 2时时,置功能号置功能号“2”2”于于30H30H单元单元 RETRET PP3:MOV 30H,#3PP3:MOV 30H,#3 ;转移序号为转移序号为3 3时时,置功能号置功能号“3”3”于于30H30H单元单元 RETR
展开阅读全文