C的汇编语言程序设计课件.ppt
《C的汇编语言程序设计课件.ppt》由会员分享,可在线阅读,更多相关《C的汇编语言程序设计课件.ppt(40页珍藏版)》请在三一办公上搜索。
1、2023/3/31,1,第4章 80C51的汇编语言程序设计,程序编制的方法和技巧,4.1,源程序的编辑和汇编,4.2,基本程序结构,4.3,子程序及其调用,4.4,简单I/O设备的并口直接驱动示例,4.5,2023/3/31,2,单片机应用系统由硬件系统和应用程序构成,汇编语言 高级语言,应用程序设计方法,汇编语言,生成的目标程序占内存空间少、运行速度快,具有效率高、实时性强。,高级语言,对系统的功能描述与实现简单,程序阅读、修改和移植方便,适合于编写复杂的程序。,2023/3/31,3,4.1 程序编制的方法和技巧,4.1.1 程序编制的步骤,明确任务:功能要求、技术指标 运行环境调研,任
2、务分析,将实际问题转化为计算机处理的程序算法 算法比较与优化(内存需求与运行速度),算法设计,2023/3/31,4,流程描述,流程图符号,“超级循环”框架,2023/3/31,5,强化模块观念,使程序占用空间减少、结构清晰循环初值和结束条件,避免“死机”现象子程序的现场保护(注意栈平衡、寄存器内容),程序模块(主程序模块、各种子程序模块)模块化优点:分块设计、便于阅读、调试方便,4.1.2 程序编制的方法和技巧,采用循环和子程序,对中断子程序还有注意保护PSW的内容,2023/3/31,6,4.1.3 汇编语言的语句格式,非数字字符开头,后跟字母、数字、“-”、“?”等不能用已定义的保留字(
3、指令助记符、伪指令等)后跟英文冒号“:”,Keil的汇编器A51可以识别的语句形式为:,标号(即符号地址),标号:指令助记符 操作数1,操作数2,操作数3,;注释,指令助记符,是指令功能的英文缩写。,2023/3/31,7,数据:二进制(B)十进制(D或省略D)十六进制(H),注意AF开头时要加“0”ASCII码,如 A,1245符号:符号名、标号或“$”(PC的当前值)表达式:由运算符和数据构成(见表4.1),操作数,注释,英文分号“;”开头,2023/3/31,8,表4.1,2023/3/31,9,4.2 源程序的编辑和汇编,目标程序的产生过程如下图:,2023/3/31,10,4.2.1
4、 源程序的编辑和汇编,源程序的编辑,ORG 0000H LJMP MAIN ORG 0040HMAIN:MOV R7,#16 MOV R0,#60H MOV A,#55HLOOP:MOV R0,A INC R0 DJNZ R7,LOOP SJMP$END,依据汇编语言规则用好伪指令符号不用中文SJMP$用于调试以.ASM存盘,2023/3/31,11,源程序的汇编,汇编源程序转为目标程序的过程叫汇编汇编通常在Windows下的集成开发环境完成用A51.EXE汇编生成.OBJ、.LIB及.LST,目标程序的连接,.OBJ、.LIB经BL51.EXE生成无扩展名的绝对地址目标文件绝对地址目标文件可
5、以用于仿真器调试调试无误的目标文件用OH51.EXE转换为.HEX文件.HEX文件经编程器写入单片机存储器,2023/3/31,12,4.2.2 伪指令,伪指令,也叫汇编命令。仅对汇编过程进行指示伪指令无对应的单片机可执行代码,起始地址设定伪指令ORG,ORG 表达式,表达式通常为十六进制地址,例:,ORG 8000HSTART:MOV A,#30H,ORG可多次使用,但地址值的顺序要由小到大,结束汇编伪指令END,END,该伪指令位于源程序的最后一行。,2023/3/31,13,定义字节数据表伪指令DB,定义字数据表伪指令DW,1000H,标号:DB 字节数据表,如:ORG 1000HDB-
6、2,-4,-6,8,10,18,1001H,标号:DW 字数据表,ORG 1400HDATA1:DW 324AH,3CH,1400H,1401H,1402H,1403H,大端模式,2023/3/31,14,定义常值为符号名伪指令EQU,符号名 EQU 常值表达式,LEN EQU 10 SUM EQU 21HBLOCK EQU 22H CLR A MOV R7,LEN MOV R0,BLOCK LOOP:ADD A,R0 INC R0 DJNZ R7,LOOP MOV SUM,A,符号名为:地址常数段名字符串寄存器名位名,比较:标号只能是地址,2023/3/31,15,定义位地址为符号名伪指令B
7、IT,符号名 BIT 位地址表达式,如:ST BIT P1.0;将P1.0的位地址赋给符号名STCF BIT 0D7H;将位地址为D7H的位定义为符号名,用BIT定义的“符号名”一经定义便不能重新定义和改变其它一些伪指令参见教材表4.2,2023/3/31,16,4.3 基本程序结构,一般不影响标志寄存器PSW的状态。,传送类指令有两大类 一般传送(MOV)特殊传送,如:MOVC MOVX PUSH、POP XCH、XCHD SWAP,2023/3/31,17,4.3.1 顺序程序,(无分支、无循环),4.3 基本程序结构,【例4-1】片内RAM的21H单元存放一个十进制数据十位的ASCII码
8、,22H单元存放该数据个位的ASCII码。编写程序将该数据转换成压缩BCD码存放在20H单元。,2023/3/31,18,ORG 0040HSTART:MOV A,21H;取十位ASCII码 ANL A,#0FH;保留低半字节 SWAP A;移至高半字节 MOV 20H,A;存于20H单元 MOV A,22H;取个位ASCII码 ANL A,#0FH;保留低半字节 ORL 20H,A;合并到结果单元 SJMP$END,2023/3/31,19,4.3.2 分支程序,(单分支、双分支、多分支),【例4-2】设变量x以补码的形式存放在片内RAM的30H单元,变量y与x的关系是:当x大于0时,y=x
9、;当x=0时,y=20H;当x小于0时,y=x+5。编制程序,根据x的大小求y并送回原单元。,2023/3/31,20,ORG 0040HSTART:MOV A,30H;取x至累加器 JZ NEXT;x=0,转NEXT ANL A,#80H;否,保留符号位 JZ DONE;x 0,转结束 MOV A,#05H;x 0处理 ADD A,30H MOV 30H,A;X+05H送Y SJMP DONE NEXT:MOV 30H,#20H;x=0,20H送Y DONE:SJMP DONE END,2023/3/31,21,【例4-3】根据R7的内容x(转移序号)转向相应的处理程序。设R7内容为04,对
10、应的处理程序入口地址分别为PP0PP4。,2023/3/31,22,START:MOV R7,#3;以转移序号3为例 ACALL JPNUM AJMP START JPNUM:MOV DPTR,#TAB;置分支入口地址表首址 MOV A,R7 ADD A,R7;乘2,调整偏移量 MOV R3,A MOVC A,A+DPTR;取地址高字节,暂存于R3 XCH A,R3 INC A MOVC A,A+DPTR;取地址低字节 MOV DPL,A;处理程序入口地址低8位送DPL MOV DPH,R3;处理程序入口地址高8位送DPH CLR A JMP A+DPTR,2023/3/31,23,TAB:D
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序设计 课件
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-4008324.html