DSP实验1 关于C与汇编的编程Word下载.docx

上传人:b****3 文档编号:17913615 上传时间:2022-12-12 格式:DOCX 页数:10 大小:245KB
下载 相关 举报
DSP实验1 关于C与汇编的编程Word下载.docx_第1页
第1页 / 共10页
DSP实验1 关于C与汇编的编程Word下载.docx_第2页
第2页 / 共10页
DSP实验1 关于C与汇编的编程Word下载.docx_第3页
第3页 / 共10页
DSP实验1 关于C与汇编的编程Word下载.docx_第4页
第4页 / 共10页
DSP实验1 关于C与汇编的编程Word下载.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

DSP实验1 关于C与汇编的编程Word下载.docx

《DSP实验1 关于C与汇编的编程Word下载.docx》由会员分享,可在线阅读,更多相关《DSP实验1 关于C与汇编的编程Word下载.docx(10页珍藏版)》请在冰豆网上搜索。

DSP实验1 关于C与汇编的编程Word下载.docx

2008211128

学号:

08210766

姓名:

彭栋(15)

实验一关于C与汇编的编程

一、实验要求

1.利用C语言调用汇编子程序

2.其中5个输入参数和3个返回结果的汇编子程序调用

a)输入整数a,b,c,d,e,

b)请计算a+b+c,a+c+d+e,a-b的值

c)讨论a-b后算术状态标志寄存器的状态(ASTAT)

d)请讨论输入整数数组e[3],f[3],参数如何传递的

二、实验分析

1.整体设计

a,b,c,d,e五个整数的输入,两个整数数组的初始化,及最后的结果显示都通过C语言实现。

设计4个子程序,分别实现计算a+b+c,a+c+d+e,a-b的值,及三元数组对应元素相减的功能,并能对要求讨论的值以及状态进行明确的表示,以完成实验要求,这四个子程序由汇编语言实现。

2.详细分析

a.子程序一add1

externint*add1(inta,intb,intc)

此函数参数为输入的整数a,b,c。

通过分步调试,可观察到,a,b,c三个参数分别传递给了DataRegister中的R0,R1和R2,利用R3坐中间变量,计算三者相加的结果并存结果于R3。

将PRegister中的P0清零,将计算结果存储于P0中存储的地址,并将P0的值(即计算出的结果存储的的地址)存入R0作为结果传回。

b.子程序二add2

此函数参数为输入的整数a,c,d,e。

通过分步调试,可观察到,a,c,d,e四个参数分别传递给了DataRegister中的R0,R1,R2和R3,利用R0作中间变量,依次将四者相加,计算结果于R0。

函数返回值的过程与子函数一一致,在此不作赘述。

c.子程序三add3

externint*add3(inta,intb);

此函数参数为输入的整数a,b。

通过分步调试,可观察到,a,b两个参数分别传递给了DataRegister中的R0,R1,利用R2作中间变量,计算两者相减的结果并存结果于R2。

将P0清零,将R2的值(即计算结果)放到当前P0所指向的地址,利用R2作中间变量,将算术寄存器的状态值赋给当前P0,函数返回值的过程与子函数一一致,在此不作赘述。

d.子程序四add4

此函数参数为输入的两个三元数组名,数组首地址。

通过分步调试,可观察到,两个参数(数组首地址)分别传递给了DataRegister中的R0,R1,将R0,R1的值分别存到指针寄存器P0,P1,即P0,P1分别指向了两个三元数组的首元素,利用数组元素地址的连续性,分别将e[3]的三个元素存到R0,R1,R2,f[3]的三个元素存到R3,R4,R5,并各自相减,并将结果存在R0,R1,R2,将P0清零,将R0到R2的值(即计算结果)依次放到当前P0所指向的地址,且P0依次指向下一个相邻位置。

最后返回R2的地址,函数返回值的过程与子函数一一致,在此不作赘述。

上述函数运行结果

3.问题讨论

a.讨论a-b后算术状态标志寄存器的状态(ASTAT)

为方便讨论,分别用十进制和二进制输出ASTAT的值

这里根据a,b大小不同做三组测验,下面用截图表示三种情况的计算结果和状态寄存器的值

i.a>

b

ii.a=b

iii.a<

讨论ASTAT的值

可观察到三组结果中只有AZ,AN,AC三个状态不同,查阅帮助了解到AZ标志是否为0,AN标志是否为负数,AC标志是否产生进位

b.参数传递讨论

i.函数参数为多个时(超过4个)

为方便讨论此内容,设子函数add5的参数设为5个。

通过观察子函数add1,add3参数传递可知,当函数参数较少时,将它们依次传给R0,R1,R2…。

观察add5(五个参数)第一、第二和第三个参数依次传给了R0,R1,R2,其余的参数依次被压入堆栈,最后一个入栈的参数地址为FP-4,并且见最后一个参数的值传给R3。

同样的输入,结果为

ii.输入整数数组e[3],f[3],参数如何传递

若函数参数为数组名,即数组首地址。

通过分步调试可观察到,参数(数组首地址)依次传递给了R0,R1…,及传递的不是数组元素的值而是数组的首地址。

三、实验程序

1..c文件

2.asm文件

四、实验心得

这是我第一次接触DSP实验,通过课上老师的讲解和对例程的学习,让我对使用的以及编程思想有了初步的了解。

实验的要求比较简单,实现起来相对比较容易。

但在实验过程中也遇到了一些问题,总结如下:

1.子函数与asm文件不能重名

2.汇编程序中不能在运算符两边同时出现两个内存单元。

在子程序add4中为计算两个数组对应元素相减的结果,最开始写的语句是R3=[P0++]-[P1++]);

编译报错,检查后发现[P0++]和[P1++]均是内存单元不能同时传到ALU中,应该加以改正。

3.多个参数的传递

开始在分步时,观察到最后一个参数传给了R3,便认为它并没有被压入堆栈,因此在这里花了很长时间去找被压进栈的参数,才发现这个误解。

4.在编写程序特别是汇编程序时思路要清晰,要随时观察寄存器中数值的变化,利用好各类寄存器的观察窗口。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 中国风

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1