第6章汇编语言程序设特计ds技术与应用实例第3版.pptVIP

  • 4
  • 0
  • 约1.04万字
  • 约 35页
  • 2019-03-18 发布于福建
  • 举报

第6章汇编语言程序设特计ds技术与应用实例第3版.ppt

* 第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)

1亿VIP精品文档

相关文档