- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4章才at89s51汇编语言程序设计
实际中,经常遇到图4-7的分支转移程序设计,典型例子就是当单片机系统中的键盘按下时,就会得到一个键值,根据不同的键值,跳向不同的键处理程序入口。此时,可用直接转移指令(LJMP或AJMP指令)组成一个转移表,然后把该单元的内容读入累加器A,转移表首地址放入DPTR中,再利用间接转移指令实现分支转移。 【例4-11】 根据寄存器R2的内容,转向各个处理程序PRGX(X=0~n)。 (R2)=0,转PRG0 (R2)=1,转PRG1 …… (R2)=n,转PRGn 程序如下: JMP6: MOV DPTR,#TAB5 ;转移表首地址送DPTR MOV A,R2 ;分支转移参量送A MOV B,#03H ;乘数3送B MUL AB ;分支转移参量乘3 MOV R6, A ;乘积的低8位暂存R6 MOV A,B ;乘积的高8位送A ADD A ,DPH ;乘积的高8位加到DPH中 MOV DPH, A MOV A, R6 JMP @A+DPTR ;多分支转移选择 ? …… TAB5: LJMP PRG0 ;多分支转移表 LJMP PRG1 …… LJMP PRGn ;重点 R2中的分支转移参量乘3是由于长跳转指令LJMP要占3个单元。本例程序可位于64KB程序存储器空间的任何区域。 4.3.7 循环程序设计 1.循环程序的结构 (1)循环初始化 完成循环前的准备工作。循环控制计数初值设置、地址指针起始地址设置、为变量预置初值等。 (2)循环处理 完成实际的处理工作,反复循环执行部分,故又称循环体。 (3)循环控制 在重复执行循环体过程中,不断修改循环控制变量,直到符合结束条件,就结束循环程序执行。 循环结束控制方法分为循环计数控制法和条件控制法。 (4)循环结束 这部分是对循环程序执行的结果进行分析、处理和存放。 2.循环结构的控制 分为循环计数控制结构和条件控制结构。 图4-8 计数循环控制结构 图4-9 条件控制结构 (1)计数循环控制结构 DJNZ Rn,rel ;以工作寄存器作控制计数器 DJNZ direct,rel ;以直接寻址单元作控制计数器 例如,计算n个数据的和,计算公式为 。 图4-10 求数据和的程序框图 【例4-12】 求n个单字节无符号数xi的和,xi按i顺序存放在内RAM从50H开始单元中,n放在R2中,和(双字节)在R3R4中。程序如下: ADD1: MOV R2,#n ;加法次数n送R2 MOV R3,#0 ;R3存放和的高8位,初始值为0 MOV R4,#0 ;R4存放和的低8位,初始值为0 MOV R0,#50H LOOP: MOV A,R4 ADD A,@R0 MOV R4,A INC R0 CLR A ADDC A,R3 MOV R3,A DJNZ R2,LOOP ;判加法循环次数是否已到? END (2)条件控制结构 【例4-13】 一串字符,依次存放在内部RAM从30H单元开始的连续单元中,字符串以0AH为结束标志,测试字符串长度。 如果字符与“0AH”不等,则长度计数器和字符串指针都加1;如果比较相等,则表示该字符为“0AH”,字符串结束,计数器值就是字符串的长度。程序如下: MOV R4,#0FFH ;长度计数器初值送R4 MOV R1,#2FH ;字符串指针初值送R1 NEXT: INC R4 INC R1 CJNE @ R1,#0AH,NEXT ;比较,不等则进行下一字符比较 END 【例4-14】 50ms延时程序。 在使用12MHz晶振时,一个机器周期为1μs,执行一条DJNZ指令的时间为2μs。 ?DEL: MOV R7,#200 ;本指令执行时间1μs ?DEL1:MOV R6,#125 ;本指令执行时间1μs ?DEL2:DJNZ R6,DEL2 ;指令执行1次为2μs,计
您可能关注的文档
最近下载
- 2025年海洋石油开采智能可穿戴设备柔性传感技术创新报告.docx
- 2025年湛江市中心人民医院医护人员招聘参考题库附答案解析.docx VIP
- S6520X-EI系列万兆交换机彩页.pdf VIP
- 新人教版高中数学选择性必修第一册全套PPT课件及配套讲义.pptx VIP
- 3.1 电离平衡 课件【新教材】人教版高中化学选择性必修一(共42张PPT).pptx VIP
- 2024年人教版必修一第二章氧化还原反应第一课时 课件 29PPT.ppt VIP
- 平面向量测试题高考经典试题附详细答案解析.doc VIP
- (高清版)T 30366-2024 生物质术语.pdf VIP
- 汽车消费复杂行为分析报告.pptx VIP
- 交通事故和解赔偿协议书范本.docx VIP
文档评论(0)