- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数字信号处理技术及其应用刘丽钧第五章汇编语言程序设计课件教学.ppt
5.8 小数运算 1. 小数的表示方法 C54X采用2的补码小数,其最高位为符号位数值范围从 -1~1,一个16位2的补码小数的每一位权值为: 一个十进制小数乘以32768之后,将十进制整数部分转换成十六进制数,就得到了这个十进制小数的2的补码表示了。 注意:汇编语言程序中,不能直接写入十进制小数。要定义 一个系数0.707,可以写成:word 32768×707/1000 不能写成32768×0.707. 2. 小数乘法与冗余符号位 出现冗余符号位是两个带符号数相乘,得到的乘积带2个符号位,造成错误的结果。 解决冗余符号位的方法:在程序中设定状态寄存器ST1中的FRAT(小数方式)位为1,在乘法器将结果送至累加器时就能自动的左移一位,自动地消去了两个带符号数相乘时产生的冗余符号位。 注意: 小数乘法编程时,应事先设置FRCT位: SSBX FRCT … MPY AR2, *AR3,A STH A, @Z 5.9 除法运算 C54X中没有单周期的16位除法指令,利用一条条减法指令(SUBC),加上重复指令RPT #15就可实现两个无符号的除法运算。 SUBC Smem ,src ;(src)-(Smem)15→ALU输出端 ;如果ALU输出端≥0, 则(ALU输出 端)1+1→src ;否则(src)1→src 除法运算有两种情况: 5.10 浮点运算 为了扩大数据的范围和精度,往往需要采用浮点运算。C54X虽然是个定点DSP器件,但它支持浮点运算。 1. 浮点数的表示方法 浮点数用 尾数和指数组成,定点数=尾数×2-指数 浮点数的尾数和指数可正可负,均用补码表示。指数范围-8~31。 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, EXPONENT 这条紧接在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指令不能紧跟在EXP指令的后面。 3. 浮点数→定点数 将浮点数转化为定点数时,只要按指数值将其右移(指数为负数时左移)就行了。 4. 浮点数乘法举例 见书P229页例26 【例5.26】编写浮点乘法程序,完成x1×x2=0.3×(–0.8)运算程序中保留10个数据存储单元: temp (暂存单元) e2(乘数的指数) product(乘积) m1(被乘数的尾数) mp(乘积的尾数) e1(被乘数的指数) ep(乘积的指数) x2(乘数) m2(乘数
原创力文档


文档评论(0)