第一篇:C语言与语言混合编程DSP设计(推荐)
实验2:C与汇编语言混合编程
一.实验目的
掌握一种典型的C语言与汇编语言的混合编程方法。
二.实验设备
PC兼容机一台,操作系统为Windows2000,安装Code Composer Studio 4.2软件。
三.实验原理
1.C语言和汇编语言混合编程技术
在CCS环境中,工程可以同时包含C语言程序和汇编语言程序。在软件开发工作中,通常以C程序为主,在C程序框架中加入汇编语言程序模块。不同模块可采用不同语言设计,尽量少用汇编语言设计程序。通常对于下述模块采用汇编设计:
(1)强调处理速度的模块。
(2)中断程序设计时设置中断向量表。
(3)当需要绕开C编译器的规定,进行特殊操作时。比如:C语言规定,程序不能访问程序代码区,而系统功能需要进行类似访问时可采用限制较小的汇编语言程序设计。2.进行混合编程的方法
(1)用C语言完成设计后,运用CCS的软件仿真功能,充分测试程序,找到影响程序运行速度的瓶颈。
(2)通过仿真尽可能缩小模块。
(3)将找到的模块单独写成C语言子程序,存入独立的文件中。
(4)采用CCS产生与该模块C语言程序相对应的汇编程序。(5)观察需要优化的模块的汇编结果,进行人工优化。
(6)最后运用人工优化后形成的汇编程序模块,代替原来的C语言模块,进行编译。
四.实验步骤
1.启动Code Composer Studio。2.建立工程lab2。
3.建立lab2.c,输入以下内容:
int a,b,c;main(){
} a=3;b=4;while(1){ c=a+b;
}
4.建立lab2.cmd,输入以下内容:
lab2.obj-stack 1024-sysstack 1024 MEMORY {
} DARAM: o=0x100, l=0x7f00 DARAM2: o=0x8000, l=0x7f00 SECTIONS {
}.text: {} > DARAM.stack: {} > DARAM.sysstack: {} > DARAM.cinit: {} > DARAM2.pinit: {} > DARAM2.bss: {} > SARAM
5.建立配置文件lab2.ccxml(选择C55xx Simulater模式)。6.点击调试(DEBUG)工具按钮 7.运行程序,观察结果。
8.第一次修改程序,将主程序中所关心的算法部分单独建立一个子程序模块。
(1)修改算法部分(本实验中为加法运算)为单独的子程序:首先将“c=a+b;”语句修改成“c=add(a,b);”,在程序头上,变量定义之前加上一行“int add(int x,int y);”,在程序末尾,添加如下子程序:
int add(int x,int y){
return x+y;} 这样,将算法搬移到一个C语言的子程序模块中实现。
(2)点击按钮,完成编译、链接、下载程序,进入DEBUG界面。运行程序,观,编译、链接、下载程序,进入DEBUG界面。
察运行结果,判断子程序是否能完全与原程序一样完成算法。
9.第二次修改程序,为所关心的算法模块单独建立一个C文件。
(1)将子程序移入add1.c:打开一个新的空的源文件窗口,将main函数后的子程序复制到窗口中;注释main函数后面的子程序(在子程序前一行加“/*”,在子程序结尾行后加“*/”);将新窗口中的内容保存为文件add1.c。
(2)将add1.c加入工程,编译、链接、下载、运行,检查结果,保证运算无误。10.第三次修改程序,将C模块换为汇编模块。
(1)首先,利用汇编器选项(-k)由算法模块C程序自动产生相应的汇编程序。执行菜单命令ProjectProperties,弹出对话框,进行如下设置: ①选择菜单③单击选择复选框②选择此项④单击确定设置⑤完成设置
(2)重新编译、下载、运行程序并观察结果。打开所生成的add1.asm,删除其中的冗余项。
(3)将工程中的add1.c换成add1.asm。
(4)重新编译、下载、运行程序并观察结果。11.第四次修改程序,对汇编模块进行优化。(1)对add1.asm进行优化。
(2)重新编译、下载、运行程序并观察结果。(3)重复(1)、(2),使add1.asm尽量优化。
12.退出CCS。
五.实验结果
六.问题与思考
(1)如何获得C程序相应的汇编代码?除了本实验讲述的方法,你还能想到什么方法?
第二篇:实验二语言与C语言混合编程
实验二汇编语言与C语言混合编程
一、教学目的和要求
熟悉ADS1.2开发环境编译、下载、调试程序的基本过程; 掌握C和汇编语言混合编程方法。
掌握ATPCS中的寄存器及参数传递规则。
二、实验内容
1、分别编写C程序和汇编程序,要求在C程序中调用汇编程序实现字符串拷贝功能。C程序中设定源字符串及目的字符串;汇编程序实现拷贝功能。
2、分别编写C程序和汇编程序,要求在汇编程序中调用C程序实现4个整型数的求和运算。汇编程序实现变量的赋值及C函数的调用;C程序实现求和运算。
3、编写C程序内嵌汇编语句,对两个整型数a、b进行求和运算,和值存放到变量c中。
(1)要求main()函数完成变量赋值及a、b、c数值信息输出;内嵌汇编语句实现求和计算。
(2)要求C程序中main()函数完成变量赋值及a、b、c信息打印,add()函数实现加法
运算;main()函数中的内嵌汇编调用C函数add()进行求和运算。
三、思考题
1、什么是ATPCS?它有哪些规则?
2、C程序调用汇编程序需要进行哪些设置?参数如何传递?
3、汇编程序调用C程序需要进行哪些设置?参数如何传递?
4、C程序中内嵌的汇编语句有何限制?用什么关键字表示内嵌汇编?
第三篇:编程语言学习心得
程序语言学习的总结
通过两年的学习,我们基本上掌握了C语言,C++和C#三个编程课程。对于程序设计语言的学习,分为学习语法规定、掌握程序设计方法、提高程序开发能力,这些都必须通过充分的实际上机操作才能完成。课程上的安排除了课堂讲授以外,学院设有专门课堂到实验室进行上机操作实验。
要利用c语言学到的知识编写c语言程序,即把c语言作为工具,通过上机才能检验自己是否掌握c语言、自己编写的程序是否能够正确地解题。通过上机实验来验证自己编制的程序是否正确。在这种思想支配下,可能你会想办法去“掩盖”程序中的错误,而不是尽可能多地发现程序中存在的问题。自己编好程序上机调试运行时,可能有很多你想不到的情况发生,通过解决这些问题,可以逐步提高自己对c语言的理解和程序开发能力。
在原有的C语言的基础知识之上,初步接触C++时感到比较简单易懂。但随着之后的步步深入学习,C++的不同之处以及其优势逐。从第二章引入了C++简单程序的设计。包括一些C++语言的概述,基本数据类型和表达式,数据的输入与输出,算法的基本东芝结构,以及自定义类型数据等知识。此部分多与C语言相似。之后又学习了函数的相关内容,这里学到了新的知识要点----函数重载。该内容尤其在现在做课程设计的时候尤为重要。类是C++语言的精华之所在,在学习中,我感觉到类和C语言中的结构体有很大的相似之处,但在类中的构造函数、拷贝构造函数以及类的组合,经常弄混淆一些概念。在这之后又学习了类的继承与派生。这使得类与类之间形成了树状图的模型,各子类可以访问到父类的一些数据成员,同样也实现了数据的之间的“共享”。我个人在编写派生类的构造函数和拷贝构造函数时,感觉很不熟练,后面章节的多态性主要学习了运算符的重载,其本质就是函数的重载。
在学习C#中,类是具有相同特性和行为的对象的抽象。它使用关键字class声明的。在c#中仅允许单个继承,类只能从一个基类继承实现。但是一个类可以实现一个以上的接口。对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等局可以看对象,它不仅表示具体的事物,还能表示抽象的规则、计划或者事件。接口只是包含方法、委托或事件的签名。方法的实现是在实现接口的类中完成的。接口可以是命名空间或类的成员,并可以包含下列成员:每个C#可执行文件都有一个入口—Main方法:static void Main()修饰符public表示可以在任何地方访问该方法。所以可以在类的外部调用它。修饰符static表示方法不能在类的实例上执行,因此不必先实例化类在调用。在变量声明时:变量是类或者结构中的字段,如果没有显示初始化,创建这些变量时,其值就是默认的0。变量是方法的局部变量就必须在代码中显示初始化,之后才能在语句中使用它们的值。
课堂上要讲授许多关于语法规则,要使用这些工具解决问题,通过多次上机练习,对于语法知识有了更深刻的认识,在理解的基础上就会自然而然地掌握。一个程序从编辑、编译、连接到运行,都要在一定的外部操作环境下才能进行。通过上机实验,熟练地掌握开发环境,为以后真正编写计算机程序解决实际问题打下基础。
第四篇:C语言编程
#include(stdio.h)
main()
{ int question[4]={-1,-1,-1,-1},i=0,j=0,k=0,A=0,B=0,answer[4]={0};
char again='y';
while(again=='y'){ srand((int)time(0));
while(i4){ k=(int)rand()%10;
for(j=0;ji;j++)if(k==question[j]){ k=-1;break;}
if(k==-1)continue;question[i]=k;i++;}/*while i*/
for(i=8;i0;i--)/*还有8次机会*/
{ A=0;B=0;printf(“n你还剩下%d次机会。”,i);
printf(“n请输入四个0-9之间的数字,中间用空格隔开n”);for(j=0;j4;j++)scanf(“%d”,&answer[j]);
for(j=0;j4;j++)
for(k=0;k4;k++)
{ if(answer[j]==question[k]){ if(j==k)A++;else B++;} }/*for*/
if(A==4){ again='0';
printf(“n你赢了,还继续猜吗?(y/n)”);
while(again!='y'&&again!='n')
scanf(“...%c”,&again);break;}/*if*/
printf(“n%dA%dB”,A,B);if(i==1){ again='0';
printf(“n你输了,正确答案是”);
for(j=0;j4;j++)
printf(“%dt”,question[j]);
printf(“n还继续吗?(y/n)”);
while(again!='y'&&again!='n')scanf(“%c”,&again);
printf(“%c”,again);break;}/*if*/ }/*for changce*/ }/*while again*/ printf(“感谢您玩这个游戏。”);}
第五篇:vb语言编程教案
课
题:vb语言编程概述 课 时:2课时 授课时间:2011.09.05 课堂类型:讲授
教学目的:1.熟悉VB界面和VB集成开发环境;
2.在实际操作中学会编简单的VB应用程序;
教学要求:1.掌握VB基础知识。
2.会编简单的VB应用程序。
教学重点:1.熟悉VB集成开发环境
2.编写简单VB应用程序。
教学难点:在熟悉VB界面的同时学习编写简单VB应用程序 教学方法:讲授 教学过程:
一、VB简介
BASIC是英文Beginner’s All-purpose Symbolic Instruction Code(初学者通用符号指令代码)的缩写,它是专门为初学者设计的高级语言。Visual Basic是Microsoft公司于1991年推出的基于窗口的可视化程序设计语言。
a.“Visual”是“可视化的”、“形象化的”的意思。b.因此Visual Basic也具有易学易用的特点
c.目前Visual Basic的最新版本是Visual Basic 6.0(简称VB 6.0)
二、启动VB
1、首先显示“新建工程”对话框
直接单击“打开”按钮,创建“标准EXE”类型应用程序,进入集成开发环境主界面。
2、集成开发环境中的各元素 1)标题栏:用来显示窗口的标题。2)菜单栏 3)工具栏 4)工具箱 5)窗体窗口 6)工程窗口 7)属性窗口 8)窗体布局窗口
三、通过一个简单的应用程序快速入门
【例1.1(实训1,p16)】制作一个的一个简单的应用程序的运行界面。它由一个窗体、一个文本框、一个标签和一个命令按钮组成。当用户单击命令按钮“显示”时,文本框中出现“教你学VB”。1.新建工程 2.添加文本框Text1 3.添加命令按钮Command1 4.添加标签Label1 5.设置属性 6.编写事件过程代码
前面的工作把应用程序的界面设计好了,属性也设置完毕。但现在应用程序并不能实现实际的功能。为了使它具有一定的功能,还必须为对象编写实现某一功能的事件过程代码。1)双击窗体上的“显示”按钮,屏幕上出现代码窗口,程序代码就在这里编写。编写如下事件过程:
Private Sub Command1_Click()Text1.Text = “欢迎使用VB” End Sub 2)运行应用程序 3)保存应用程序
VB应用程序至少有两种文件需要保存: · 窗体文件(.frm)· 工程文件(.vbp)4)生成EXE文件
四、总结步骤
设计VB应用程序主要有以下4个步骤:(1)设计用户界面。(2)设置属性。(3)编写代码。(4)保存和运行调试程序,生成EXE文件。
五、知识延伸
1、只有一个文本框的实例 编写如下事件过程:
Private Sub Command1_Click()Text1.Text = “教你学VB“ End Sub
2、多个文本框时 编写如下事件过程:
Private Sub Command1_Click()Text1.Text = ”教你学VB“ Text2.Text = “欢迎使用VB“ End Sub
3、按照系统的元件特性分类(分别举例说明)课后实训1 第二个命令按钮:清除 第三个命令按钮:退出 步骤:
1.添加2个命令按钮 2.双击按钮,进入编程状态 3.和显示按钮命令编程相似 编写如下事件过程: Private Sub Command2_Click()Text1.Text = ” “ End Sub Private Sub Command3_Click()End End Sub
4、图片的加载方法
Private Sub Form_Load()Image1.Picture = LoadPicture(App.Path + “1.BMP”)End Sub
六、小结 1.熟悉界面。
2.掌握完整编程过程以及运行及调试程序的过程。