全球旧事资料 分类
考《TMS320C54X实用教程》。在本实验中,我们使用下列代码来说明减法运算:
stmtemp1ar3stmtemp3ar2subar2ar3b后
sthbsub_result
;将变量temp1的地址装入ar3寄存器;将变量temp3的地址装入ar3寄存器
;将变量temp3左移16位同时变量temp1也左移16位,然
;相减,结果放入寄存器B(高16位)中,同时ar2加1。;将相减的结果(高16位)存入变量sub_result。
(4)实现16定点整数乘法
在C54X中提供了大量的乘法运算指令,其结果都是32位,放在A或B寄存器中。乘数在C54X的乘法指令很灵活,可以是T寄存器、立即数、存贮单元和A或B寄存器的高16位。有关乘法指令的详细使用说明请参考《TMS320C54X实用教程》。在C54X中,一般对数据的处理都当做有符号数,如果是无符号数乘时,请使用MPYU指令。这是一条专用于无符号数乘法运算的指令,而其它指令都是有符号数的乘法。在本实验中,我们使用下列代码来说明整数乘法运算:
rsbxFRCTldtemp1Tmpytemp2a
;清FRCT标志,准备整数乘;将变量temp1装入T寄存器;完成temp2temp1,结果放入A寄存器(32位)
例如,当temp11234H(十进制的4660),temp29876H(十进制的26506),乘法的结果在A寄存器中为0F8A343F8H(十进制的123517960)。这是一个32位的结果,需要两个

f
内存单元来存放结果:
sthampy_I_h;将结果(高16位)存入变量mpy_I_hstlampy_I_l;将结果(低16位)存入变量mpy_I_l
当temp110(H十进制的16),temp205(H十进制的5),乘法结果在A寄存器中为00000050H(十进制的80)。对于这种情况,仅仅需要保存低16位即可:
stlampy_I_l;将结果(低16位)存入变量mpy_I_l
(5)实现16定点小数乘法
在C54X中,小数的乘法与整数乘法基本一致,只是由于两个有符号的小数相乘,其结果的小数点的位置在次高的后面,所以必须左移一位,才能得到正确的结果。C54X中提供了一个状态位FRCT,将其设置为1时,系统自动将乘积结果左移移位。但注意整数乘法时不能这样处理,所以上面的实验中一开始便将FRCT清除。两个小数(16位)相乘后结果为32位,如果精度允许的话,可以只存高16位,将低16位丢弃,这样仍可得到16位的结果。在本实验中,我们使用下列代码来说明小数乘法运算:
ssbxldmpya
sth
FRCTtemp116atemp2
bmpy_f
;FRCT1,准备小数乘法;将变量temp1装入寄存器A的高16位;完成temp2乘寄存器A的高16位,结果在B中,同时;将temp2装入T寄存器;将乘积结果的高16位存入变量mpy_f
例如,temp1temp24000H(十进制的05),两数相乘后结r
好听全球资料 返回顶部