数字信号处理技术第五章汇编语言程序设计课件

上传人:txadgkn****dgknqu... 文档编号:242639355 上传时间:2024-08-30 格式:PPT 页数:34 大小:244.05KB
返回 下载 相关 举报
数字信号处理技术第五章汇编语言程序设计课件_第1页
第1页 / 共34页
数字信号处理技术第五章汇编语言程序设计课件_第2页
第2页 / 共34页
数字信号处理技术第五章汇编语言程序设计课件_第3页
第3页 / 共34页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,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,AR5,RPT #4,MVPD TAB,*AR5+,第5章 汇编语言程序设计举例:,例,2,:编写一段程序将数据存储器中的数组,X20,复制到,数组,Y20,中。,.bss x,20,.bss y,20,STM #x,AR2,STM #y,AR3,RPT #19,MVDD AR2+,AR3+,例2:编写一段程序将数据存储器中的数组X20复制到,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.2 加减法和乘法运算,例,5,:编写实现,y=x1,a1+x2,a2,的功能,LD x1,,,T,MPY a1,,,B,LD x2,,,T,MAC a2,,,B,STL B,,,y,STH B,,,y+1,例5:编写实现 y=x1a1+x2 a2的功能,例,6,:找出,y=,ai,xi(i=1,2,3,4),中乘机项,ai,xi,的最大值,,并存入累加器,A,中。,STM #a,,,AR1,STM #x,,,AR2,STM #2,,,AR3,LD *AR1+,,,T,MPY *AR2+,,,A,Loop1,:,LD *AR1+,,,T,MPY *AR2+,,,B,MAX A,BANZ loop1,,,*AR3-,例6:找出y=aixi(i=1,2,3,4)中乘机项ai,5.3,重复操作,例,7,:对一个数组初始化:,X5=0,,,0,,,0,,,0,,,0,.bss x,,,5,STM #x,AR1,LD #0,A,RPT #4,STL A,*AR1+,或采用如下方法:,.bss x,,,5,STM #x,AR1,RPTZ A,,,#4,STL A,*AR1+,注意:执行重复操作时不响应任何中断,5.3 重复操作,例,8,:对数组,X5,中的每个元素加,1,.bss x,5,Begin: LD #1,16,B,STM #4,BRC,STM #X,AR4,RPTB next-1,ADD *AR4,16,B,A,STH A,*AR4+,Next: LD #0,B,例8:对数组X5中的每个元素加1,5.4,程序的控制与转移,例,9,:,RC TC,CC sub,,,BNEQ,BC new,,,AGT,,,AOV,例,10,:计算,y=,xi,(,i=15,),.bss x,5,.bss y,1,STM #x,AR1,STM #4,AR2,LD #0,A,Loop:ADD *AR1+,A,BANZ loop,*AR2-,STL A,y,5.4 程序的控制与转移,例,11,:,STM #5,,,AR1,STM #10,,,AR0,Loop,:,*AR1+,CMPR LT,AR1,;若(,AR1,)(,AR0,),则,TC=1,BC loop,TC,;若,TC=1,,则转,LOOP,例11: STM #5,AR1,5.5,堆栈的使用方法,在数据,RAM,空间开辟一个堆栈区,设置如下,:,Size .set100,Stack .usect”STK”,size,STM #stack+size,SP,5.5 堆栈的使用方法,例,12,:编写实现方程,y=mx+b,的程序,单操作数法:,LD m,,,T,MPY x,,,A,ADD b,,,A,STL A,,,y,双操作数法:,MPY *AR2,,,*AR3,,,A,ADD b,,,A,STL A,,,y,5.6,双操作数乘法,例12:编写实现方程y=mx+b的程序 单操作数法:,例,13,:编写完成,y=,aixi,(,i=120,),采用单操作数方法:,LD #0,,,B,STM,,,#a,,,AR2,STM #x,,,AR3,STM #19,,,BRC,RPTB done-1, LD *AR2+,T,3T MPY *AR3+,A, ADD A,B,Done:STH B, y,STL B, y+1,采用双操作数的方法:,LD #0,,,B,STM,,,#a,,,AR2,STM #x,,,AR3,STM #19,,,BRC,RPTB done-1,2T MPY *AR2+,AR3+,,,A, ADD A,B,Done:STH B, y,STL B, y+1,例13:编写完成 y=aixi(i=120)采用单操作数,例,14,:进一步优化例,13,的程序:,STM #x,,,AR2,STM #a,,,AR3,RPTZ A,,,#19,MAC *AR2+,,,*AR3+,,,A,STH A,,,y,STL A,,,y+1,例14:进一步优化例13的程序:,例,15,计算,Z,32,=X,32,+Y,32,标准运算,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,指令(存储,32,位数要用,E,总线,2,次,需,2,个机器周期)外,,都是单周期指令,也是在单个周期内同时利用,C,总线和,D,总线,,得到,32,位操作数。,5.7,长字运算和并行运算,例15 计算Z32=X32+Y32 标准运算长字运算除D,并行运算指令有,4,种:并行加载和乘法指令,并行加载和存,储指令,并行存储和乘法指令,并行存储和加,/,减法指令。,例,16,:编写计算和的程序段,.bss x,3,.bss d,3,STM #x,AR5,STM #d,AR2,LD #0,ASM,ADD *AR5+,16,A,ST *AR5+,16,A,|LD *AR2+,B,ADD *AR2+,16,B,STH B,*AR2,x,y,z,e,d,f,AR5,AR2,并行运算指令有4种:并行加载和乘法指令,并行加载和存例16:,例编写计算,Z,64,=W,64,+X,64,-Y,64,的程序段,W,、,X,、,Y,和结果,Z,都是,64,位,它们都由两个,32,位的长字组成。利用长字指令完成位数的加减法,W3 w2 w1 w0,(,W,64,),x3 x2 C x1 x0,(,X,64,),y3 y2 C y1 y0,(,Y,64,),z3 z2 z1 z0,(,Z,64,),低,32,位相加产生进位,C,低,32,位相减产生借位,C,例编写计算Z64=W64+X64-Y64 的程序段,程序段:,DLD w1,A ; A=w1w2,DADD x1,A ; A=w1w0+x1x0,产生进位,C,DLD w3,B ; B=w3w2,ADDC x2,B ; B=,w3w2+x2+C,ADD x3,16,B ; B=w3w2+x3x2+C,DSUB y1,A ; A=w1w0+x1x0-y1y0,产生借位,C,DST A,z1 ; z1z0=w1w0+x1x0-y1y0,SUBBy2,B ; B=w3w2+x3x2+C-y2-C,SUB y3,16,B ; B=w3w2+x3x2+C-y3y2-C,DST B,z3 ;z3z2=w3w2+x3x2+C-y3y2-C,程序段:,32,位乘法运算,乘法算式如下:,x1 x0 S U,y1 y0 S U,x0y0 UU,y1x0 SU,x1y0 SU,Y1x1 SS,w3 w2 w1 w0 S U U U,其中,,S-,带符号数,,U-,无符号数,32位乘法运算,例,18,:编写计算,W,64,=X,32,*Y,32,的程序段,STM #x0,,,AR2,STM #y0,,,AR3,LD *AR2,,,T,;,T=x0,MPYU AR3+,,,A,;,A=uy0*ux0,STL 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,位,例18 :编写计算W64=X32*Y32 的程序段,5.8,小数运算,1.,小数的表示方法,C54X,采用,2,的补码小数,其最高位为符号位数值范围从,-11,,一个,16,位,2,的补码小数的每一位权值为:,一个十进制小数乘以,32768,之后,将十进制整数部分转换成十六进制数,就得到了这个十进制小数的,2,的补码表示了。,注意:汇编语言程序中,不能直接写入十进制小数。要定义 一个系数,0.707,,可以写成:,word 32768707/1000,不能写成,327680.707,.,-1 1/2 1/4 1/8 ,2,-15,5.8 小数运算1. 小数的表示方法-1 1/2,2.,小数乘法与冗余符号位,出现冗余符号位是两个带符号数相乘,得到的乘积带,2,个符号位,造成错误的结果。,解决冗余符号位的方法:在程序中设定状态寄存器,ST1,中的,FRAT,(小数方式)位为,1,,在乘法器将结果送至累加器时就能自动的左移一位,自动地消去了两个带符号数相乘时产生的冗余符号位。,注意:,小数乘法编程时,应事先设置,FRCT,位:,SSBX FRCT,MPY AR2, *AR3,A,STH A, Z,2. 小数乘法与冗余符号位,例,19,编写计算,y=ai*xi( i=14),的程序,其中数据均为小数:,a1=0.1 a2=0.2 a3=-0.3 a4=0.4,x1=0.8 x2=0.6 a3=-0.4 x4=-0.2,.bss x , 4,.bss a , 4,.bss y , 1,.data,Table: .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,.text,例19 编写计算 y=ai*xi( i=14) 的,Start: SSBX FRCT,STM #x , AR1,RPT #7,MVPD table , *AR1,STM #x ,AR2,STM #a , AR3,RPTZ A , #3,MAC AR2+, AR3 , A,STH A, y,Done: B done,Start: SSBX FRCT,5.9,除法运算,C54X,中没有单周期的,16,位除法指令,利用一条条减法指令(,SUBC,),加上重复指令,RPT #15,就可实现两个无符号的除法运算。,SUBC Smem ,src ;(src)-(Smem)15ALU,输出端,;如果,ALU,输出端,0,,,则(,ALU,输出 端),1+1src,;否则(,src,),1src,除法运算有两种情况:,5.9 除法运算C54X中没有单周期的16位除法指令,,1. |,被除数,|,|,除数,|,,商为小数,例,20,: 编写,0.4,(,0.8,)的程序段,.bss num , 1,.bss den , 1,.bss quot , 1,.data,Table : .word 4*32768/10 ;0.4,.word -8*32768/10 ;-0.8,.text,Start : STM #num ,AR1,RPT #1,MVPD table ,*AR1,;,传送,2,个数据至分子、分母单元,LD den ,16,A,;,将分母移到累加器,A,(,3116,),MPYA num,;,(,num,),*,(,A,(,3216,),B,,,获取商的符号(在累加器,B,中),ABS A,;,分母取绝对值,1. |被除数|除数|,商为小数,STH A,,,den ;,分母绝对值存放原处,LD num ,16 ,A,;分子,A,(,3216,),ABS A,;分子取绝对值,RPT #14,;,15,次减法循环,完成除法,SUBC den , A,;如果,B,0,(商是负数),则需要变号,XC 1, BLT,NEG A,STL A,quot,;保存商,注意,:,SUBC,指令仅对无符号数进行操作,因此事先必须对除数和被除数取绝对值。利用乘法操作,获得商的符号,最后通过条件执行指令给商加上适当的符号。,2. |,被除数,|,|,除数,|,,商为整数,与例,20,,除输入数据外,仅有下列改动,LD num ,16 ,A,改成,LD num ,A,RPT #14,改成,RPT #15,STH A,den,5.10,浮点运算,为了扩大数据的范围和精度,往往需要采用浮点运算。,C54X,虽然是个定点,DSP,器件,但它支持浮点运算。,1.,浮点数的表示方法,浮点数用 尾数和指数组成,定点数,=,尾数,2,-,指数,浮点数的尾数和指数可正可负,均用补码表示。指数范围,-831,。,2.,定点数,浮点数,通过,3,条指令实现 (假设定点数已在累加器,A,中),1,),EXP A,例,22 EXP A,执行前 执行后,A=FF FFFF FFCB A=FF FFFF FFCB,T= 0000 T= 0019,(,25,),5.10 浮点运算 为了扩大数据的范围和精度,往往,例,23 EXP B,执行前 执行后,A=07 8543 2105 A=FF 8543 0000,T= 0007 T= FFFC,(,-4,),2,),ST T,,,EXPONENT,这条紧接在,XEP,后的指令是将保存在,T,寄存器中的指数存放到数据寄存器的指数单元。,3,),NORM A,例,24,:,NORM A,执行前 执行后,A=FF FFFF F001 A=FF 8008 0000,T= 0013 T= 0013,(,19,),例23 EXP B,例,25,:,NORM B,,,A,执行前 执行后,A=FF FFFF F001 A=FF 4214 1414,B=21 0A0A 0A0A B=FF 4214 1414,T= FFF9 T= FFF9,(,-7,),注意:,NORM,指令不能紧跟在,EXP,指令的后面。,3.,浮点数,定点数,将浮点数转化为定点数时,只要按指数值将其右移(指数为负数时左移)就行了。,4.,浮点数乘法举例,见书,P229,页例,26,例25 : NORM B , A,【例,5.26,】编写浮点乘法程序,完成,x1x2,0.3,(,0.8,)运算程序中保留,10,个数据存储单元:,【例5.26】编写浮点乘法程序,完成x1x20.3(,数字信号处理技术第五章汇编语言程序设计课件,数字信号处理技术第五章汇编语言程序设计课件,数字信号处理技术第五章汇编语言程序设计课件,数字信号处理技术第五章汇编语言程序设计课件,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!