书签 分享 收藏 举报 版权申诉 / 34
上传文档赚钱

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

  • 上传人(卖家):三亚风情
  • 文档编号:2930410
  • 上传时间:2022-06-12
  • 格式:PPT
  • 页数:34
  • 大小:267KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《数字信号处理技术第五章汇编语言程序设计课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    数字信号 处理 技术 第五 汇编语言 程序设计 课件
    资源描述:

    1、第第5章章 汇编语言程序设计举例:汇编语言程序设计举例:5.1 数据块传送数据块传送例例1:将数组:将数组X5=1,2,3,4,5初始化初始化 .dataTAL: .word 1,2,3,4,5 .sect “.vectors” B START .bss x,5 .textSTART: STM #x,AR5 RPT #4 MVPD TAB,*AR5+例例2:编写一段程序将数据存储器中的数组:编写一段程序将数据存储器中的数组X20复制到复制到 数组数组Y20中。中。 .bss x,20 .bss y,20 STM #x,AR2 STM #y,AR3 RPT #19 MVDD AR2+,AR3+5

    2、.2 加减法和乘法运算加减法和乘法运算例例3:编写完成:编写完成 Z=X+Y-W的功能的功能LD x,A;直接寻址直接寻址ADD y,ASUB w,A; A=A-wSTL A, z例例4:编程实现:编程实现 y=mx+b 的功能的功能 LD m,TMPY x,AADD b,ASTL A, y例例5:编写实现:编写实现 y=x1a1+x2 a2的功能的功能LD x1,TMPY a1,BLD x2,TMAC a2,BSTL B, ySTH B, y+1例例6:找出:找出y= aixi(i=1,2,3,4)中乘机项中乘机项aixi的最大值,的最大值, 并存入累加器并存入累加器A中。中。 STM #a

    3、,AR1 STM #x,AR2 STM #2,AR3 LD *AR1+,T MPY *AR2+,ALoop1: LD *AR1+,T MPY *AR2+,B MAX A BANZ loop1,*AR3- 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+注意:执行重复操作时不响应任何中断注意:执行重复操作时不响应任何中断例例8:对数组:对数组X

    4、5中的每个元素加中的每个元素加1 .bss x,5Begin: 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 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,ALoop:ADD *AR1+,A BANZ loop,*AR2- STL A,y 例例11: STM #5,AR

    5、1 STM #10,AR0Loop: *AR1+ CMPR LT,AR1;若(;若(AR1)()(AR0),则),则TC=1 BC loop,TC;若;若TC=1,则转,则转LOOP5.5 堆栈的使用方法堆栈的使用方法在数据在数据RAM空间开辟一个堆栈区空间开辟一个堆栈区,设置如下设置如下:Size .set100Stack .usect”STK”,size STM #stack+size,SP 例例12:编写实现方程:编写实现方程y=mx+b的程序的程序 单操作数法:单操作数法: LD m,T MPY x,A ADD b,A STL A, y 双操作数法:双操作数法: MPY *AR2,*A

    6、R3,A ADD b,A STL A, y5.6 双操作数乘法双操作数乘法例例13:编写完成:编写完成 y= aixi(i=120)采用单操作数方法:采用单操作数方法: LD #0,B STM,#a,AR2 STM #x,AR3 STM #19,BRC RPTB done-1 LD *AR2+,T3T MPY *AR3+,A ADD A,BDone:STH B, y STL B, y+1 采用双操作数的方法:采用双操作数的方法: LD #0,B STM,#a,AR2 STM #x,AR3 STM #19,BRC RPTB done-12T MPY *AR2+,AR3+,A ADD A,BDon

    7、e:STH B, y STL B, y+1例例14:进一步优化例:进一步优化例13的程序:的程序:STM #x,AR2STM #a,AR3RPTZ A,#19MAC *AR2+,*AR3+,ASTH A,ySTL A, y+1例例15 计算计算Z32=X32+Y32 标准运算标准运算LD xhi, 16,AADDS xho,AADD yhi,16,AADDS yho,ASTH A,zhiSTL A,zho(6个字,个字,6个个T)长字运算长字运算DLD xhi,ADADD yhi ,ADSTA,zhi(3个字,个字,3个个T)除除DST指令(存储指令(存储32位数要用位数要用E总线总线2次,需

    8、次,需2个机器周期)外,个机器周期)外,都是单周期指令,也是在单个周期内同时利用都是单周期指令,也是在单个周期内同时利用C总线和总线和D总线,总线,得到得到32位操作数。位操作数。5.7 长字运算和并行运算长字运算和并行运算并行运算指令有并行运算指令有4种:并行加载和乘法指令,并行加载和存种:并行加载和乘法指令,并行加载和存储指令,并行存储和乘法指令,并行存储和加储指令,并行存储和乘法指令,并行存储和加/减法指令。减法指令。例例16:编写计算和的程序段:编写计算和的程序段 .bss x,3 .bss d,3 STM #x,AR5 STM #d,AR2 LD #0,ASM ADD *AR5+,1

    9、6,A ST *AR5+,16,A |LD *AR2+,B ADD *AR2+,16,B STH B,*AR2xyzedfAR5AR2例编写计算例编写计算Z64=W64+X64-Y64 的程序段的程序段W、X、Y和结果和结果Z都是都是64位,它们都由两个位,它们都由两个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

    10、程序段:程序段: 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

    11、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-无符号数例例18 :编写计算:编写计算W64=X32*Y32 的程序段的程序段STM #x0,AR2STM #y0,AR3LD *AR2,T ;T=x0MPYU AR3+,A ;A=uy0*ux0STL A w0 ;w0=ux0*uy0LD A,-16,A ;A=A16MACSU *AR2+,*AR3-,A ;A+=y1*ux0MACSU *AR3+,*AR2,A ;A+=x1*uy0STL A,

    12、w1 ;w1=ALD A,-16,A ;A=A16MAC *AR2,*AR3,A ;A+=x1*y1STL A,w2 ;w2=A的低的低16位位STL A,w3 ;w3=A的高的高16位位 5.8 小数运算小数运算1. 小数的表示方法小数的表示方法 C54X采用采用2的补码小数,其最高位为符号位数值范围从的补码小数,其最高位为符号位数值范围从-11,一个,一个16位位2的补码小数的每一位权值为:的补码小数的每一位权值为:一个十进制小数乘以一个十进制小数乘以32768之后,将十进制整数部分转换成十之后,将十进制整数部分转换成十六进制数,就得到了这个十进制小数的六进制数,就得到了这个十进制小数的2

    13、的补码表示了。的补码表示了。 注意:汇编语言程序中,不能直接写入十进制小数。要定义注意:汇编语言程序中,不能直接写入十进制小数。要定义 一个系数一个系数0.707,可以写成:,可以写成:word 32768707/1000不能写成不能写成327680.707.-1 1/2 1/4 1/8 2-15 2. 小数乘法与冗余符号位小数乘法与冗余符号位出现冗余符号位是两个带符号数相乘,得到的乘积带出现冗余符号位是两个带符号数相乘,得到的乘积带2个个符号位,造成错误的结果。符号位,造成错误的结果。解决冗余符号位的方法:在程序中设定状态寄存器解决冗余符号位的方法:在程序中设定状态寄存器ST1中中的的FRA

    14、T(小数方式)位为(小数方式)位为1,在乘法器将结果送至累,在乘法器将结果送至累加器时就能自动的左移一位,自动地消去了两个带符加器时就能自动的左移一位,自动地消去了两个带符号数相乘时产生的冗余符号位。号数相乘时产生的冗余符号位。注意:注意: 小数乘法编程时,应事先设置小数乘法编程时,应事先设置FRCT位:位: SSBX FRCT MPY AR2, *AR3,A STH A, Z例例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

    15、.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 .textStart: SSBX FRCT STM #x , AR1 RPT #7 MVPD table , *AR1 STM #x ,AR2 STM #a , AR3 RPTZ A , #3 MAC AR2+, AR3 ,

    16、 A STH A, yDone: B done 5.9 除法运算除法运算C54X中没有单周期的中没有单周期的16位除法指令,利用一条条减法位除法指令,利用一条条减法指令(指令(SUBC),加上重复指令),加上重复指令RPT #15就可实现两就可实现两个无符号的除法运算。个无符号的除法运算。 SUBC Smem ,src ;(src)-(Smem)15ALU输出端输出端 ;如果;如果ALU输出端输出端0, 则(则(ALU输出输出 端)端)1+1src ;否则(;否则(src)1src除法运算有两种情况:除法运算有两种情况:1. |被除数被除数|除数除数|,商为小数,商为小数 例例20: 编写编写

    17、0.4(0.8)的程序段)的程序段 .bss num , 1 .bss den , 1 .bss quot , 1 .dataTable : .word 4*32768/10 ;0.4 .word -8*32768/10 ;-0.8 .textStart : STM #num ,AR1 RPT #1 MVPD table ,*AR1 ;传送传送2个数据至分子、分母单元个数据至分子、分母单元 LD den ,16,A ;将分母移到累加器将分母移到累加器A(3116) MPYA num ;(num)*(A(3216)B, 获取商的符号(在累加器获取商的符号(在累加器B中)中) ABS A ;分母取

    18、绝对值分母取绝对值STH A,den ;分母绝对值存放原处分母绝对值存放原处LD num ,16 ,A ;分子;分子A(3216)ABS A ;分子取绝对值;分子取绝对值RPT #14 ;15次减法循环,完成除法次减法循环,完成除法SUBC den , A ;如果;如果B0(商是负数),则需要变号(商是负数),则需要变号XC 1, BLTNEG ASTL A,quot ;保存商;保存商注意注意:SUBC指令仅对无符号数进行操作,因此事先必须对除数和被指令仅对无符号数进行操作,因此事先必须对除数和被除数取绝对值。利用乘法操作,获得商的符号,最后通过条件执行指除数取绝对值。利用乘法操作,获得商的符

    19、号,最后通过条件执行指令给商加上适当的符号。令给商加上适当的符号。2. |被除数被除数|除数除数| ,商为整数,商为整数 与例与例 20,除输入数据外,仅有下列改动,除输入数据外,仅有下列改动LD num ,16 ,A 改成改成 LD num ,ARPT #14 改成改成 RPT #155.10 浮点运算浮点运算 为了扩大数据的范围和精度,往往需要采用浮点运算。为了扩大数据的范围和精度,往往需要采用浮点运算。C54X虽然是个定点虽然是个定点DSP器件,但它支持浮点运算。器件,但它支持浮点运算。1. 浮点数的表示方法浮点数的表示方法 浮点数用浮点数用 尾数和指数组成,定点数尾数和指数组成,定点数

    20、=尾数尾数2-指数指数 浮点数的尾数和指数可正可负,均用补码表示。指数范浮点数的尾数和指数可正可负,均用补码表示。指数范围围-831。2. 定点数定点数浮点数浮点数 通过通过3条指令实现条指令实现 (假设定点数已在累加器(假设定点数已在累加器A中)中) 1)EXP A 例例22 EXP A 执行前执行前 执行后执行后 A=FF FFFF FFCB A=FF FFFF FFCB T= 0000 T= 0019(25) 例例23 EXP B 执行前执行前 执行后执行后 A=07 8543 2105 A=FF 8543 0000 T= 0007 T= FFFC(-4)2) ST T, EXPONEN

    21、T 这条紧接在这条紧接在XEP后的指令是将保存在后的指令是将保存在T寄存器寄存器中的指数存放到数据寄存器的指数单元。中的指数存放到数据寄存器的指数单元。3)NORM A 例例24 : NORM A 执行前执行前 执行后执行后 A=FF FFFF F001 A=FF 8008 0000 T= 0013 T= 0013(19)例例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指令不能紧跟在指令不能紧跟在EX

    22、P指令的后面。指令的后面。 3. 浮点数浮点数定点数定点数 将浮点数转化为定点数时,只要按指数值将其右移(指数为负数将浮点数转化为定点数时,只要按指数值将其右移(指数为负数时左移)就行了。时左移)就行了。4. 浮点数乘法举例浮点数乘法举例 见书见书P229页例页例26【例【例5.26】编写浮点乘法程序,完成编写浮点乘法程序,完成x1x20.3(0.8)运)运算程序中保留算程序中保留10个数据存储单元:个数据存储单元:x1(被乘数)(被乘数)m2(乘数的尾数)(乘数的尾数)x2(乘数)(乘数)ep(乘积的指数)(乘积的指数)e1(被乘数的指数)(被乘数的指数)mp(乘积的尾数)(乘积的尾数)m1(被乘数的尾数)(被乘数的尾数)product(乘积)(乘积)e2(乘数的指数)(乘数的指数)temp (暂存单元)(暂存单元)

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:数字信号处理技术第五章汇编语言程序设计课件.ppt
    链接地址:https://www.163wenku.com/p-2930410.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库