基本算数运算一、实验目的和要求
加、减、乘、除是数字信号处理中最基本的算术运算。DSP中提供了大量的指令来实现这些功能。本实验学习使用定点DSP实现16位定点加、减、乘、除运算的基本方法和编程技巧。本实验的演示文件为exer1out。二、实验原理1定点DSP中的数据表示方法2实现16位定点加法ldtemp1a;将变量temp1装入寄存器Aaddtemp2a;将变量temp2与寄存器A相加,结果放入A中stlaadd_result;将结果(低16位)存入变量add_result中3实现16位定点减法stmtemp1ar3;将变量temp1的地址装入ar3寄存器stmtemp3ar2;将变量temp3的地址装入ar2寄存器subar2ar3b;将变量temp3左移16位同时变量temp1也左移16位,然后相减,结果放入寄存器B(高16位)中,同时ar2加1。sthbsub_result;将相减的结果(高16位)存入变量sub_result4实现16位定点整数乘法rsbxFRCT;清FRCT标志,准备整数乘
fldtemp1T;将变量temp1装入T寄存器
mpytemp2a;完成temp2temp1,结果放入A寄存器(32位)
5实现16位定点小数乘法
我们使用下列
ssbxFRCT;FRCT1,准备小数乘法
ldtemp116a;将变量temp1装入寄存器A的高16位
mpyatemp2;完成temp2乘寄存器A的高16位,结果在B中,
同时
将temp2装入T寄存器
sthbmpy_f;将乘积结果的高16位存入变量mpy_f
6实现16位定点整数除法
代码如下:
ldtemp1T;将被除数装入T寄存器
mpytemp2A;除数与被除数相乘,结果放入A寄存器
ldtemp2B;将除数temp2装入B寄存器的低16位
absB
;求绝对值
stlBtemp2;将B寄存器的低16位存回temp2
ldtemp1B;将被除数temp1装入B寄存器的低16位
absB
;求绝对值
rpt15
;重复SUBC指令16次
subctemp2b;使用SUBC指令完成除法运算
bcddiv_e
dagt;延时跳转,先执行下面两条指令,然后判断A,
若A0,则跳转到标号div_e
d,结束除法运算
fstlBquot_i;将商(B寄存器的低16位)存入变量quot_isthBremai
_i;将余数(B寄存器的高16位)存入变量
remai
_i
xorB寄存器清0
;若两数相乘的结果为负,则商也应为负。先将B
subquot_iB;将商反号stlBquot_i;存回变量quot_i中div_e
d:7实现16位定点小数除法代码如下:
ldtemp1T;将被除数装入T寄存器mpytemp2A;除数与被除数相乘,结果放入A寄存器
ldtemp2BabsB
;将除数temp2装入B寄存器的低16位;求绝对值
stlBtemp2;将B寄存器的低16位存回temp2
ldtemp116,B;将被除数temp1装入B寄存器的高16位
absB
;求绝对值
rpt15
;重复SUBC指令16次
subctemp2b;使用Sr