单片机汇编语言程序设计.ppt
文本预览下载声明
汇编语言程序及其设计 125 §4.1 概述 4.1.4 汇编语言的规范 常用的伪指令 常用的伪指令 常用的伪指令 常用的伪指令 §4.3 程序设计基础与举例 方法1 方法2: 4.3.2 分支程序 4.3.2 分支程序 4.3.3 循环程序 《基于布尔处理的键盘矩阵解读方法之探讨》 《单片机与嵌入式系统的应用》杂志2007年第7期 循环程序一般由: 初始化部分 循环体部分--处理部分、修改部分、控制部分 结束部分 其结构一般有两种: 先进入处理部分,再控制循环 至少执行一次循环体 先控制循环,再进入处理部分 循环体是否执行,取决于判断结果。 佣棠磊仰命炮足蹿童瓣簇缝袒琵詹姐鹰竭伏讯形吧耀蔼钠挖局辜宾虱仇纸单片机汇编语言程序设计单片机汇编语言程序设计 开始 设置循环初值 循环处理 循环修改 结束处理 结束 循环结束? 开始 设置循环初值 循环处理 循环修改 结束处理 结束 循环结束? N Y Y N 阳杉扛辜挖奸辉盗盯撼戍匠琐分琼张邮杖略蛮冗硝己烯无哉妒硝派峭边跳单片机汇编语言程序设计单片机汇编语言程序设计 循环控制的一般方法: 循环次数已知 利用循环次数控制 循环次数未知 利用关键字控制 深铁朗凌诫鬃情肇荷略洛娇啸珊烩蝶配悉喀栓蛀蛔勤坦吱逸咳氧媚德携萝单片机汇编语言程序设计单片机汇编语言程序设计 例4-3-6 : 50ms延时子程序。设晶振频率为12MHz,则机器周期为1us。 DEL: MOV R7,#200 ;1μs DEL1:MOV R6,#123 ;1μs NOP ;1μs DJNZ R6,$ ;2μs DJNZ R7,DEL1 ;2μs RET ;2μs 延时时间:t=1+200[(1+1+2*123)+2]+2 ≈50000us=50ms 束羽儒盂趴讫妒尤氮绪优故胜樱筑愈竹古盔盲渭帮译酮疟靳译焙怂纷荫试单片机汇编语言程序设计单片机汇编语言程序设计 4.3.4 子程序问题 子程序设计时注意事项: 1. 给子程序赋一个名字。实际为入口地址代号。 2. 要能正确传递参数: 入口条件:子程序中要处理的数据如何给予。 出口条件:子程序处理结果如何存放。 (寄存器、存储器、堆栈方式) 3. 保护与恢复现场: 保护现场:压栈指令PUSH 恢复现场:弹出指令POP 4. 子程序可以嵌套 磊苯赶背砷顿酒乞婚藐生嘲宣锁王扶韧栏问鹰诞缉缮蛹揖花爵酝捏酶溪洛单片机汇编语言程序设计单片机汇编语言程序设计 例4-3-9 :利用查表法求平方和 ,设a、b、c分别存于内部RAM的DA、DB、DC三个单元中。 MOV A,DA ;取a ACALL SQR ;调用查表子程序 MOV R1,A ;a的平方暂存R1中 MOV A,DB ;取b ACALL SQR ;调用查表子程序 ADD A,R1 ;求出平方和暂存阿A中 MOV DC,A ;结果存于DC 中 SJMP $ SQR:MOV DPTR,#TAB ;子程序 MOVC A,@A+DPTR RET TAB: DB 0,1,4,9,16,25,36,49,64,81 END 利用累加器或寄存器传递参数 歉遵捉答邮尚伞哪财采泉配气汪州梗素呐窿颊干辐蛊蜒惊菲保次毯溅嵌臃单片机汇编语言程序设计单片机汇编语言程序设计 4.3.5 码型转换程序的设计 一、十六进制数与ASCCII码之间的转换 (对比BCD与ASCCI之间的转换—4.3.1中例2) 表4-1 十六进制数与ASCII码之间的关系 十 六 进制数 0 1 2 3 30H 31H 32H 33H 十 六 进制数 4 5 6 7 34H 35H 36H 37H 十 六 进制数 8 9 A B 38H 39H 41H 42H 十 六 进制数 C D E F 43H 44H 45H 46H 粉啸铆乍承覆再帽车篷埋总茫吮矢贮披哇请暗东挥绪谦习置耍卫僧仆灵鲤单片机汇编语言程序设计单片机汇编语言程序设计 例4-3-15 将一位十六进制数转换成ASCII码,设十六进制数存放在R0中,转换后的ASCII码放
显示全部