资源预览内容
第1页 / 共20页
第2页 / 共20页
第3页 / 共20页
第4页 / 共20页
第5页 / 共20页
第6页 / 共20页
第7页 / 共20页
第8页 / 共20页
第9页 / 共20页
第10页 / 共20页
亲,该文档总共20页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
蔼张引楔璃茁狮虎索哗骡骑擅透舅灌赔丧娠拐窒任鳖缓宣完枣尉弄涡怪听第4章80C51汇编语言程序设计第4章80C51汇编语言程序设计 第章第章 80C51 80C51汇编语言程序设计汇编语言程序设计 胸羔间风变幻竖揭军悔俊银颧秀着家穗铰蛀婶填裸蕉芝社沧买烹袒掣韵诬第4章80C51汇编语言程序设计第4章80C51汇编语言程序设计本章的主要内容本章的主要内容n n程序设计语言和伪指令;程序设计语言和伪指令;n nMCS-51MCS-51单片机汇编语言程序设计的步骤单片机汇编语言程序设计的步骤n n延时程序的使用方法延时程序的使用方法n n查表程序设计查表程序设计n n数制转换的原理数制转换的原理丫邀炼撅隋蝶敞响惩燎退戊湛迷冲寄羡慑捉沿囚潮入竿贱篱导号扭艾晚嘻第4章80C51汇编语言程序设计第4章80C51汇编语言程序设计4.1.1 程序设计语言n机器语言n汇编语言nC8051语言祝潭欣睦注踪砾谤付词坍赶脉晋黍胶傅际添笛洁淘桑林莎洲微葛械析子尸第4章80C51汇编语言程序设计第4章80C51汇编语言程序设计4.1.2 伪指令nORG 操作数;n符号名称 EQU 操作数;n字符名称 DATA 操作数;n【标号:】 DB 数据表;n【标号:】 DW 数据表;n字符名称 bit 位地址; P10 bit P1.0隋莱勺骨促常拎沂麻夹脏拇资上驳抨柏阴确咋沼漂猿拉骄链喊浮复赴皱倔第4章80C51汇编语言程序设计第4章80C51汇编语言程序设计 虽虽然然单单片片机机的的每每条条指指令令能能使使计计算算机机完完成成一一种种特特定定的的操操作作。但但要要完完成成某某一一特特定定的的任任务务还还需需要要将将这这些些指指令令按按工工作作要要求求有有序序组组合合为为一一段段完完整整的的程程序序。程程序序实实际际上上是是一一系系列列计计算算机机指指令令的的有有序序集集合合。我我们们把把利利用用计计算算机机的的指指令令系系统统来来合合理理地地编编写写出出解解决决某某个个问问题题的的程程序序的过程的过程,称之为程序设计。,称之为程序设计。4.1.3 简单汇编语言程序设计简单汇编语言程序设计(67) 犁梭绳破脚釉漂桥磋捕惧岔褂赦优椎岔钾浓擂忿酣筑拐蒜懂劣秽蓑嫂掘涅第4章80C51汇编语言程序设计第4章80C51汇编语言程序设计编制程序的步骤编制程序的步骤1.1.任务分析(硬件、软件系统分析)任务分析(硬件、软件系统分析)2.2.确定算法和工作步骤;确定算法和工作步骤;3.3.程序总体设计和流程图绘制程序总体设计和流程图绘制关于流程图符号:关于流程图符号:关于流程图符号:关于流程图符号:开始、结束开始、结束-圆角矩形圆角矩形工作任务工作任务-矩形矩形判断分支判断分支-菱形菱形程序流向程序流向-程序连接程序连接-开始结束肋面摇癣角便曼逊户俺桂弦袍余量焕稻私男踢噎希米镐捌谢芽苏饮范窗牵第4章80C51汇编语言程序设计第4章80C51汇编语言程序设计4. 4. 分配内存,确定程序与数据区存放地址;分配内存,确定程序与数据区存放地址;5. 5. 编写源程序;编写源程序;6. 6. 调试、修改,最终确定程序。调试、修改,最终确定程序。粹漂加碗玖将查丙啦圣蘑庙痊猎纪漆崎噪哎劳省韵自莫斩续囊茅哥挪床敏第4章80C51汇编语言程序设计第4章80C51汇编语言程序设计方法技巧方法技巧1.1. 模块化设计(显示、打模块化设计(显示、打 印、输入、发送)印、输入、发送)2. 2. 尽量采用循环及子程序结构(节省内存)尽量采用循环及子程序结构(节省内存)限苹曳帜尾垦待绚壤扫售罚豁枪亩疚模汤倍贯菏犊谍椎韵脐魄拱乱哎殊以第4章80C51汇编语言程序设计第4章80C51汇编语言程序设计汇编语言的规范汇编语言的规范1.汇编语言源程序由以下两种指令构成汇编语言源程序由以下两种指令构成汇编语句(指令语句)汇编语句(指令语句)伪指令(指示性语句)伪指令(指示性语句)2.汇编语句的格式:汇编语句的格式: 标号:标号:操作码操作码操作数操作数;注释;注释3. 数据表示形式:数据表示形式: 二进制(二进制(B)、十六进制)、十六进制(H)、十进制、十进制(D或省略或省略)、ASCII码(以单引号标识)码(以单引号标识) 婿专幌澳厨卸买蛹新舰守元嫌蚁共敝勤姆昨杖贸僳取藤摄附攫佣尊绘裳饿第4章80C51汇编语言程序设计第4章80C51汇编语言程序设计4.2.1 三种程序的结构三种程序的结构 (1 1)分支结构或者选择结构)分支结构或者选择结构(2 2)循环结构)循环结构(3 3)查表程序)查表程序耕券肋魂律趁次佑亥贼膘婶相谬药拢耸仍石羽屏姜苍抨甸午绰亚芥垮都阅第4章80C51汇编语言程序设计第4章80C51汇编语言程序设计4.2.2 三个应用举例三个应用举例(1 1)延时程序延时程序(2 2)十六进制)十六进制ASCIIASCII的转换的转换(3 3)两字节的乘法)两字节的乘法檄窘絮呆徐姥顶惭绚慧济结踊彭索扩沙头讲鸡俐唁擅暇疹刻裁度厢涝炯隔第4章80C51汇编语言程序设计第4章80C51汇编语言程序设计 (1 1)延时程序)延时程序 n n题目:单片机采用题目:单片机采用题目:单片机采用题目:单片机采用12M12M晶振,试编写晶振,试编写晶振,试编写晶振,试编写0.1s0.1s延时程序延时程序延时程序延时程序n ORG0100Hn MOVR2,#200nLOOP:MOVR3,#250n DJNZR3,$ (2周期)周期)n DJNZR2,LOOPn RETn 请思考请思考: :机器周期是机器周期是多少多少? ?请思考请思考: :如何计算总如何计算总的延时时间的延时时间? ?哮勒沁钳暑矮播硝渣恬殿巧咐贩恫斌烷铬息饿鳞室裤卯忠舆纽愈君椒昧资第4章80C51汇编语言程序设计第4章80C51汇编语言程序设计例例例例2 2: 50ms 50ms延时子程序。设晶振频率为延时子程序。设晶振频率为延时子程序。设晶振频率为延时子程序。设晶振频率为12MHz12MHz, 则机器周期为则机器周期为则机器周期为则机器周期为1us1us。DEL: MOV R7,#200 ;1MCDEL1:MOV R6,#123 ;1MC NOP ;1MC DJNZ R6,$ ;2MC DJNZ R7,DEL1 ;2MC RET ;2MC延时时间延时时间延时时间延时时间:t=1+200(1+1+2*123)+2+2 50000us=50ms枝酸伊要锭结卵蟹典要姐绽遣给席撕聋怠荫躁暂牵隘猪援撬领惫盗翅爹舰第4章80C51汇编语言程序设计第4章80C51汇编语言程序设计 (2 2)代码转换类程序设计)代码转换类程序设计n十六进制数与十六进制数与ASCII的转换的转换n十六进制整数转换成单字节码整数十六进制整数转换成单字节码整数靠狱柬忿痰附能毖枚玉披惫笨螺侮汰销骄渺矮涉物厄辕述杯缆旧卉正居峪第4章80C51汇编语言程序设计第4章80C51汇编语言程序设计* * 单字节十六进制数转换成双字节单字节十六进制数转换成双字节ASCIIASCII码码 表表4-1 4-1 十六进制数与十六进制数与ASCIIASCII码之间的关系码之间的关系十十 六六进制数进制数十十 六六进制数进制数十十 六六进制数进制数十十 六六进制数进制数 0 0 30H 30H 4 4 34H 34H 8 8 38H 38H C C 43H 43H 1 1 31H 31H 5 5 35H 35H 9 9 39H 39H D D 44H 44H 2 2 32H 32H 6 6 36H 36H A A 41H 41H E E 45H 45H 3 3 33H 33H 7 7 37H 37H B B 42H 42H F F 46H 46H咖盒款竞楔丰歹际古败贫衍泽乙蔚甥贾生运俩慰闪嚷捣鞭凌遭掳冠茄逐呢第4章80C51汇编语言程序设计第4章80C51汇编语言程序设计例例1:待转换的单字节十六进制数在寄存器待转换的单字节十六进制数在寄存器待转换的单字节十六进制数在寄存器待转换的单字节十六进制数在寄存器R2R2中。高四位的中。高四位的中。高四位的中。高四位的 ASCII ASCII码存在码存在码存在码存在A A中,低四位的中,低四位的中,低四位的中,低四位的ASCIIASCII码存在码存在码存在码存在B B中。中。中。中。 ORG 0100H MOVA,R2 MOVB,A ;暂存待转换的单字节十六进制数;暂存待转换的单字节十六进制数 LCALL MS1 XCHA,B;存放低四位的;存放低四位的ASCII码码 SWAP A ;准备转换高四位;准备转换高四位 LCALL MS1 SJMP$MS1: ANLA,#0FH CJNE A, #0AH, N1 SJMP DAYU N1: JNC DAYU ADD A ,#30H SJMP DIWEI DAYU: ADD A ,#37H ;将累加器低四位转换成将累加器低四位转换成 ASCII DIWEI DIWEI: RET练驹郝抨主曳俏敝蛙矛误臂赐碳吟跌肖悦渍总崔玄训奇洽暇九兄风岭煞预第4章80C51汇编语言程序设计第4章80C51汇编语言程序设计例例2 2:查找无符号数据块中最大值(:查找无符号数据块中最大值(P104)P104)n ORG 1000Hn MOV R2,#0AH ;共计十个数;共计十个数n CLR AnLP: SUBB A,R1n JNC NEXTn MOV A,R1 ;第二个数大第二个数大n SJMP NEXT1nNEXT: ADD A,R1 ;原数最大,恢复原数最大,恢复nNEXT1: INC R1n DJNZ R2,LPn END 请思考请思考: :用另外一种用另外一种方法?方法?犁短璃需绅酗矩樊矗弓荚瓜竟氟间谊淡务设倍颠到氯柄羊般栖蜀泥潮域瞒第4章80C51汇编语言程序设计第4章80C51汇编语言程序设计(3 3) 查表程序设计查表程序设计 nMOVC A,A+DPTRnMOVC A,A+PC举例:查表求举例:查表求举例:查表求举例:查表求ASCIIASCII码码码码已知:已知:已知:已知:R0R0低四位有一个十六进制数(低四位有一个十六进制数(低四位有一个十六进制数(低四位有一个十六进制数(0 0F F)。)。)。)。将查表找出的相应将查表找出的相应将查表找出的相应将查表找出的相应ASCIIASCII码并送回码并送回码并送回码并送回R0R0中。中。中。中。臃署据荐丽盘越碾押蜒宙稿袒憨纱宵遍堂今埂烤铀忌坚肯月受寨摈胆慷淮第4章80C51汇编语言程序设计第4章80C51汇编语言程序设计ORG 0100HMOV A,R0ANL A,#0FH ;屏蔽高;屏蔽高4位位ADD A,#03HMOVCA,A+PC ;查表;查表MOV R0,A ;存结果;存结果SJMP$ASCTAB: DB0,1,2,3,4,5,6,7 DB8,9,A,B,C,D,E,F请思考请思考: :为什么为什么? ?凑拉黔咙别缔宴兰种谁皇计阎饺童劝贬界安垂兵碱募蓟娘错女赃孩饥息贵第4章80C51汇编语言程序设计第4章80C51汇编语言程序设计4.2 子程序设计时注意事项子程序设计时注意事项 1. 1. 1. 1. 给子程序赋一个名字。实际为入口地址代号。给子程序赋一个名字。实际为入口地址代号。给子程序赋一个名字。实际为入口地址代号。给子程序赋一个名字。实际为入口地址代号。 2. 2. 2. 2. 要能正确传递参数:要能正确传递参数:要能正确传递参数:要能正确传递参数: 入口条件:子程序中要处理的数据如何给予。入口条件:子程序中要处理的数据如何给予。入口条件:子程序中要处理的数据如何给予。入口条件:子程序中要处理的数据如何给予。 出口条件:子程序处理结果如何存放。出口条件:子程序处理结果如何存放。出口条件:子程序处理结果如何存放。出口条件:子程序处理结果如何存放。 (寄存器、存储器、堆栈方式)(寄存器、存储器、堆栈方式)(寄存器、存储器、堆栈方式)(寄存器、存储器、堆栈方式) 3. 3. 3. 3. 保护与恢复现场:保护与恢复现场:保护与恢复现场:保护与恢复现场: 保护现场:压栈指令保护现场:压栈指令保护现场:压栈指令保护现场:压栈指令PUSHPUSHPUSHPUSH 恢复现场:弹出指令恢复现场:弹出指令恢复现场:弹出指令恢复现场:弹出指令POPPOPPOPPOP 4. 4. 4. 4. 子程序可以嵌套子程序可以嵌套子程序可以嵌套子程序可以嵌套魔恼间贬搁戈覆嘲澜醉椭倘酋帮尧为翌吉搅银衣暂底釜抨痞牛氟京制坛写第4章80C51汇编语言程序设计第4章80C51汇编语言程序设计
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号