汇编语言程序设计DSP技术与应用实例第3版.ppt
《汇编语言程序设计DSP技术与应用实例第3版.ppt》由会员分享,可在线阅读,更多相关《汇编语言程序设计DSP技术与应用实例第3版.ppt(35页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第6章章 汇编语言程序设计汇编语言程序设计6.1程序的控制与转移TMS320C54x具有丰富的程序控制与转移指令,利用这些指令可以执行分支转移、循环控制及子程序操作。基本的程序控制指令如表6-1所示。表6-1基本的程序控制指令 分支分支转转移指令移指令 执执行周期行周期子程序子程序调调用指令用指令 执执行周期行周期子程序返回指令子程序返回指令 执执行周期行周期B next 4BACC src 6BC next,cond 5/3CALL sub 4CALA src 6CC sub,cond 5/3RET 5RC cond 5/31条件算符条件分支转移指令或条件调用、条件返回指令都用条件来限制分
2、支的转移、调用和返回操作。条件算符分成两组,每组组内还有分类。第1组:EQNEQLEQGEQLTGTOVNOV第2组:TCNTCCNCBIONBIO选用条件算符时应当注意以下3点:第1组:组内两类条件可以进行与/或运算,但不能在组内同一类中选择两个条件算符与/或。当选择两个条件时,累加器必须是同一个。例如,可以同时选择AGT和AOV,但不能同时选择AGT和BOV。第2组:可从组内3类算符中各选一个条件算符与/或,但不能在组内同一类中选两个条件算符与/或。例如,可以同时测试TC、C和BIO,但不能同时测试NTC和TC。组与组之间的条件只能进行或运算。2循环操作BANZ在程序设计时,经常需要重复执
3、行某段程序,利用BANZ(当辅助寄存器不为0时转移)指令执行循环计数和操作是十分方便的。SUM:STM#x,AR3 STM#4,AR2loop:ADD *AR3+,A ;程序存储器 BANZ loop,*AR2-STL A,y3比较操作CMPR编程时,经常需要数据与数据进行比较,这时利用比较指令CMPR是很合适的。CMPR指令测试所规定的AR寄存器(AR1AR7)与AR0的比较结果。如果所给定的测试条件成立,则TC位置1,然后,条件分支转移指令就可根据TC位的状态进行分支转移了。注意,所有比较的数据都是无符号操作数。STM#5,AR1STM#10,AR0loop:.*AR1+.CMPRLT,A
4、R1BCloop,TC6.2堆栈的使用方法TMS320C54x提供一个用16位堆栈指针(SP)寻址的软件堆栈。当向堆栈中压入数据时,堆栈从高地址向低地址增长。堆栈指针是减在前、加在后,即先SP1再压入数据,先弹出数据后SP+1。如果程序中要用到堆栈,则必须先进行设置,方法如下:size.set100stack.usectSTK,sizeSTM#stack+size,SP上述语句在数据RAM空间开辟一个堆栈区。前两句在数据RAM中自定义一个名为STK的保留空间,共100个单元。第3句将这个保留空间的高地址(#stack+size)赋给SP,作为栈底,参见图6-1。至于自定义未初始化段STK究竟定
5、位在数据RAM中的什么位置,应当在链接器命令文件中规定。数据存储器0STK堆栈的设置sizeset100stackusectSTK,sizeSTM#stack+size,SP堆栈的用法压入操作:SP先减1后,再将数据压入堆栈中弹出操作:数据弹出后,再将SP加1stack可用栈区SP最后用的单元已用栈区65535图6-1堆栈设置堆栈之后,就可以使用堆栈了,例如:CALLpmad;(SP)-1SP,(PC)+2TOS;pmadPCRET;(TOS)PC,(SP)+lSP堆栈区应开辟多大?这需要按照以下步骤来确定:先开辟一个大堆栈区,且用已知数填充。运行程序,执行所有的操作。暂停,检查堆栈中的数值如
6、下图。用过的堆栈区才是实际需要的堆栈空间。1.加减法【例6-4】计算z=x+yw。SUMB:LD x,AADD y,ASUB w,ASTL A,zRET.end计算结果:数据寄存器地址存储内容十进制数x0060H000AH10y0061H001AH26w0062H0017H23z0063H000DH136.3加减法运算和乘法运算2.乘法【例6-5】计算y=mx+b。SU:LD m,TMPY x,AADD b,ASTL A,yRET.end计算结果:数据寄存器地址存储内容十进制数m0060H0003H3x0061H000FH15b0062H0014H20y0063H0041H656.4重复操作1
7、重复执行单条指令 重复指令RPT或RPTZ允许重复执行紧随其后的那一条指令。如果要重复执行n次,则重复指令中应规定计数值为n1。由于重复的指令只需要取指一次,与利用BANZ指令进行循环相比,效率要高得多。【例6-9】对数组x50,0,0,0,0进行初始化。.bss x,5或者STM#x,AR1LD#0H,ARPT#4STL A,*AR1+或者.bss x,5STM#x,AR1RPTZ#4STL A,*AR1+2块程序重复操作 块程序重复操作RPTB将重复操作的范围扩大到任意长度的循环回路。由于块程序重复指令RPTB的操作数是循环回路的结束地址,而且,其下条指令就是重复操作的内容,因此必须先用S
8、TM指令将所规定的迭代次数加载到块重复计数器(BRC)中。RPTB指令的特点是:对任意长度的程序段的循环开销为0,其本身是一条2字4周期指令;循环开始地址(RSA)是RPTB指令的下一行,结束地址(REA)由RPTB指令的操作数规定。【例6-10】对数组x5中的每个元素加1。.bss x,5start:LD#1,16,B STM#4,BRC STM#x,AR4 RPTB next-1 ADD *AR4,16,B,A STH A,*AR4+next:LD#0,B3循环的嵌套2nd:1st:STM#L1,AR7;2T外部STM#M1,BRC;2TRPTB2nd1;4T中间中间RPT#N1;1T内部
9、中间中间外部外部BANZ1st,*AR7;4T312 执行RPT指令时要用到RPTC寄存器(重复计数器),执行RPTB指令时要用到BRC、RSA和RSE寄存器。由于两者用了不同的寄存器,因此RPT指令可以嵌套在RPTB指令中,实现循环的嵌套。当然,只要保存好有关的寄存器,RPTB指令也可以嵌套在另一条RPTB指令中,但效率并不高。下图是一个三重循环嵌套结构,内层、中层和外层三重循环分别采用RPT、RPTB和BANZ指令,重复执行N、M和L次。6.5数据块传送这些指令的特点如下:(1)传送速度比加载和存储指令的速度要快;(2)传送数据不需要通过累加;(3)可以寻址程序存储器;(4)与RPT指令相
10、结合,可以实现数据块传送。数据存数据存储储器器数据存数据存储储器器#W/C数据存数据存储储器器MMR#W/CMVDKSmem,dmadMVKDdmad,SmemMVDDXmem,Ymem2/22/21/1MVDMdmad,MMRMVMDMMR,dmadMVMMmmr,mmr2/22/21/1程序存程序存储储器器数据存数据存储储器器#W/C程序存程序存储储器(器(AccAcc)数据存数据存储储器器#W/CMVPDPmad,SmemMVDPSmem,Pmad2/32/4READASmemWRITASmem1/51/51程序存储器数据存储器【例6-11】初始化数组x5=1,2,3,4,5。.titl
11、e zh9.asm .mmregsSTACK.usect STACK,10H .bss x,5 .datatable:.word 1,2,3,4,5 .def start .textstart:STM#x,AR1 RPT#4 MVPD table,*AR1+end:B end .end2数据存储器数据存储器【例6-12】编写一段程序,将数据存储器中数组x20中的数据复制到数组y20中。.title zh10.asm .mmregsSTACK.usect STACK,30H .bss x,20 .bss y,20 .datatable:.word 1,2,3,4,5,6,7,8,9,10,11,
12、12,13,14,15,16,17,18,19,20 .def start .textstart:STM#x,AR1 RPT#19 MVPD table,*AR1+;从程序存储器传送到数据存储器中 STM#x,AR2 STM#y,AR3 RPT#19 MVDD *AR2+,*AR3+;从数据存储器传送到数据存储器中end:B end .end20个数据从0060H0073H传送到0074H0087H,结果如图所示:6.6双操作数乘法TMS320C54x片内的多总线结构,允许在一个机器周期内通过两条16位数据总线(C总线和D总线)寻址两个数据和系数,如图6-6所示。数据存储器乘法器/加法器累加器
13、A累加器BC总线D总线图6-6 双操作数乘法如果求y=mx+b,则单操作数和双操作数实现方法比较如表6-4所示:表表6-4 单单/双操作数编程比较双操作数编程比较用双操作数指令编程的特点为:(1)用间接寻址方式获得操作数,且辅助寄存器只能用AR2AR5;(2)占用的程序空间小;(3)运行的速度快。单单操作数方法操作数方法双操作数方法双操作数方法LD m,TMPY x,AADD b,ASTL A,yMPY *AR2,*AR3,AADD b,ASTL A,y双操作数MAC型的指令有4种,如表6-5所示:表表6-5 MAC型双操作数指令型双操作数指令对于Xmem和Ymem,只能用以下辅助寄存器及寻址
14、方式:辅助寄存器AR2 寻址方式*ARn AR3 *ARn+AR4 *ARn AR5 *ARn+0%指指 令令功功 能能MPY Xmem,Ymem,dstMAC Xmem,Ymem,src,dstMAS Xmem,Ymem,src,dstMACP Smem,Pmad,src,dstdst=Xmem*Ymemdst=src+Xmem*Ymemdst=src-Xmem*Ymemdst=src+Smem*Pmad6.7长字运算和并行运算1长字指令DLD Lmem,dst ;dst=LmemDST src,Lmem ;Lmem=srcDADD Lmem,src,dst ;dst=src+LmemDSU
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序设计 DSP 技术 应用 实例
限制150内