版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章汇编语言程序设计教学目标及要求:1了解单片机汇编语言的标准2熟悉单片机的顺序、循环和分支程序设计方法主要内容:1顺序与循环程序设计2分支程序设计3查表程序设计4子程序设计5综合编程举例教学重点和难点:熟悉单片机循环和分支程序设计,掌握单片机各种查表程序的设计。5.1.2汇编语言的标准一、汇编语言源程序的格式(标号:)操作码操作数,操作数(;注释)HF_CON00:MOVA,#30H;30H
A
二、汇编语言伪指令(1)ORG(origin)
ORG1000HMOVA,
#30H
1000H74H1001H30H二、汇编语言伪指令(2)END整个程序结束例如:MOV30H,AENDMOV40H,A二、汇编语言伪指令(3)EQU(equate)等值伪指令,用在整个程序的最前面,定义变量或常数.BCD_DATA0EQU30HBCD_DATA1EQU31HASCII_VALUEEQU32HHOUR_MAXEQU23二、汇编语言伪指令(3)EQU(equate)MOVA,BCD_DATA0MOVASCII_VALUE,ACJNEA,#HOUR_MAX,HF_CON0二、汇编语言伪指令(4)DB(definebyte)(5)DW定义数据常数,用于建表DISP_TAB:DB78HDB00001100BDB‘A’MOVDPTR,#DISP_TABMOVA,#2MOVCA,@A+DPTR二、汇编语言伪指令(6)BIT象EQU一样,只是定义的是位地址例如:ERR_FLAGBIT00HDISP_FLAGBIT01HP0.0BIT?程序的整体格式:ASCII_VALEQU32HORG0000HLJMPINIT_STARTORG0030HINIT_START:;………;-----------------------------------------------------MAIN_LOOP: LCALLSUB_PROGRAM LJMPMAIN_LOOP;------------------------------------------------------;INPUT:WR0;OUTPUT:WR2;FUN:Addthreebytestothreebytes;-----------------------------------SUB_PROGRAM: RET;--------------------------------- END
5.2.1顺序程序设计例1:把30H单元中压缩两个BCD码拆开成ASCII码,存入40H,41H单元。BCD_DATAEQU30HASC_DATA0EQU40HASC_DATA1EQU41H;----------------------------------;INPUT:BCD_DATA;OUTPUT:ASC_DATA0/1;FUN:changebcdcodetoascii;----------------------------BCD_TO_ASC:RET例1:把30H单元中压缩两个BCD码拆开成ASCII码,存入40H,41H单元。563635例1:把30H单元中压缩两个BCD码拆开成ASCII码,存入40H,41H单元。5630063665300535565.2.1顺序程序设计例2:求一个16位二进制负数的补码,设此16位二进制存放在20H,21H中,求补后送存30H,31H。COMP_DATA0EQU20HCOMP_DATA1EQU21HRESULT0EQU30HRESULT1EQU31H;----------------------------------;INPUT:BU_DATA0/1;OUTPUT:RESULT0/1;FUN:getcomplement;----------------------------CALCULATE_COMP_CODE:RET负数补码方法:去掉负号,取反加1
1111000001010101011100000101010110001111101010101000111110101011负数补码方法:去掉负号,取反加1
11110000000000000111000000000000100011111111111110010000000000005.2.2循环程序设计例4:80C51单片机使用的晶振为6MHz,要求设计一个软件延时程序,延时时间为10ms.;----------------------------------;INPUT:NO;OUTPUT:NO;FUN:Delay10ms;R0/2;----------------------------DELAY_10MS:RET计算循环时间:1T=2usDELAY_10MS:MOVR2,#XXDELAY_LOOP0:DJNZR2,DELAY_LOOP0RET;2T(LCALL);1T;;2T×(XX);2TT(sum)=2T+1T+2T(XX)+2TTmax=2T+1T+2T×256+2T=517×2us=1034usDELAY_10MS:MOVR2,#XXDELAY_LOOP1:MOVR0,#YYDELAY_LOOP0:DJNZR0,DELAY_LOOP0DJNZR2,DELAY_LOOP1RET;2T(LCALL);1T;;1T;;2T×(YY);(1T+2T×(YY)+2T)×XX;2TTs=2T+1T+(1T+2T×(YY)+2T)×XX+2TTs=2T+1T+(1T+2T×(YY)+2T)×XX+2T10×1000=(5+(3+2Y)×X)×2解:(3+2Y)X=4995=5×9×111X=45,Y=54DELAY_10MS:MOVR2,#45DELAY_LOOP1:MOVR0,#54DELAY_LOOP0:DJNZR0,DELAY_LOOP0DJNZR2,DELAY_LOOP1RETDELAY_10MS:MOVR2,#XXDELAY_LOOP1:MOVR0,#YYDELAY_LOOP0:NOPNOPDJNZR0,DELAY_LOOP0DJNZR2,DELAY_LOOP1RET;2T(LCALL);1T;;1T;;4T×(YY);;;(1T+4T×(YY)+2T)×XX;2TDELAY_10MS:MOVR2,#XXDELAY_LOOP1:MOVR0,#YYDELAY_LOOP0:DJNZR0,DELAY_LOOP0NOPNOPDJNZR2,DELAY_LOOP1RET;2T(LCALL);1T;;1T;;2T×(YY);;;(1T+2T×(YY)+4T)×XX;2TDELAY_10MS:MOVR2,#XXDELAY_LOOP1:MOVR0,#YYDELAY_LOOP0:DJNZR0,DELAY_LOOP0DJNZR2,DELAY_LOOP1NOPNOPRET;2T(LCALL);1T;;1T;;2T×(YY);(1T+2T×(YY)+2T)×XX;1T;1T;2T5.2.2循环程序设计例5:用P1口作为数据读入口,为了读取稳定的值,要求读8次后取平均。;----------------------------------;INPUT:NO;OUTPUT:R1;VAR:R0/1/2;FUN:getaverageofreadingP1eighttimes.;----------------------------AVERAGE_OF_P1:RET5.2.2循环程序设计例5:将20H单元内的两个BCD数相乘,相乘的结果要求仍为BCD数,乘积存入21H单元。;----------------------------------;INPUT:BCD;OUTPUT:BCD_RESULT;VAR:;FUN:BCD×BCDBCD;----------------------------MUL_BCD:RET750705×0707070707+5次5.3分支程序设计
5.3.2无条件/条件转移程序例1:设5AH单元中有一变量X,请编写计算下述函数式,结果存入5BH单元.X2–1;X<10Y=X2+8;10≦X≦1541;X>155.3分支程序设计
5.3.3散转程序设计1、采用转移指令表2、采用地址偏移量表3、采用转向地址表例2根据R7的内容,转向各个操作程序R7=0,转入OPR0R7=1,转入OPR1....R7=n,转入OPRnMOVDPTR,#JPTAB1MOVA,R7ADDA,R7JNCNOADINCDPHNOAD:JMP@A+DPTRJPTAB1:AJMPOPR0AJMPOPR1....AJMPOPRn5.4查表程序设计5.4.2规那么变量的查表程序设计例1:设计一个将十六进制数转换成ASCII码的子程序.设十六进制数存放在R0中的低4位,要求将转换后的ASCII码送回R0中.MOVA,R0ANLA,#0FHADDA,#02HMOVCA,@A+PCMOVR0,ARETTAB:DB30H,31H,32H,33H,34H,35H,36H,37HDB38H,39H,41H,42H,43H,44H,45H,46HMOVDPTR,#TABMOVA,R0ANLA,#0FHMOVCA,@A+DPTRMOVR0,ARETTAB:DB30H,31H,32H,33H,34H,35H,36H,37HDB38H,39H,41H,42H,43H,44H,45H,46H5.4查表程序设计5.4.2非规那么变量的查表程序设计例3:Y=f〔X〕X0123H0234H085AH……0AC4HY34A7H5678HAC23H……E345H设子程序中,X值存放在X_H和X_L单元中,一旦找到X的存放地址,相应的Y值就在其后的两个单元中.所查到的Y值放到Y_H和Y_L中.TAB:DB01H,23H
DB34H,0A7H
DB02H,34HDB56H,78HDB08H,5AHDB0ACH,23HDB0AH,0C4HDB0E3H,045H
X:0123HY:34A7H
X_H:08HX_L:5AHY_H:0ACHY_L:23HMOVCA,@A+DPTRMOVY_H,AINCDPTRMOVCA,@A+DPTRMOVY_L,ARETNO_SAME1:INCDPTRNO_SAME2:INCDPTRINCDPTRINCDPTRLJMPLOOP
MOVDPTR,#TABLOOP:
CLRAMOVCA,@A+DPTRCJNEA,X_H,NO_SAME1INCDPTRMOVCA,@A+DPTRCJNEA,X_L,NO_SAME2INCDPTRMOVDPTR,#TABLP:CLRAMOVCA,@A+DPTRCJNEA,X_H,LP1INCDPTRMOVCA,@A+DPTRCJNEA,X_L,LP2INCDPTRMOVCA,@A+DPTRMOVY_H,AINCDPTRMOVCA,@A+DPTRMOVY_L,ARETLP1:INCDPTRLP2:INCDPTRINCDPTRINCDPTRLJMPLPMOVA,END_H
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 环保公司解除租赁协议
- 污水处理招投标委托书范例
- 农业物流服务合同管理指南
- 文化产业严禁参与盗版侵权承诺书
- 公共广场地砖铺设合同
- 建筑加固改造升级劳务协议
- 上海市工业园区基础设施施工合同
- 医疗机构用工规范承诺书
- 石油开采设备日常养护管理办法
- 渔业捕捞与加工合同
- 《高一学期期中考试动员》主题班会课件
- 水灾期间的食品安全措施
- JTG F90-2015 公路工程施工安全技术规范
- 医院人才梯队建设与培养方案
- 上下班安全交通培训
- 股骨头置换术后护理查房
- 五谷知识课件
- 在线网课知慧《亚健康学(亚健康学)》单元测试考核答案
- 《招商招租方案》课件
- 第六单元中国特色社会主义生态文明建设及结语练习-2023-2024学年中职高教版(2023)中国特色社会主义
- 平面直角坐标系(单元教学设计)大单元教学人教版七年级数学下册
评论
0/150
提交评论