网站大量收购独家精品文档,联系QQ:2885784924

[工学]C54x第五章 程序设计.ppt

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

第五章 程序设计 本章讲述如何进行汇编程序设计和汇编与C语言混合编程的一些知识。 程序的控制和转移 基本程序控制指令√ 条件操作 循环操作 比较操作 基本程序控制指令 基本程序控制指令主要分为:分支转移指令,子程序调用指令和子程序返回指令 . 分支指令与子程序调用的区别 分支转移指令只是通过改变PC来改变程序运行流向,无堆栈操作. 子程序调用指令是首先将返回地址压入堆栈,再执行子程序,在子程序的最后执行返回指令,将返回地址出栈并加载pc,同时复原堆栈指针。 程序控制与转移 基本程序控制指令 条件操作√ 循环操作 比较操作 条件操作所使用的条件算符 条件分支指令或条件调用指令、条件返回指令都属于条件操作。条件算符分为两组,每组又分为几类。 第一组:组内可以对同一累加器的两类条件可以进行“与” 逻辑运算。 第二组:可以对三类条件同一性质的条件进行组合,如都是位有效,或都是位无效。 只有BIO是反逻辑,其它都是1有效,0无效。 条件操作举例 条件分支种类很多,例如: RC TC;条件返回,表示若TC=1,则子程序返回,否则继续执行。 CC sub,BNEQ ;条件调用,表示若累加器B不等于0,则调用sub子程序。 BC new,AGT,AOV ;与关系的条件分支操作,如果A?0且A溢出,则跳转到new行语句,否则顺序执行。 BC new,AGT BC new,AOV ;或关系的逻辑分支操作。 循环控制 基本程序控制指令 条件操作 循环操作√ 比较操作 循环操作--BANZ 由BANZ构成的循环 单指令重复 块重复操作 循环的嵌套 循环操作--BANZ BANZ指令格式:BANZ[D] pmad, Sind ; 表示辅助寄存器Sind不为0就跳转到pmad行语句,否则顺序执行下面语句。Sind 在这里只是表示一种条件,形式与寻址相同,但不进行寻址。 BANZ例子 如:计算y= .bss x,5 ;定义数组型变量x,从x0到x4 .bss y,1 ; 定义变量y STM #x,AR1; 将变量x的开始地址送给AR1  STM #4,AR2; 将立即数4送给AR2 LD #0,A ; 将累加器A清零 loop: ADD *AR1+,A; 依次累加变量x中的所有单元 BANZ loop,*ar2- ; 连续执行5次,每次AR2的 ;数值减1,直到AR2中数值为0时跳出循环。 STL A,@y ; 存储结果 循环操作 –单指令重复 由BANZ构成的循环 单指令重复 块重复操作 循环的嵌套 单指令重复 种类:有RPT 和RPTZ两条指令 指令格式:PRT #n ;将该指令后面的指令重复执行n+1次 RPTZ A,#n;在重复执行前,将累加器A清零 使用寄存器:该指令使用16位RC寄存器,最大重复次数为65536,即设置的n的最大值为65535。 优点:重复操作可以使乘法/累加、数据块传送等多周期指令转化为单周期指令来提高执行速度。 如: RPT #99;重复执行100次 MVPD 指令 MVPD Pmad,Smem 注意:单指令重复过程中不能响应中断。 循环操作—块重复 由BANZ构成的循环 单指令重复 块重复操作 循环的嵌套 块重复操作 控制块重复操作主要有3个寄存器:块重复计数器(BRC),块重复起始地址(RSA)和块重复结束地址寄存器(REA)。 如:STM #99,BRC ;设置循环次数100 RPTB NEXT-1 ;设置REA 块循环开始语句 ; RSA 等于此行地址 …… 块循环结束语句;REA等于此行地址 NEXT: …. 块循环后面的第一条语句 程序进入循环时,置BRAF(块循环操作标志)= 1,每次执行到REA地址时,若BRC不为0,则重新转到RSA进行执行,同时BRC自动减1,若BRC等于0,则置BRAF=0,结束块循环。 注意:块循环操作不能嵌套。但可以响应中断 。 循环操作—循环的嵌套 由BANZ构成的循环 单指令重复 块重复操作 循环的嵌套 循环的嵌套 从前面的学习我们知道,单指令重复,块循环都不能嵌套使用,但我们在编程时往往要使用多重循环。我们可以采用,内层使用单指令重复,次外层使用块重复,最外层使用BANZ循环的方法来实现多重循环. BANZ循环可以嵌套使用,只是使用不同的辅助寄存器。 下面是一个单指令重复指令又外加循环嵌套的例子: 循环的嵌套例子 LD #0,A STM #L-1,AR7 LOOP: STM #M-1,BRC RPTB NEXT-1 RPT #N-1 ADD #1

文档评论(0)

hhuiws1482 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档