实验三 C54X的浮点数的算术运算.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE 1 PAGE 29 实验三、C54X的浮点数的算术运算 实验目的 练习TMS320C54X汇编程序的编写与调试方法,重点练习C54X程序流程控制的方法。 学习并掌握应用TMS320C54X来进行浮点数的各种算术运算的算法实现。 练习并掌握TMS320C54X的汇编语言的汇编指令系统的使用方法,重点练习具有C54X特点的一些在功能上有所扩展的特殊指令,并了解这些指令在进行算术运算或各种控制时所带来的方便。 练习并掌握用CCS调试程序的一些基本操作。 实验原理 浮点数的表示方法 在定点运算中,小数点是在一个特定的固定位置。例如,如果一个32-bit的数把小数点放在最高有效位(也就是符号位)之后,那么就只有分数(绝对值小于1)才能被显示。在定点运算系统中,虽然在硬件上实现简单,但是表示的操作数的动态范围要受到限制。使用浮点数,可以避免这个困难。 一个浮点数由尾数m、基数b和指数e三部分组成。即: 下图举例说明了IEEE标准里的浮点数表示方法。这个格式用带符号的表示方法来表示尾数,指数含有127的偏移。在一个32-bit表示的浮点数中,第一位是符号位,记为S。接下来的8-bit表示指数,采用127的偏移格式(实际是e-127)。然后的23-bit表示尾数的绝对值,考虑到最高一位是符号位,它也应归于尾数的范围,所以尾数一共有 ADVANCE ADVANCE \u 24-bit 1 8 23 S Biased Exponent -e Mantissa -f 通常用该格式所表示的浮点数值如下: 在特殊情况下: 比如说:十进制数-29.625可以用二进制表示为-11101.101B,用科学计数法表示为 -1.1101101*24,其指数为127+4=131,化为二进制表示,故此数的浮点格式表示为11000001111011010000000000000000,转换成16进制表示为0xC1ED0000。又如在下面程序中将要使用的浮点数12.0,用二进制表示为1100B,用科学记数法表示为1.1*23,其指数部分为127+3=130,化为二进制表示,因此该数的浮点数格式为01000001010000000000000000000000,转换成16进制表示为0浮点数144.0,用二进制表示,科学记数法记为1.001*27,指数部分为127+7=134,该数的浮点数格式为01000011000100000000000000000000,转换成16进制表示。 浮点数运算的步骤 加法的运算步骤 要在C54X上实现浮点运算,操作数必须变换成定点数,实际上就是一个数据格式的转换问题,可以用以下代码段来实现: dld op1_hsw,a ;将OP1装入累加器A中。 sfta a,8 sfta a,-8 ;通过先左移后右移使 AG = 0。 bc op1_zero,AEQ ;如果OP1是零,转入特殊处理。 sth a,-7,op1se ;将符号和指数存储到OP1SE中。 stl a,op1lm ;存储尾数的低位。 and #07Fh,16,a ;将浮点数格式中的符号和指数去掉得到尾数的高位。 add #080h,16,a ;给尾数加上小数点前的“1”。 sth a,op1hm ;存储尾数的高位。 执行完这段代码之后,操作数1就从原来在op1_hsw和op1_lsw(共32bit)中的浮点数格式转换为三部分:指数和符号位(存储于op1se中)、尾数低位(存储于op1lm中)以及尾数高位(存储于op1hm中),这时所有的数值就都转换为定点数的格式了。在上述程序段中执行了 sfta a,8 sfta a,-8 它是先把累加器A中的值作算术左移8位再算术右移8位,其结果是使累加器A中的8位保护位(bit39-bit32)全清为0以免对以后的运算产生错误影响。 注意上述代码中使用了一种双精度的寻址方式,指令为: dld op1_hsw,a ; 它受st1中的C16位的影响,在C16=0的情况下采用双精度的寻址方式,把op1_hsw以及紧跟其后的一个字节的数据(op1_lsw)一起作为一个32bit的数装入累加器A中。在C16=1的情况下该指令把op1_hsw和op1_lsw作为两个16bit的数装入累加器A中,op1_hsw装在AH中,op1_lsw装在AL中。使用该指令比较有效,只需用一个时钟周期就可以装入32bit的数,这就比分步来装入要节约空间和时间。 在这段程序中作了一个判断以提高程序

文档评论(0)

dajuhyy + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档