单片机原理汇编语言程序设计.pptx
《单片机原理汇编语言程序设计.pptx》由会员分享,可在线阅读,更多相关《单片机原理汇编语言程序设计.pptx(34页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第五章 汇编语言程序设计5-1-3 评价程序质量的标准(1)程序的执行时间。(2)程序所占用的内存字节数。(3)程序的逻辑性、可读性。(4)程序的兼容性、可扩展性。(5)程序的可靠性。第1页/共34页5-2 顺序程序 直线程序又称简单程序,程序走向只有一条路径。例1 双字节变补程序(设数据在R4 R5中)双字节变补程序(设数据在R4R5中):MOV A,R5;取低字节CPL AADD A,#1;低字节变补MOV R5,AMOV A,R4;取高字节CPL AADDC A,#0;高字节变补MOV R4,A第五章 汇编语言程序设计第2页/共34页第五章 汇编语言程序设计例2 压缩式BCD码分解成为单
2、字节BCD码。MOV R0,#40H;设指针MOV A,R0;取一个字节MOV R2,A;暂存ANL A,#0FH;清0高半字节INC R0MOV R0,A ;保存数据个位MOV A,R2SWAP A ;十位换到低半字节ANL A,#0FHINC R0MOV R0,A;保存数据十位十 个第3页/共34页第五章 汇编语言程序设计 例5-1 假设两个双字节无符号数,分别存放在R1R0和R3R2中,高字节在前,低字节在后。编程使两数相加,和数存放回R2R1R0中。ORG 1000h CLR C MOV A,R0;取被加数低字节至A ADD A,R2;与加数低字节相加 MOV R0,A;存和数低字节
3、MOV A,Rl;取被加数高字节至A ADDC A,R3;与加数高字节相加 MOV Rl,A;存和数高字节 MOV A,#0 ADDC A,#0;加进位位 MOV R2,A;存和数进位位 SJMP$;原地踏步 END第4页/共34页第五章 汇编语言程序设计5-3 分支程序 由条件转移指令构成程序判断框部分,形成程序分支结构。5-3-1 单重分支程序 一个判断决策框,程序有两条出路。两种分支结构。例1 求R2中补码绝对值,正数不变,负数变补。MOV A,R2 JNB ACC.7,NEXT ;为正数?CPL A ;负数变补 INC A MOV R2,ANEXT:SJMP NEXT ;结束条件满足条
4、件满足?N影响条件影响条件Y处理段处理段第5页/共34页第五章 汇编语言程序设计5-3-2 多重分支程序多次使用条件转移指令,形成两个以上判断框。例5-7 设30H单元存放的是一元二次方程ax2+bx+c=0根的判别式=b2-4ac的值。解:值为有符号数,有三种情况,即大于零、等于零、小于零。第6页/共34页第五章 汇编语言程序设计 编程:ORG 1000HSTART:MOV A,30H ;值送A JNB ACC.7,YES ;=0转YES MOV 31H,#0 ;0转TOW MOV 31H,#1 ;=0有相同实根 SJMP FINISHTOW:MOV 31H,#2 ;有两个不同实根FINIS
5、H:SJMP$第7页/共34页第五章 汇编语言程序设计5-3-3 N路分支程序 N路分支程序是根据前面程序运行的结果,可以有N种选择,并能转向其中任一处理程序。第8页/共34页第五章 汇编语言程序设计例5-10 128路分支程序。功能:根据R3的值(00H7FH)转到128个目的地址。参考程序:JMPl28:MOV A,R3 RL A ;(A)2 MOV DPTR,#PRGTBL ;散转表首址送DPTR JMP A+DPTR ;散转PRGTBL:AJMP ROUT00 AJMP ROUT01 AJMP ROUT7F ;128个AJMP指令占256个字节第9页/共34页第五章 汇编语言程序设计例
6、5-11 256路分支程序 功能:根据R3的值转移到256个目的地址;入口条件:(R3)=转移目的地址代号(00HFFH);出口条件:转移到相应分支处理程序入口。解:JMP256:MOV A,R3 ;取N值 MOV DPTR,#PRGTBL ;指向分支地址表首址 CLR C RLC A ;(A)2 JNC LOWl28 ;是前128个分支程序,则转移 INC DPH ;否则基址加256第10页/共34页第五章 汇编语言程序设计LOWl28:MOV TEMP,A ;暂存A INC A ;指向地址低8位 MOVC A,A+DPTR ;查表,读分支地址低8位 PUSH ACC ;地址低8位入栈 MO
7、V A,TEMP ;恢复A,指向地址高8位 MOVC A,A+DPTR ;查表,读分支地址高8位 PUSH ACC ;地址高8位入栈 RET ;分支地址弹入PC实现转移PRGTBL:DW ROUT00 ;占用512个字节 DW ROUT01 第11页/共34页第五章 汇编语言程序设计例5-12 大于256路分支转移程序 功能:根据入口条件转向n个分支处理程序 入口条件:(R7R6)=转移目的地址代号;出口条件:转移到相应分支处理程序入口。程序散转表中有N条LJMP指令,每条LJMP指令占3个字节,因此要按入口条件将址代号乘以3,用乘积的高字节加DPH,乘积的低字节送A(变址寄存器)。PRGTB
8、L:LJMP ROUT0 LJMP ROUT1 LJMP ROUT2 第12页/共34页第五章 汇编语言程序设计参考程序:JMPN:MOV DPTR,#PRGTBL;DPTR指向表首址MOV A,R7 ;取地址代号高8位MOV B,#3 ;MUL AB ;3ADD A,DPH ;MOV DPH,A ;修改指针高8位MOV A,R6 ;取地址代号低8位MOV B,#3 ;3MUL AB ;XCH A,B ;交换乘积的高低字节ADD A,DPH ;乘积的高字节加DPHMOV DPH,AXCH A,B ;乘积的低字节送AJMP A+DPTR ;散转第13页/共34页第五章 汇编语言程序设计5-4 循
9、环程序包含多次重复执行的程序段,循环结构使程序紧凑。5-4-1循环程序的导出各个环节任务:一初始化部分循环准备工作。如:清结果单元、设指针、设循环控制变量初值等。二循环体循环工作部分:需多次重复处理的工作。循环控制部分:1.修改指针和循环控制变量。2.检测循环条件:满足循环条件,继续循环,否则退出循环。三.结束部分 处理和保存循环结果。1)已知循环次数 2)循环次数未知允许0次循环的循环结构:在循环工作之前检测循环条件。循环控制循环控制?循环工作循环工作循环结束循环结束循环初始化循环初始化YN第14页/共34页第五章 汇编语言程序设计单重循环简单循环结构:循环体中不套循环。例:求n个单字节数据
10、的累加,设数据串已在43H起始单元,数据串长度在42H单元,累加和不超过2个字节。SUM:MOVR0,#42H;设指针MOVA,R0MOVR2,A ;循环计数器R2nCLRA ;结果单元清0MOVR3,AADD1:INCR0 ;修改指针 ADDA,R0 ;累加 JNC NEXT ;处理进位 INCR3 ;有进位,高字节加1NEXT:DJNZ R2,ADD1;循环控制:数据是否加完?MOV40H,A ;循环结束,保存结果 MOV41H,R3 RET第15页/共34页第五章 汇编语言程序设计循环控制方法:计数控制、特征标志控制。一.计数控制:设循环计数器,控制循环次数。正计数和倒计数两种方式。例:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 原理 汇编语言 程序设计
限制150内