姓名: 学号: 院系:
3.1.3 addasm:
一、实验内容:
使用汇编语言实现加法运算,汇编程序如下: _main: MOV ACC,#10 MOV T,#2
ADD ACC,T
.end
二、实验结果:
逐步运行,运行完第一步后ACC值为0000000A,运行结束后结果如下:
其中XT为00020000,高位0002即为T的值,而其他寄存器如P、XARO等为初始赋值结果。
3.1.4 CandASm:
一、实验内容:
源程序代码为: #include int a=10; int b=10; int sum; addasm(); sum=add(a,b); for(;;); } add(int add1,int add2) { int c; c=add1+add2; return c; } 二、实验结果: C文件内容为:a=10,b=10,sum=a+b.通过gel文件以及库文件编译为.out文件,结果如下: 连接芯片后,装载.out文件,即可运行。运行结果正确。 3.1.5 math: 一、实验内容: void main(){ int fix_add,fix_sub,fix_mul,fix_div,fix_n; double floa_add,floa_sub,floa_mul,floa_div,float_n; for(;;) { fix_add=fixed_add(1556,40); fix_sub=fixed_sub(334,222); fix_mul=fixed_mul(188,188); fix_div=fixed_div(188,18); floa_add=float_add(2.5e3,1.2e3); floa_sub=float_sub(2.0e2,3.0e2); floa_mul=float_mul(2.0e2,3.0e2); floa_div=float_div(2.0e4,2.0e2); } } fix_n=float_fixed(9.735e1); float_n=fixed_float(1557); 二、实验结果: 使用dsp实现基本的加减乘除数学运算。C程序通过调用子函数的方式实现加减乘除,编译、连接、装载过程同上,运行结果通过watch window窗口观察结果如下: 运行结果分析: fix_add=1556+40=1596,都为int类型; fix_div=188<<4/18=104444,结都为int类型; fix _mul= fixed_mul(188,188)=188*188>>4=; fix_n= fix_n=float_fixed(9.735e1)=int(97.35*2^4)=1557,int类型; fix_sub= fix_sub=fixed_sub(334,222)=334-222=112,int类型; floa_add= float_add(2.5e3,1.2e3)=2500+1200=3700,double类型; floa_div= loat_div(2.0e4,2.0e2)=20000/200=1000,double类型; floa_mul= float_mul(2.0e2,3.0e2)=200*300=60000;double类型; floa_sub= float_sub(2.0e2,3.0e2)=200-300=100,double类型; floa_n= fixed_float(1557)=1557/16=97.3125,double类型; 3.2.1 memory: 一、实验内容: 主程序如下: void main() { int i; unsigned int * px; unsigned int * py; unsigned int * pz; } px=(unsigned int *)0x200; // 字地址,字节地址为400H py=(unsigned int *)0x210; // 字地址,字节地址为420H for ( i=0,pz=px;i<16;i++,pz++ ) (*pz)=i; for ( i=0,pz=py;i<16;i++,pz++ ) // 在此加软件断点 (*pz)=0x1234; for ( i=0;i<16;i++,px++,py++ ) // 在此加软件断点 (*py)=(*px); for(;;); // 在此加软件断点 二、实验结果: 利用指针给0x200、0x210这两个为首的存储器中赋值0~F。运行结果如下: 通过memory window 观察存储器内容如下: 可以看出其中0x200~0x20F的值分别为0~F,0x210~0x21F的值分别为0~F,其他值为随机数。设置断点,逐步运行,观察存储器该地址的值变化与预期一样。 3.2.3 SRAM: 一、实验内容: 主程序如下: void main(void) { unsigned int i; unsigned int Errcount = 0; /* Write on-board Sram */ for(i=0; i Errcount = 0;//此行设置断点 /* Read on-board Sram and check it */ for(i=0; i for(;;);//此行设置断点 } 二、实验结果: 给SourData[LENGTH](LENGTH=100)赋值0~99,运行结果如下: 通过memory window窗口观察存储器中的内容,结果如下: 结果显示SourData地址为5C0,从5C0开始以后100个单元的值分别为0~99,其他单元为随机数。实验发现,双击某单元的值,可以手动修改。 因篇幅问题不能全部显示,请点此查看更多更全内容