全球旧事资料 分类
小数除法的结果一定是小数(小于1),所以被除数一定小于除数。这与整数除法正好相反。所以在执行SUBC指令前,应将被除数装入A或B寄存器的高16位,而不是低16位。其结果的格式与整数除法一样,A或B寄存器的高16位为余数,低16位为商。第二,与小数乘法一样,应考虑符号位对结果小数点的影响。所以应对商右移一位,得到正确的有符号数。其详细代码如下:
ld
temp1T;将被除数装入T寄存器
mpytemp2A;除数与被除数相乘,结果放入A寄存器
ld
temp2B;将除数temp2装入B寄存器的低16位
absB
;求绝对值
stlBtemp2;将B寄存器的低16位存回temp2
ld
temp116,B;将被除数temp1装入B寄存器的高16位

f
absrptsubca
d商bcd
stl位
xorsubstldiv_e
d
B
;求绝对值
15
;重复SUBC指令16次
temp2b;使用SUBC指令完成除法运算
0ffffhB
;将B寄存器的高16位清为0。这时余数被丢弃,仅保留
div_e
dagt;延时跳转,先执行下面两条指令,然后判断A,若A0,则;跳转到标号div_e
d,结束除法运算
B1,quot_f;将商右移一位后存入变量quot_f,右移是为了修正符号
Bquot_fBBquot_f
;若两数相乘的结果为负,则商也应为负。先将B寄存器清0;将商反号;存回变量quot_f中
注意,上面的C54X的16位定点有符号小数除法通用程序没有保留余数,商保存在变量temp3中。举一个例子,当temp12cccH(十进制的035),temp255c2H(十进制的067),
两数相除的结果为temp342dcH(十进制的0x42dc215052233)。
五、实验目的:
用定点DSP实现16位定点加、减、乘、除运算的基本方法和编程技巧。
六、实验内容:
本实验需要使用C54X汇编语言实现加、减、乘、除的基本运算,并通过DES的存贮器显示窗口观察结果。实验分两步完成:
(1)编写实验程序代码
本实验的汇编源程序代码主要分为六个部分:加法、减法、整数乘法、小数乘法、整数除法和小数除法。每个部分后面都有一条需要加断点的标志语句:

op
当执行到这条加了断点的语句时,程序将自动暂停。这时你可以通过“存贮器窗口”检查计算结果。当然你看到的结果都是十六进制的数。实验源程序请参见第5部分。
(2)在simulator上调试运行,并观察结果

f
七、实验器材(设备、元器件):
Wi
dows7系统计算机,CCS软件33版本
八、实验步骤:
在完成实验程序代码的输入,并使用汇编批处理ASMBAT进行编译并连接后,就可以在simulator上调试运行。步骤如下:
a启动simulator实验系统软件sim54Xwexe。b在调试界面的左下脚命令行栏输入loadexer1out,或r
好听全球资料 返回顶部