- 1、本文档共44页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ATS汇编语言程序设计.ppt
实际中,经常遇到图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,计
文档评论(0)