DSP 除法运算
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验六除法运算
一、实验目的
掌握除法运算的实现方法。
二、实验设备
计算机、DSP 实验箱。
三、实验内容
分别编写程序,实现计算0.4÷(-0.8)和16384÷512 的值。
四、实验步骤
1、用仿真器将计算机与DSP 实验箱连接好,并依次打开实验箱电源、仿真器电源,然后运行CCS 软件。
2、新建一个项目:点击Project-New,将项目命名为zhao9f,并将项目保存在自己定义的文件夹下,注意文件夹一定要用英文名,不要将文件夹取名为中文名,因为CCS 软件不能识别以中文命名的文件夹。
3、新建一个源文件:点击File-New-Source File 可以打开一个文本编辑窗口,点击保存按键,保存在和项目相同的一个文件夹下面(zhao9f),保存类型选择*.ASM(如果源文件是C 语言编写的,保存类型选择*.C,本实验中的例程是使用汇编语言编写的,所以选择*.ASM为保存类型),我们在这里将保存名字命名为zhao9f.asm 。
4、在项目中添加源文件:在新建立了一个源文件以后,要想使用CCS 编译器对该源文件进行编译还需要将源文件添加到项目中去。添加方法是在工程管理器中右键单击zhao9f.pjt,在弹出的菜单中选择Add Files,然后将刚才建立的zhao9f.asm 文件添加到该项目中去。
5、编写源程序:
在工程管理器中双击zhao9f.asm ,将出现文本编辑窗口,在该文本编辑窗口中输入如下内容:
*********************************
* |被除数|<|除数|,商为小数*
* 计算0.4÷(-0.8)的值*
*********************************
.title "zhao9f.asm"
.mmregs
STACK .usect "STACK",10H
.bss num,1 ;分子
.bss den,1 ;分母
.bss quot,1 ;商
.data
table: .word 4*32768/10 ;-128
.word -8*32768/10 ;1024
.def _c_int00
.text
_c_int00: LD #1H,DP ;设置数据页指针,使DP 指向第1 页(80H 处)
STM #num,AR1
RPT #1
MVPD table,*AR1+ ;传送2 个数据至分子、分母
LD @den,16,A ;将分母移到累加器A(31~16)
MPYA @num ;(num)*(A(31~16))->B,获取商的符号
;(在累加器B 中)
ABS A ;分母取绝对值
STH A,@den ;分母取绝对值存回原处
LD @num,16,A ;将分子移到累加器A(32~16)
ABS A ;分子取绝对值
RPT #14 ;15次减法循环,完成除法
SUBC @den,A
XC 1,BLT ;如果B<0(商为负数),则需要变号
NEG A
STL A,@quot ;保存商
end: B end
.end
6、编写链接配置文件:
参照实验一,需要更改的地方如下:
7、编写中断向量表文件
参照实验一,可不作修改。
8、对项目进行编译和链接:把zhao9f.asm、vectors.asm、
zhao9f.cmd 依次添加到项目后,点击Project-Compile File,
在项目编译成功之后点击Project-Build 选项对该项目进行
链接,生成*.out 文件。
9、装载可执行文件:
要让程序代码在DSP 内部运行必需将生成的*.OUT文件装
载到DSP 内部,装载方法是点击:File-LoadPrograme 再
选择生成的zhao9f.out 文件就可以将程序装载到DSP 的内部
存储器中。
10、运行程序并查看结果:
a)首先打开欲查看的数据空间:点击View-Memory,
弹出“Memory Window Options”对话框,把欲查看
的地址改为0x0080,如右图所示。
b)点击OK 按钮,然后点击Debug-Run 让程序在
DSP 内部运行,最后点击Debug-Halt,再观察
“Memory ”对话框,看是否与右图一致:
11、上述程序是商为小数的除法,下面编写商为整数的除法:
a)建立项目工程文件zhao9g,编写源程序zhao9g.asm,并与zhao9f.asm 作一比较。以下是源程序:
********************************
* |被除数|>=|除数|,商为整数*
* 计算16384÷512 的值*
********************************
.title "zhao9g.asm"
.mmregs
STACK .usect "STACK",10H
.bss num,1 ;分子
.bss den,1 ;分母
.bss quot,1 ;商
.data
table: .word 16384 ;更改被除数66*32768/100
.word 512 ; 更改除数-33*32768/100
.def _c_int00
.text
_c_int00: LD #0020H,DP ;指定数据页指针
STM #num,AR1
RPT #1
MVPD table,*AR1+ ;传送2 个数据至分子、分母
LD @den,16,A ;将分母移到累加器A(31~16)
MPYA @num ;(num)*(A(31~16))->B,获取商的符号
;(在累加器B 中)
ABS A ;分母取绝对值
STH A,@den ;分母取绝对值存回原处
LD @num,A ;将分子移到累加器A(32~16)
ABS A ;分子取绝对值
RPT #15 ;16次减法循环,完成除法
SUBC @den,A
XC 1,BLT ;如果B<0(商为负数),则需要变号
NEG A
STL A,@quot ;保存商
end: B end
.end
b)编写链接配置文件:
参照实验一,需要更改的地方如下:
c) 编写中断向量表文件
参照实验一,可不作修改。
d)把各文件添加到项目中并对项目进行编译和链接并下载到DSP 内部,具体方法请参照前面的步骤。
d) 运行程序并查看结果:
首先打开欲查看的数据空间:点击View-Memory,弹出“Memory Window Options”
对话框,把欲查看的地址改为0x0080,如右图所示。