- 1、本文档共35页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 第6章 汇编语言程序设计 6.1 程序的控制与转移 TMS320C54x具有丰富的程序控制与转移指令,利用这些指令可以执行分支转移、循环控制及子程序操作。基本的程序控制指令如表6-1所示。 表6-1 基本的程序控制指令 RET 5 RC cond 5/3 CALL sub 4 CALA src 6 CC sub , cond 5/3 B next 4 BACC src 6 BC next ,cond 5/3 子程序返回指令 执行周期 子程序调用指令 执行周期 分支转移指令 执行周期 1.条件算符 条件分支转移指令或条件调用、条件返回指令都用条件来限制分支的转移、调用和返回操作。条件算符分成两组,每组组内还有分类。 BIO NBIO C NC TC NTC 第2组: OV NOV EQ NEQ LEQ GEQ LT GT 第1组: 选用条件算符时应当注意以下3点: ?第1组:组内两类条件可以进行与/或运算,但不能在组内同一类中选择两个条件算符与/或。当选择两个条件时,累加器必须是同一个。例如,可以同时选择AGT和AOV,但不能同时选择AGT和BOV。 ?第2组:可从组内3类算符中各选一个条件算符与/或,但不能在组内同一类中选两个条件算符与/或。例如,可以同时测试TC、C和BIO,但不能同时测试NTC和TC。 ?组与组之间的条件只能进行或运算。 2.循环操作BANZ 在程序设计时,经常需要重复执行某段程序,利用BANZ(当辅助寄存器不为0时转移)指令执行循环计数和操作是十分方便的。 SUM: STM #x,AR3 STM #4,AR2 loop: ADD *AR3+,A ;程序存储器 BANZ loop,*AR2- STL A,@y 3.比较操作CMPR 编程时,经常需要数据与数据进行比较,这时利用比较指令CMPR是很合适的。CMPR指令测试所规定的AR寄存器(AR1~AR7)与AR0的比较结果。如果所给定的测试条件成立,则TC位置1,然后,条件分支转移指令就可根据TC位的状态进行分支转移了。注意,所有比较的数据都是无符号操作数。 STM #5,AR1 STM #10,AR0 loop: ... ... *AR1+ ... ... CMPR LT,AR1 BC loop,TC 6.2 堆栈的使用方法 TMS320C54x提供一个用16位堆栈指针(SP)寻址的软件堆栈。当向堆栈中压入数据时,堆栈从高地址向低地址增长。堆栈指针是减在前、加在后,即先SP?1再压入数据,先弹出数据后SP+1。 如果程序中要用到堆栈,则必须先进行设置,方法如下: size .set 100 stack .usect STK,size STM #stack+size,SP 上述语句在数据RAM空间开辟一个堆栈区。前两句在数据RAM中自定义一个名为STK的保留空间,共100个单元。第3句将这个保留空间的高地址(#stack+size)赋给SP,作为栈底,参见图6-1。至于自定义未初始化段STK 究竟定位在数据RAM中的什么位置,应当在链接器命令文件中规定。 … 65535 已用栈区 最后用的单元 SP→ 可用栈区 stack … 堆栈的设置 size .set 100 stack .usect STK,size STM #stack+size,SP 堆栈的用法 压入操作:SP先减1后,再将数据压入堆栈中 弹出操作:数据弹出后,再将SP加1 STK 0 数据存储器 图6-1 堆栈 设置堆栈之后,就可以使用堆栈了,例如: CALL pmad ;(SP)-1→SP,(PC)+2→TOS ;pmad→PC RET
文档评论(0)