|
c2000的实验测试程序 1 指令实验(汇编程序)
[复制链接]
实验一:DSP指令实验
实验目的:
了解DSP的结构及管脚功能
掌握DSP的基本指令
实验要求:
了解怎样连接对DSP进行简单的编程操作,运算控制等基本汇编语言及算术语言实验测试及除错验证。
程序文件:ex1.asm
实验步骤:
1、以Simulator方式启动CCS,在[Project]-[Open]菜单中打开ex1.mak;
2、在左边树状列表框内双击[Project]展开目录树,双击[ex1.asm]打开源程序文件,参考程序中的注释仔细阅读源程序;
3、在[Project]-[Build]菜单中编译项目文件,编译成功后在下端的状态窗口中显示Build Complete,0 Errors,0 Warnings;
4、在[File]-[Load Programm]中加载输出执行代码文件ex1.out,此时,反汇编窗口将显示在前端,当前PC指针为0000:0080(黄色高亮显示),指令代码将以汇编语言方式显示,可以在反汇编窗口中点击鼠标右键,在弹出菜单中选择[Properties]-[Dis-Assembly Options]打开反汇编选项对话框,在[Dis-Assembly Style]选项中选择[Algebraic],以算术语言方式显示指令代码(注意:此时可能标号显示异常,按PageUP再按PageDown即可刷新显示);
5、选择[View]-[CPU Registers]-[CPU Register](或点击左边工具栏的快捷按钮)打开处理器映射寄存器窗口;
6、选择[View]-[Memory](或点击左边工具栏的快捷按钮),在弹出的[Windows Memory Options]对话框的Address文本框中输入0x0200,Page下拉框中选中Data,确定后将打开数据存储器查询窗口,此时数据存储器地址0x0200~0x0203将对应ex1.asm中声明的标号DAT0~DAT3;
7、调整[Dis-Assembly][memory][CPU Registers]三个窗口的大小,以便于观察;
8、依次把光标移动到反汇编窗口中标号为bk?(?表示从0开始的整数)的标号行下的指令处,选择菜单[Debug]-[Breakpoint](或者点击快捷按钮)设置断点,断点设置后,都将以紫色高亮显示;
9、选择[Debug]-[Run](也可以按快捷键F5或点击快捷按钮)执行程序;
10、程序将在第一个断点bk0处停止,bk0标号下的指令将以半黄半紫高亮显示,在处理器映射寄存器窗口和数据存储器查询窗口中双击相应操作数的内容,即可进行修改(注意:如步骤6所述,DAT0~DAT3对应地址为0X0200~0X0203),试修改下一条指令操作数的内容,然后按F5执行程序,再在处理器映射寄存器窗口中或数据存储器查询窗口中观察指令执行结果;
11、重复执行9、10步骤,依次观察加法指令、减法指令、乘法指令、除法指令、平方指令以及3数累加宏指令的执行结果;
14、以上指令执行完毕后,程序转到bk0处,可再次进行熟悉运算控制的实验。
源程序:
************************************************
* FileName: ex1.asm *
* Description: DSP指令实验 *
* Copyright(C) SanZhi Electronic *
************************************************
.title "ex1"
.mmregs
.def _c_int00
DAT0 .SET 60H
DAT1 .SET 61H
DAT2 .SET 62H
DAT3 .SET 63H
.text
ADD3 .MACRO P1,P2,P3,ADDRP ;三数相加宏定义: ADDRP = P1 + P2 + P3
LD P1,A
ADD P2,A
ADD P3,A
STL A,ADDRP
.ENDM
_c_int00:
B start
start: LD #004h,DP ;置数据页指针
STM #1000h,SP ;置堆栈指针
SSBX INTM ;禁止中断
bk0: ST #0012h,DAT0
LD #0023h,A
ADD DAT0,A ;加法操作: A = A + DAT0
NOP
NOP
NOP
NOP
bk1: ST #0054h,DAT0
LD #0002h,A
SUB DAT0,A ;减法操作: A = A - DAT0
NOP
NOP
NOP
NOP
bk2: ST #0345h,DAT0
STM #0002h,T
MPY DAT0,A ;乘法操作: A = DAT0 * T
NOP
NOP
NOP
NOP
bk3: ST #1000h,DAT0
ST #0041h,DAT1
RSBX SXM ;无符号除法操作: DAT0 ÷ DAT1 ; 结果: DAT2:商; DAT3:余数
LD DAT0,A
RPT #15
SUBC DAT1,A
STL A,DAT2
STH A,DAT3
NOP
NOP
NOP
NOP
bk4: ST #0333h,DAT0
SQUR DAT0,A ;平方操作: A = DAT0 * DAT0
NOP
NOP
NOP
NOP
bk5: ST #0034h,DAT0
ST #0243h,DAT1
ST #1230h,DAT2
ADD3 DAT0,DAT1,DAT2,DAT3 ;三数相加操作: DAT3 = DAT0 + DAT1 + DAT2
NOP
NOP
NOP
NOP
bk6: B bk0 ;循环执行
.end
|
|