数字信号处理技术及其应用

上传人:豆浆 文档编号:48820876 上传时间:2018-07-20 格式:PPT 页数:35 大小:352KB
返回 下载 相关 举报
数字信号处理技术及其应用_第1页
第1页 / 共35页
数字信号处理技术及其应用_第2页
第2页 / 共35页
数字信号处理技术及其应用_第3页
第3页 / 共35页
数字信号处理技术及其应用_第4页
第4页 / 共35页
数字信号处理技术及其应用_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《数字信号处理技术及其应用》由会员分享,可在线阅读,更多相关《数字信号处理技术及其应用(35页珍藏版)》请在金锄头文库上搜索。

1、书名:数字信号处理技术及其 应用 ISBN:7-111-16016-9 作者:刘丽钧 出版社:机械工业出版社 本书配有电子课件第5章 汇编语言程序设计举例: 5.1 数据块传送例1:将数组X5=1,2,3,4,5初始化.data TAL: .word 1,2,3,4,5.sect “.vectors”B START.bss x,5.text START: STM #x,AR5RPT #4MVPD TAB,*AR5+例2:编写一段程序将数据存储器中的数组X20复制到数组Y20中。.bss x,20.bss y,20STM #x,AR2STM #y,AR3RPT #19MVDD AR2+,AR3+

2、5.2 加减法和乘法运算例3:编写完成 Z=X+Y-W的功能LD x,A;直接寻址 ADD y,A SUB w,A; A=A-w STL A, z例4:编程实现 y=mx+b 的功能LD m,T MPY x,A ADD b,A STL A, y例5:编写实现 y=x1a1+x2 a2的功能LD x1,T MPY a1,B LD x2,T MAC a2,B STL B, y STH B, y+1例6:找出y=aixi(i=1,2,3,4)中乘机项aixi的最大值,并存入累加器A中。STM #a,AR1STM #x,AR2STM #2,AR3LD *AR1+,TMPY *AR2+,A Loop1:

3、 LD *AR1+,TMPY *AR2+,BMAX ABANZ loop1,*AR3-5.3 重复操作例7:对一个数组初始化:X5=0,0,0,0,0.bss x,5STM #x,AR1LD #0,ARPT #4STL A,*AR1+或采用如下方法:.bss x,5STM #x,AR1RPTZ A, #4STL A,*AR1+注意:执行重复操作时不响应任何中断例8:对数组X5中的每个元素加1.bss x,5 Begin: LD #1,16,BSTM #4,BRCSTM #X,AR4RPTB next-1ADD *AR4,16,B,ASTH A,*AR4+ Next: LD #0,B5.4 程序

4、的控制与转移例9:RC TCCC sub,BNEQBC new,AGT,AOV例10:计算 y= xi(i=15).bss x,5.bss y,1STM #x,AR1STM #4,AR2LD #0,A Loop:ADD *AR1+,ABANZ loop,*AR2-STL A,y 例11: STM #5,AR1STM #10,AR0 Loop: *AR1+CMPR LT,AR1;若(AR1)(AR0),则TC=1BC loop,TC;若TC=1,则转LOOP5.5 堆栈的使用方法在数据RAM空间开辟一个堆栈区,设置如下:Size .set100 Stack .usect”STK”,sizeSTM

5、 #stack+size,SP 例12:编写实现方程y=mx+b的程序单操作数法:LD m,TMPY x,AADD b,ASTL A, y双操作数法:MPY *AR2,*AR3,AADD b,ASTL A, y5.6 双操作数乘法例13:编写完成 y=aixi(i=120)采用单操作数方法:LD #0,BSTM,#a,AR2STM #x,AR3STM #19,BRCRPTB done-1 LD *AR2+,T 3T MPY *AR3+,A ADD A,B Done:STH B, ySTL B, y+1 采用双操作数的方法:LD #0,BSTM,#a,AR2STM #x,AR3STM #19,B

6、RCRPTB done-12T MPY *AR2+,AR3+,A ADD A,B Done:STH B, ySTL B, y+1例14:进一步优化例13的程序:STM #x,AR2 STM #a,AR3 RPTZ A,#19 MAC *AR2+,*AR3+,A STH A,y STL A, y+1例15 计算Z32=X32+Y32 标准运算LD xhi, 16,A ADDS xho,A ADD yhi,16,A ADDS yho,A STH A,zhi STL A,zho (6个字,6个T)长字运算DLD xhi,A DADD yhi ,A DSTA,zhi (3个字,3个T)除DST指令(存

7、储32位数要用E总线2次,需2个机器周期)外, 都是单周期指令,也是在单个周期内同时利用C总线和D总线, 得到32位操作数。5.7 长字运算和并行运算并行运算指令有4种:并行加载和乘法指令,并行加载和存 储指令,并行存储和乘法指令,并行存储和加/减法指令。例16:编写计算 和的程序段.bss x,3.bss d,3STM #x,AR5STM #d,AR2LD #0,ASMADD *AR5+,16,AST *AR5+,16,A|LD *AR2+,BADD *AR2+,16,BSTH B,*AR2xyzedfAR5AR2例 编写计算Z64=W64+X64-Y64 的程序段 W、X、Y和结果Z都是6

8、4位,它们都由两个32位的 长字组成。利用长字指令完成位数的加减法W3 w2 w1 w0 (W64 ) x3 x2 C x1 x0 (X64 ) y3 y2 C y1 y0 (Y64 )z3 z2 z1 z0 ( Z64 )低32 位相加产生进位C 低32位相减产生借位C程序段:DLD w1,A ; A=w1w2DADD x1,A ; A=w1w0+x1x0,产生进位CDLD w3,B ; B=w3w2ADDC x2,B ; B=w3w2+x2+CADD x3,16,B ; B=w3w2+x3x2+CDSUB y1,A ; A=w1w0+x1x0-y1y0,产生借位CDST A,z1 ; z1

9、z0=w1w0+x1x0-y1y0SUBBy2,B ; B=w3w2+x3x2+C-y2-CSUB y3,16,B ; B=w3w2+x3x2+C-y3y2-CDST B,z3 ;z3z2=w3w2+x3x2+C-y3y2-C32位乘法运算乘法算式如下:x1 x0 S Uy1 y0 S Ux0y0 UUy1x0 SUx1y0 SUY1x1 SSw3 w2 w1 w0 S U U U 其中,S-带符号数,U-无符号数例18 :编写计算W64=X32*Y32 的程序段STM #x0,AR2 STM #y0,AR3 LD *AR2,T ;T=x0 MPYU AR3+,A ;A=uy0*ux0 STL

10、 A w0 ;w0=ux0*uy0 LD A,-16,A ;A=A16 MACSU *AR2+,*AR3-,A ;A+=y1*ux0 MACSU *AR3+,*AR2,A ;A+=x1*uy0 STL A,w1 ;w1=A LD A,-16,A ;A=A16 MAC *AR2,*AR3,A ;A+=x1*y1 STL A,w2 ;w2=A的低16位 STL A,w3 ;w3=A的高16位 5.8 小数运算 1. 小数的表示方法C54X采用2的补码小数,其最高位为符号位数值范围从 -11,一个16位2的补码小数的每一位权值为:一个十进制小数乘以32768之后,将十进制整数部分转换成十 六进制数,

11、就得到了这个十进制小数的2的补码表示了。注意:汇编语言程序中,不能直接写入十进制小数。要定义 一个系数0.707,可以写成:word 32768707/1000 不能写成327680.707.-1 1/2 1/4 1/8 2-15 2. 小数乘法与冗余符号位 出现冗余符号位是两个带符号数相乘,得到的乘积带2个 符号位,造成错误的结果。解决冗余符号位的方法:在程序中设定状态寄存器ST1中 的FRAT(小数方式)位为1,在乘法器将结果送至累 加器时就能自动的左移一位,自动地消去了两个带符 号数相乘时产生的冗余符号位。注意:小数乘法编程时,应事先设置FRCT位:SSBX FRCTMPY AR2, *

12、AR3,ASTH A, Z例19 编写计算 y=ai*xi( i=14) 的程序 其中数据均为小数:a1=0.1 a2=0.2 a3=-0.3 a4=0.4x1=0.8 x2=0.6 a3=-0.4 x4=-0.2.bss x , 4.bss a , 4.bss y , 1.dataTable: .word 1*32768/10.word 2*32768/10.word -3*32768/10.word 4*32768/10.word 8*32768/10.word 6*32768/10.word -4*32768/10.word -2*32768/10.textStart: SSBX FRC

13、TSTM #x , AR1RPT #7MVPD table , *AR1STM #x ,AR2STM #a , AR3RPTZ A , #3MAC AR2+, AR3 , ASTH A, y Done: B done 5.9 除法运算C54X中没有单周期的16位除法指令,利用一条条减法 指令(SUBC),加上重复指令RPT #15就可实现两 个无符号的除法运算。SUBC Smem ,src ;(src)-(Smem)15ALU输出端;如果ALU输出端0,则(ALU输出 端)1+1src;否则(src)1src除法运算有两种情况:1. |被除数|除数|,商为小数 例20: 编写0.4(0.8)的程序段.

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号