《DSPC55X实现两个16位数相加有无符号》由会员分享,可在线阅读,更多相关《DSPC55X实现两个16位数相加有无符号(3页珍藏版)》请在金锄头文库上搜索。
1、一、请修改程序完成计算 sin(2.3 )+cos(1.7 ) 的值。程序如下:#include #define PI 3.14159main()float x,y,z;x=sin(2.3*PI); y=cos(1.7*PI);while ( 1 )z=x+y; 运行结果二、请修改程序完成 0f000h+0e000h 的计算。程序如下1、 无符号数相加.mmregs.model call=c55_std.model mem=large.global x.bss x,1,0,0.symx,x, 4, 2, 16.global y.bss y,1,0,0.symy,y, 4, 2, 16.glob
2、al z.bss z,2,0,1.symz,z, 4, 2, 16.sect .text.align 4.global start.symstart,start, 36, 2, 0start:BCLR M40MOV #0x0F000, *(#y) MOV #0x0E000, *(#x) L1: BCLR SXMDMOV *(#x),AC0ADD *(#y),AC0MOV AC0,dbl(*(#z)B L1 本程序采用将所有的操作数扩展为 32 位的方式相加,而在有符号数相加时将继续采用这种方法。2、 有符号数相加将无符号中的 BCLR SXMD 注释掉即可有符号数的计算,同样采用了 32 位扩展的形式,同时我们也看到了这个处理器的强大功能,通过对 st1 寄存器中位 SXMD 的设置来使得整个运算处于有符号或无,SXMD=1 为默认值,此时为有符号运算,x 中本来为 0xe000,而处理器在位扩展时自动将其转化为负数 0xffffe000,相对应的 SXMD=0 时,在位扩展时则是 0x0000e000,此时为无符号运算。