当前位置:文档之家› 实验一 基础程序的调试

实验一 基础程序的调试

实验一 基础程序的调试
实验一 基础程序的调试

实验一基础程序的调试

一、实验目的

1、掌握Code Composer Studio 2.2 的安装和配置

2、了解DSP开发系统和计算机与目标系统的连接方法。

3、了解Code Composer Studio 2.2软件的操作环境和基本功能,了解TMS320C2xxx软件开发过程。(1)、学习创建工程和管理工程的方法。(2)、了解基本的编译和调试功能。(3)、了解DSP专用汇

编指令的应用及其寻址方式。

二、实验主要仪器与设备

1、PC兼容机一台。

2、ICETEK-LF2407-USB-EDU实验箱一台。

3、USB连接电缆一条。

三、实验原理

1、开发TMS320C2xxx应用系统一般需要以下几个调试工具来完成:

2、软件集成开发环境(Code Composer Studio 2.2):完成系统的软件开发,进行软件和硬件仿真调试。

3、开发系统(ICETEK 5100 USB):实现硬件仿真调试时与硬件系统的通信,控制和读取硬件系统的状态和数据。

4、评估模块(ICETEK LF2407-A):提供软件运行和调试的平台和用户系统开发的参照。

1、Code Composer Studio 2.2 主要完成系统的软件开发和调试。它提供一整套的程序编制、维护、

编译、调试环境,能将汇编语言和C语言程序编译连接成COFF(公用目标文件)格式的可执

行文件,并能将程序下载到目标DSP上运行调试。

2、用户系统的软件部分可以由Code Composer Studio建立的工程文件进行管理,工程文件一般包含

以下几种文件:源程序文件(*.ASM或*.C)、头文件(*.h)、命令文件(*.cmd)、库文件(*.lib,*.obj)

3、寻址方式:

1、立即寻址:指令中已包含有执行指令所需的操作数。说明:①在数值或符号前加‘#’表示立即数;

②两种形式:短立即数(8/9/13位)和长立即数(16位)

2、直接寻址:用指令中包含的数据存储器地址的低7位+基地址→16位数据存储器地址。基地址: DP__ 数据页指针

3、间接寻址:按辅助寄存器(AR)中的内容寻址数据存储器

间接寻址选项:

1、不加也不减:指令使用当前AR的内容作为数据存储器的地址,但当前AR的内容既不增加也不减少。

2、加1或减1:指令使用当前AR的内容作为数据存储器的地址,但当前AR的内容加1或减1。

3、加或减一个变址量:指令使用当前AR的内容作为数据存储器的地址,然后使当前AR的内容加或减一个变址量,该变址量为AR0中的值。

4、加或减一个变址量且反向进位:指令使用当前AR的内容作为数据存储器的地址,然后使当前AR的内容加或减一个变址量,该变址量为AR0中的值,采用反向进位方式(用于FFT)。

4、指令简介

.bss:此段为未初始化变量保留存储空间。 .text:此段存放程序代码。 .end:结束伪指令。

LDP :装载数据页指针指令,该指令被数据存储器单元的9位最低有效位或9位立即数送入状态寄存器ST0的数据页指针DP。

SPLK:存储长立即数至数据存储器指令,该指令将一个16位值写入任何一个数据存储器单元。在直接寻址方式下使用该指令对数据存储器单元赋值时(注意DP值)。

LAR:装载寄存器指令,该指令用来将数据存储器的值装入辅助寄存器。

MAR:修改寄存器指令,该指令用来修改辅助寄存器ARP的值,当MAR修改ARP的值时,ARP原有的值

被复制到ST1的ARB字段。

LACL:装载累加器低位并清累加器高位指令,该指令将指定数据存储器单元的内容或用0扩展的8位常数装入累加器的低16位,高位填0。数据作为无符号的16位数据处理,而非二进制补码。无论SXM为何状态,该指令的操作数抑制符号扩展。

SACL:移位并存储累加器低位指令,该指令将整个累加器复制到输出移位寄存器中,然后全部32位数左移0~7位,再将移位后数值的低16位复制到数据存储器、在移位时,低位填0,高位丢失,累加器内容不变。

ADD:对累加器的加操作指令,该指令执行的操作是将数据存储器单元的数或立即数左移后加至累加器(移位时受SXM影响)。结果存在累加器中。寻址短立即数时,加操作不受SXM的影响,且不能重复执行,不支持移位。

6、链接命令文件(.cmd)

(1).cmd文件在链接过程中将定义DSP的RAM和ROM空间,然后将各个段分配到所定义的存储空间,也就是对存储空间起配置作用。

(2)MEMORY命令。(确定在目标系统中具有物理位置且可被程序使用的存储器范围。)定义目标系统的存储器配置图,包括对存储器各部分命名,以及规定它们的起始地址和长度;

MEMORY伪指令的一般语句形式为:

MEMORY

{

PAGE 0: 存储器名1[(属性)]:ORIGIN=常数, LENGTH=常数

PAGE n: 存储器名n[(属性)]: ORIGIN=常数,LENGTH=常数

}

补充说明:

PAGE:

√定义一个存储器空间,用户可以定义多达255页。

√ PAGE0定义程序存储器,PAGE1定义数据存储器, PAGE2定义I/O空间。

√如果用户没有使用PAGE选项,那么链接器把段定位到PAGE0。

√每个PAGE代表一个完全独立的地址空间。

√在PAGE0上已配置的存储器可以和在PAGE1上已配置的存储器重叠。

存储器名:

√命名存储器范围。由1~8个字符组成。

√名字对于链接器没有特殊的意义,仅指明存储器的区域。

√在不同页上存储器范围可以有相同的名字,

√在同一页,所有的存储器范围不能有相同的名字,且不能重叠。

属性:可选项,当被使用时,必须用括号括起来。属性把输出段的定位限制在某些存储器范围内。如果用户不使用任何属性,则输出段即可以定位到任何范围内。有效的属性包括:R——存储器可读; W——存储器可写;X——储器可以包含可执行代码; I——存储器可被初始化。

(3)SECTIONS命令。告诉链接器如何将输入段组合成输出段,以及将输出段放在存储器中的什么位置。

四、预习要求

1、做实验前必须认真复习教材中关于CCS集成调试环境的有关内容。

2、明确实验目的、实验内容及步骤,对实验程序进行认真阅读及分析。

五、实验内容及步骤

1、实验设备

(1)连接实验设备

A、检查并设置ICETEK LF2407实验箱的各电源开关均处于关闭状态;连接实验箱提供的三相电

源线,保证接地良好。

B、将USB电缆的扁平端连接到计算机的USB口。

C、如使用LF2407-A的DSP系统板,关闭DSP系统板上的电源开关。

D、将5V电源连接到DSP系统板上。

(2)开启设备

A、接通计算机电源,进入Windows操作系统。

B、打开实验箱电源开关,实验箱上的电源指示灯亮。

C、打开DSP系统板电源开关;DSP系统板上电源指示灯DS2、DS3亮,DS1亮一下后熄灭。

(3)安装Code Composer Studio 2.2

A、将实验箱附带的教学光盘插入计算机光盘驱动器。

B、利用桌面上“我的电脑”打开教学光盘的“CCS开发软件”目录,双击“CCS2000.exe”,进入安

装程序。

C、选择“Code Composer Studio”,按照安装提示进行安装,并重新启动计算机。

D、安装完毕

(4)安装开发系统

A、使用“我的电脑”,执行开发系统驱动\Usb 目录中的安装程序”usbdriver24xx.exe”,并根据提示

安装完成。

B、连接计算机上USB接口电缆的方形接口一端到仿真器上相应接口;仿真器上红色电源灯亮,表

示USB接口接通。

C、指定驱动程序的路径并完成安装。

D、观察仿真器上绿色指示灯亮,表示驱动程序开始工作。

2、设置Code Composer Studio在硬件仿真(Emulator)方式下运行

(1)双击桌面上“Setup CCS C2000”,启动“Code Composer Studio Setup”。

(2)在“Import Configuration”对话框中单击“Clear System Configuration”按钮,在接下来的对话框选择“是”,清楚原先的系统设置;窗口“Code Composer Studio Setup”中左侧“System Configuration”栏中“My System”项被清空。

(3)对于USB型仿真器,在“Available Configurations”列表中,单击选择“ICETEK 5100 USB Emulator For TMS320F24xx”驱动,并单击“Add to system Configuration”按钮;窗口“Code Composer Studio”中左侧“System Configuration”栏中“My System”加入“F24xx XDS510 Emulator”项。

(4)单击“Close”按钮,退出“Import Configuration”对话框。

3、启动Code Composer Studio

4、编辑应用程序源文件

选择菜单“File”的“New…”项,分别编辑应用程序源文件并存盘。

源程序如下:

5、创建工程

(1)创建新的工程文件:选择菜单“Project”的“New…”项;在Project对话框中输入项目文件名;在“Location”对话框中,输入项目文件保存目录并保存;这时建立的是一个空的工程文件。

(2)在工程文件中添加程序文件:选择菜单“Project”的“Add Files to Project…”项,分别把应用程序源文件添加到工程中。

6、编译链接工程

选择菜单“Project”的“Rebuild All”项;注意编译过程中CCS主窗口下部的“Build”提示窗口中显示的编译信息,最后将给出错误和警告的统计数。

7、下载程序

单击“File”菜单,“Load program…”项,把上一步生成的.out文件通过仿真器将其下载到2407A DSP上。

8、单步运行程序

(1)展开主窗口左侧工程管理窗口中的“Project”下新建立的“test.pjt”。

(2)双击打开该工程中包含的“test.asm”文件。

(3)把光标移到“test.asm”文件的第一条可执行命令出单击主窗口左侧的快捷按钮“Set PC to Corsor”,设置程序的起始执行位置。

(4)单击主窗口左侧的快捷按钮“Source-Single Step”,单步运行程序。

9、观察程序运行结果

选择菜单“View”的“CPU Registers”项或“memory”项,观察每条指令执行后CPU寄存器内容的变化情况或存储器内容的变化情况。

六、思考题

1、命令文件在程序中起什么作用?

2、实验程序运行完后累加器的内容是多少?数据存储器0300H单元的内容是多少?

七、实验总结

程序设计基础实验指导书

说明 每个实验做完以后,按照实验报告模板格式完成相应的实验报告,存储为word 文档,最终提交的实验文档数量种类和命名原则如下例:(不按要求 者拒收) 目录结构图目录实验 1 内的文件种类和命名原则实验报告成绩将作为平时成绩的一部分计算到期末总成绩中。 实验报告严禁相互抄袭,一经发现抄袭和被抄袭者本次实验按零分计算!

实验1 C 的实验环境和C 语言的数据类型 1. 实验目的 ⑴ 了解在具体的语言环境下如何编辑、编译、连接和运行一个C 程序。 ⑵ 通过运行简单的C 程序,初步了解C 源程序的特点。 ⑶ 掌握C 语言数据类型, 熟悉如何定义一个整型、字符型和实型的变量,以及对它 们赋值的方法。 ⑷ 掌握不同的类型数据之间赋值的规律。 ⑸ 学会使用C 的有关算术运算符,以及包含这些运算符的表达式,特别是自加(+ +)和自减(--)运算符的使用。 2. 实验内容和步骤 检查所用的计算机系统是否已安装了C 编译系统并确定他所在的子目录。 进入所用的集成环境。 熟悉集成环境的界面和有关菜单的使用方法。 输入并运行一个简单的、正确的程序。 3. 实验题目 输入下面的程序 # include "stdio.h" void main() { printf( "This is a c program.\n" ); } 程序无误,其运行的结果为:(请填写) ⑵ 输入并编辑一个有错误的 C 程序。 # include “ stdio.h ” void main() { int a,b,sum a=123; b=456; sum=a+b print( “ suism%d n” ,sum); } 运行后程序出现几处错误,请分别指出,并逐一更改: ⑶ 若k,g 均为int 型变量, 则下列语句的输出为, : # include "stdio.h" void main() { int k, g; k=017; g=111;

程序设计基础实验内容

实验指导 实验一 Visual C++开发环境使用 1.实验目的 (1)熟悉Visual C++集成开发环境。 (2)掌握C语言程序的书写格式和C语言程序的结构。 (3)掌握C语言上机步骤,了解C程序的运行方法。 (4)能够熟练地掌握C语言程序的调试方法和步骤 2. 实验内容 输入如下程序,实现两个数的乘积。 #include ; int main() { x=10,y=20 p=prodct(x,t) printf("The product is : ",p) int prodct(int a ,int b ) int c c=a*b return c } (1)在编辑状态下照原样键入上述程序。 (2)编译并运行上述程序,记下所给出的出错信息。 (3)再编译执行纠错后的程序。如还有错误,再编辑改正,直到不出现语法错误为止。3.分析与讨论 (1)记下在调试过程中所发现的错误、系统给出的出错信息和对策。分析讨论成功或失败的原因。 (2)总结C程序的结构和书写规则。 实验二数据类型、运算符和表达式 1.实验目的 (1)理解常用运行符的功能、优先级和结合性。 (2)熟练掌握算术表达式的求值规则。 (3)熟练使用赋值表达式。 (4)理解自加、自减运算符和逗号运算符 (5)掌握关系表达式和逻辑表达式的求值 2.实验内容 (1)整数相除 #include<> int main() {

int a=5,b=7,c=100,d,e,f; d=a/b*c; e=a*c/b; f=c/b*a; printf("d=%d , e=%d ,f=%d\n",d,e,f); return 0; } (2)自加、自减运算 #include<> int main() { int a=5,b=8; printf("a++=%d\n",a++); printf("a=%d\n",a); printf("++b=%d\n",++b); printf("b=%d\n",b); return 0; } (3)关系运算和逻辑运算 #include<> int main() { int a=5,b=8,c=8; printf("%d,%d,%d,%d\n",a==b&&a==c,a!=b&&a!=c,a>=b&&a>=c,a<=b&&a<=c); printf("%d,%d\n",a<=b||a>=c,a==b||b==c); printf("%d,%d,%d,%d\n",!(a==b),!(a>=b),!(a>=c),!(a<=b)); return 0; } (1)在编辑状态下输入上述程序。 (2)编译并运行上述程序。 3.分析与讨论 (1)整数相除有什么危险?应如何避免这种危险? (2)分析a++和++a的区别。 (3)条件表达式和逻辑表达式的意义是什么,它们取值如何? (4)如何比较两个浮点数相等?为什么? 实验三格式化输入输出函数的使用 1.实验目的 (1)掌握格式字符使用的方法。 (2)掌握printf()进行格式化输出的方法。 (3)掌握scanf()进行格式化输入的方法。 2.实验内容 (1)输入如下程序,观察运行结果 #include<>

程序设计基础实验报告

《程序设计基础》 实验报告 专业班级: 姓名: 学号:

实验一 面向过程的简单程序设计 1.实验目的要求 (1) 使用C++语言编写简单的计算机程序,掌握C++程序从编辑、编译到运行的全过程, 初步了解C++程序的特点。 (2) 掌握C++语言的数据类型(包括对各种数据类型变量的定义、初始化、赋值等)、运 算符和表达式的使用。 (3) 掌握赋值语句的使用。 (4) 掌握数据的输入输出方法。 2.实验内容 (1)设计简单程序,分别计算下列表达式,式中变量由键盘输入,输出表达式的值。 <1> d c b a x -++ <2> 11 11+++x x <3> sinX+cosX+tan -1 X <4> e x+y +e x-y <5> log 10(1+21x +) <6> 22b a -+??b a - (其中??a 表示取不大于a 的最大整数)。 <1> #include using namespace std; int main() { float x,a,b,c,d,e; cin>>x>>a>>b>>c>>d; e=x+(a+b)/(c-d); cout< #include #include using namespace std; int main() { double x,y; cin>>x; y=sqrt(1+1/(x+1/(x+1)));

cout< #include #include using namespace std; int main() { double x,y; cin>>x; y=sin(x)+cos(x)+1/tan(x); cout< #include #include using namespace std; int main() { double x,y,z; cin>>x>>y; z=exp(x+y)+exp(x-y); cout< #include #include using namespace std; int main() { double x,y; cin>>x; y=log(1+sqrt(1+x*x)); cout< #include #include using namespace std; int main()

大学程序设计基础实验报告 (2)

**大学程序设计基础实验报告 实验名称:实验三分支结构 实验目的: 1、掌握IF-ELSE语句使用。 2、掌握ELSE-IF语句使用。 3、熟悉SWITCH语句使用。 实验内容: 在本地电脑中新建一个文件夹,用于存放C程序,文件夹的名字要求是“学号姓名-实验序号”,如E:\ 1920115555张三-03。启动C-Free,完成如下各题。 1、编程题:输入参数a,b,c,求一元二次方程ax2+bx+c=0的根(①a、b、c都为0,②a 和b为0,c不为0,③a为0,b不为0,c任意,④a不为0,且a、b、c满足b2-4ac ≥0,⑤a不为0,且a、b、c满足b2-4ac<0)。 2、编程题:输入职工的月薪salary,计算并输出应缴纳的个人所得税tax。tax=rate * (salary –850),rate的计算方式如下: 当salary <= 850,则rate = 0; 当850 < salary <= 1350,则rate = 5%; 当1350 < salary <= 2850,则rate = 10%; 当2850 < salary <= 5850,则rate = 15%; 当salary > 5850,则rate = 20%;。 3、编程题:根据输入的3个边长a、b、c,判断它们是否能构成三角形,若能构成三 角形,则进一步判断此三角形是哪种类型的三角形(等边三角形、等腰三角形、直角三角形和一般三角形。等腰直角算作等腰)。 4、编程题:输入一个形式如“操作数运算符操作数”的表达式,对2个整数进行乘、 除或求余运算。【请分别用if语句和switch语句实现此题功能】 上交作业的方法: 1.将程序代码及注释和运行程序的窗口复制到实验结果下方对应的题号上,并把这 次实验上机操作中遇到的问题及解决方法、心得等填好完成实验报告。 2.保存以上所有按要求已调试通过,并形成.c(或.cpp)和.exe文件到以自己的“学 号姓名-03”命名的文件夹中,并将以自己的“学号姓名”命名的文件夹压缩后上 交到ftp://10.172.250.252:1161中的“作业上传”文件夹下的“报告上交02”文件 夹下的子文件夹“源文件压缩上交”中,同时把以“学号姓名-03”命名的word 文档上交到“报告上交03”文件夹下的另一子文件夹“word文件上交”中。 特别提醒:每次上传的文件名一定要是“学号姓名-实验序号. doc”(如1720115555张

《C程序设计基础》实验指导

《C程序设计基础》实验指导 实验1 C程序的设计环境和运行方法 【实验目的】 1.熟悉所用计算机系统的基本操作方法。 2.学习Turbo C 2.0的使用方法,掌握程序编辑、编译、连接、运行及查看运行结果的方法。 3.掌握C程序的基本结构。 【实验内容】 1.熟悉使用的计算机系统的基本操作,创建自己的工作目录,参照附录中介绍的方法,掌握Turbo C 2.0的启动方法(一种或多种),了解Turbo C 2.0系统的安装路径和结构。2.进入Turbo C 2.0的工作环境,参照附录设置环境,用File/Change dir…设置当前工作目录、用Options/Directories设置系统的安装路径、包含文件路径、标准库文件路径、输出文件路径和源文件路径。 3.熟悉Turbo C 2.0的系统菜单组成及功能。学习使用功能键和快捷键调用菜单项的方法。 掌握文件建立、编辑、修改和保存的方法。落实文件的存储位置是否是你的工作目录,如果不是,回第二步重新设置。了解编译、连接和运行命令在屏幕菜单项的位置和调用方法。 4.输入并运行下面最简单的C程序 ①使用File菜单的New命令创建一个新文件。 ②在编辑区输入下面程序: #include mian() { printf(" Hello World!\n") } ③按功能键F9进行编译和连接,观察屏幕显示的编译信息。如果出现出错信息,信息窗口中将显示错误内容及定位错误时的语句行号,修改错误,再进行编译。 ④如果编译无错,按Ctrl+F9运行程序,按Alt+F5切换到用户屏,观察运行结果。 ⑤改变源程序中双引号内的字符串内容,重新编译和连接,并查看运行结果。 ⑥保存文件,查看你的工作目录下是否有该文件。编译连接的中间文件应该在Output设置的目录中。如果没有设置Output目录,中间文件应该在当前工作目录中。 5.输入并运行下面一个需要在运行时输入数据的程序,程序要求从键盘输入三个浮点数,输出它们的和。 #include mian()

C语言程序设计基础实验报告3【VIP专享】

实验3 逻辑结构程序设计一、实验目的 1、了解C 语言表示逻辑量的方法(以0代表“假”,以非0代表“真” )。 2、学会正确使用逻辑运算符和逻辑表达式。 3、熟练掌握if 语句和switch 语句。 4、结合程序掌握一些简单的算法。 5、学习调试程序。 二、实验内容和步骤 本实验要求事先编好解决下面问题的程序,然后上机输入程序并调试运行程序。 1、改错题。给定程序MODI1.C 的功能是:对于如下函数: 用scanf 函数输入x 的值,求y 值。/* MODI1.C */#include void main() { int x, y; /***********found***********/ scanf ("%d", &x);if ( x < 1 )y = x; /***********found***********/else if ( 1 <=x&& x < 10 ) y = 2*x -1 ; else y = 3*x -11; printf("y = %d\n", y ); } 程序中有两处错误,错误都在提示行: /***********found***********/的下面一行。请改正程序中的错误, 使它能得出正确的结果。注意:不要随意改动程序,不得增行或删行,也不得更改程序的结构! 修改程序后,运行程序,输入x 的值(分别为x<1、1≤x<10、x ≥10三种情况,如0.5、8、15),检查输 出的y 值是否正确。 ?? ? ??≥-<≤-<=)10(113) 101(12)1(x x x x x x y

2、从键盘输入某学生的考试成绩,要求输出成绩等级A 、B 、C 、D 、E 。学生的成绩可分成5个等级,90- 100分为A 级,80-89分为B 级,70-79分为C 级,60-69分为D 级,0-59分为E 级。要求在输入负数时, 给出错误提示。 ① 事先编好程序,要求分别用if 语句和switch 语句实现。运行程序,并检查结果是否正确。 ② 再运行一次程序,输入分数为负值(如-70),这显然是输入时出错,不应给出等级。修改程序,使之 能正确处理任何数据。当输入数据大于100或小于0时,通知用户“输入数据错”,程序结束。 3、给一个不多于5位的正整数,要求:①求出它是几位数;②分别打印出每一位数字;③按逆序打印出各位 数字,例如:原数据为321,应输出123。(BX4.6) 分别用1位正整数、2位正整数、3位正整数、4位正整数、5位正整数作为测试数据进行测试。 除此之外,程序还应当对不合法的输入作必要的处理。例如:当输入负数时或输入的数超过5位(如123 456)数时。4、输入3 个整数,要求按由小到大的顺序输出。

实验一 顺序程序设计

实验一顺序程序设计 一、实验目的: 1、学习顺序程序的设计方法 2、熟悉在PC机上建立、汇编、连接、调试和运行汇编语言程序的过程 3、学习和掌握字符及字符串的输入输出方法 二、实验环境: 硬件环境IBM/PC 及其兼容机 软件环境操作系统DOS 编辑程序EDIT或其他编辑程序 汇编程序MASM.EXE 连接程序LINK.EXE 调试程序DEBUG.EXE 可视化编程环境emu8086 三、实验内容: 1、已知X和Y是数据段中的两个无符号字节单元,用程序完成表达式Z=(X2+Y2)/2的计算。 2、从键盘读入两个一位数(按键时保证按下的是数字键),显示它们的积。 四、实验要求: 1、画出实验程序流程图,独立完成源代码的编写。 开始 X中的内容 送AL 计算X*X X*X乘积 送BX Y中的内 容送AL 计算Y*Y 计算X*X+Y*Y 计算(X*X+Y*Y)/2结果送Z单元 结束 开始 读入第1个数字 并保存在BL中 读入第2个数字 将两个数字都转换成十进制数 两个数相乘, 积在AX中 积除以10取商送AL,余数在AH中 转换成相应的 ASCII码,并 保存在BX中 输出十位数 输出个位数 结束

2、在DOS环境下使用MASM完成对源代码的编译、连接,有必要的情况下使用debug.exe 进行调试。 3、WINDOS环境下使用EMU8086完成上第2步的工作。 4、与程序流程图比较,验证是否完成规定的功能,若未达要求,返回第1步。 5、提交完成的源代码,要求对关键语句进行注释。 ①源代码如下: DA TA SEGMENT X DB 5 Y DB 4 Z DW ? DA TA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX ;初始化数据段 MOV AL,X ;X中的内容送AL MUL AL ;计算X*X MOV BX,AX ;X*X乘积送BX MOV AL,Y ;Y中的内容送AL MUL AL ;计算Y*Y ADD AX,BX ;计算X2+Y2 SHR AX,1 ;计算(X2+Y2)/2 MOV Z,AX ;结果送Z单元 MOV AH,4CH INT 21H ;返回DOS CODE ENDS END START ;汇编结束 ②源代码如下: CODE SEGMENT ASSUME CS:CODE MAIN: MOV AH,1 INT 21H ;读入第1个数字 MOV BL,AL ;保存在BL中 MOV AH,2 MOV DL,13 INT 21H ;回车 MOV DL,10 INT 21H ;换行 MOV AH,1 INT 21H ;读入第2个数字 SUB AL,30H ;第2个数字转换成十进制数 SUB BL,30H ;第1个数字转换成十进制数 MUL BL ;两个数相乘,积在AX中

程序设计基础C实验指导书

《程序设计基础C》实验指导书 上海应用技术学院 2012-2-20

目录 实验一顺序结构程序设计 (1) 实验二分支结构程序设计 (2) 实验三循环结构程序设计一 (3) 实验四(1)循环结构程序设计二 (4) 实验四(2)循环结构程序设计三 (5) 实验五数组 (6) 实验六数组和字符串 (7) 实验七函数 (8) 实验八函数 (9) 实验九指针 (10) 实验十结构体 (11) 实验十一文件 (12) 实验十二综合 (13)

实验一顺序结构程序设计 实验目的: 1.掌握C语言程序结构。 2.掌握变量的定义和使用。 3.掌握输入输出函数的使用。 4.掌握赋值语句的使用。 内容: 1.从键盘输入两个数,计算两个数的和,然后输出。 注意:带下划线的内容表示是从键盘输入的,实际上机时并不显示下划线,其余的内容是程序输出的。 2.从键盘输入一个华氏温度,请转换成摄氏温度后输出。 3.电路图如下所示,从键盘输入5个电阻的电阻值,计算并输出总的电阻值。

实验二 分支结构程序设计 实验目的: 1. 掌握逻辑表达式的使用方法。 2. 掌握if 和switch 语句的使用方法。 3. 掌握一些简单的算法。 内容: 1. 有下列函数,写一段程序,输入x 的值,输出y 的值 x (x<1) y= 2x-1 (1<=x<10) 3x-11 (x>=10) 2. 输入一个不超过 6位的正整数,输出该数的最高位和最低位,如果该数是一位数,则输 出该数。然后再输出该数是几位数。程序需要对输入的数进行合法性检查,对小于0和大于6位的数要有提示。 3. 输入一个 0到100的百分制成绩,转换成五级制A 、B 、C 、 D 和 E 。程序中首先需要 对输入的数进行合法性检查,对小于0和大于100的数要有提示,然后转换部分使用 switch 语句实现。

实验二选择结构程序设计实验报告

实验二选择结构程序设计 一、实验目的和要求 1.掌握关系表达式和逻辑表达式的使用。 2.熟悉选择结构程序设计。 3.熟练使用if语句进行程序设计。 4.使用switch语句实现多分支选择结构 二、实验设备 PC 机Visual C++6.0 三、实验内容 (一)实验准备 1.从程序流程的角度来看,程序可以分为三种基本结构,即顺序结构、分支(选择)结构、循环 结构。 2.lf-else 语句: 一般形式为:if (表达式) 语句1 ; else 语句2 ; 该语句用于实现分支结构,根据表达式的值选择语句1或语句2中的一条执行。首先求解表达式,如果表达式的值为“真”,则执行语句1;如果表达式的值为“假”,则执行语句 2. 2.switch 语句 switch语句可以处理多分支选择问题,根据其中break语句的使用方法,一般分为三种情况。 (二)实验项目 1.计算a+|b| #in clude int main (void) { int a,b, z; prin tf("Please en ter a,b:\n"); sca nf("%d,%d",&a,&b); if (b>=0)t b=b; prin tf("%d+%d=%d\n",a,b,z); return 0 ; } 2判断一个整数是否可以被3和5整除

#in clude int main (void) { int a ; printf("Please enter a:\n"); scanf("%d",&a); if (a%3==0){ printf("a 可以被 3 整除:\n"); } else{ if (a%5==0){ printf("a 可以被 5 整除:\n"); } else { printf("a 不可以被5整除,也不可以被3整除:\n"); } } 3.从键盘输入一个字符型数据,若输入一个数字字符( '0'-'9' ),则将其转换成相应的整数显示出来;若输入其它字符,则显示出错信息。 #include int main(void) { int a ; printf("please enter a char:\n"); scanf("%d",&a); if((0<=a)&&(a<=9)) { printf("This char is %d:\n",a); } else { printf(" 这个字符不是个整数:\n"); } return 0 ; } 4.编写一个程序,其功能为:从键盘输入三个数x、y、z ,判断x+y=z 是否成立,若成立输出 “x+y=z” 的信息,否则输出“ x+y!=z ”的信息。 #include int main(void) { int x,y,z; printf (" 请输入x,y,z:\n"); scanf ("%d,%d,%d",&x,&y,&z); if (x+y==z) { printf ("x+y=z\n"); } else { printf ("x+y!=z\n"); } return 0; } 5.编写一个程序,其功能为:输入三个整数,输出最大数和最小数#include int main(void) { int a,b,c,x,y; printf (" 请输入三个数字:\n"); scanf ("%d,%d,%d",&a,&b,&c);

C语言程序设计基础实验报告6【VIP专享】

实验6 数组 一、实验目的 1、掌握一维数组和二维数组的定义、赋值和输入输出的方法; 2、掌握字符数组和字符串函数的使用; 3、掌握与数组有关的算法(特别是排序算法)。 二、实验内容和步骤 编程序并上机调试运行。 1、以下给定程序MODI1.C的功能是: 求一维数组a中所有元素的平均值, 结果保留两位小数。例如,当一维数组a中的元素为:10, 4, 2, 7, 3, 12, 5, 34, 5, 9时,程序的输出应为:The aver is: 9.10 程序中有两处错误,错误都在提示行:/***********found***********/的下面一行。请改正程序中的错误, 使它能得出正确的结果。 注意:程序中的其它地方请不要随意改动,不得增行或删行,也不得更改程序的结构! #include #include void main() { int a[10]={10,4,2,7,3,12,5,34,5,9}, i; /************found************/ /************found************/ s = a[0]; for ( i=1; i<10; i++) s += a[i]; aver = s / i; printf("The aver is: %.2f\n", aver); } 2、以下给定程序MODI1.C的功能是:求二维数组a中的最小值。 例如,当二维数组a中的元素为: 4 2 34 7 3 12 5 6 5 程序的输出应为:The min is: 2 。 程序中有两处错误,错误都在提示行:/***********found***********/的下面一行。请改正程序中的错误, 使它能得出正确的结果。 注意:程序中的其它地方请不要随意改动,不得增行或删行,也不得更改程序的结构! #include #include void main() { int a[3][3]={4,2,34,7,3,12,5,6,5}, i, j, min; clrscr();

程序设计基础(c语言)实验指导与测试答案

习题集参考答案 测试1 1.BDAAA 6.DBCDB 11.AADDD 16.CDCCC 21.BCDBA 26.AD 28.a+b,a-b,a-b 测试2 1.BBBDC 6.BCABC 11.CDBBA https://www.doczj.com/doc/911164717.html,DCB https://www.doczj.com/doc/911164717.html,(假设输入12345回车)CBB 26.ACDDC 31.CBC 34. x>=0 x0 m=n/10 36. i==j k!=i&&k!=j 37. i<10 j%3!=0 38. k!=0 k/10 continue 39. 0 z<10 100*x+10*y+z 40. i=1,m=0 m+=i 测试3 1.CDACB 6.CBDBA 11.AACC CAC 16.C 17. 1.0/(i*i) sqrt(6*s) 18. m=n r !=0 return n 19. <=n s fun(k) 测试4 1.*CDBD 6.DCDA CD 11.DCDBD 16.DCCBB 21.BBABD 26.BDDDD 31.ABCCC 36.CDDCB 41.BAABB 46.CABDC 51.题目中strcat(p1,p2)有误,因为p1指向的是字符串常量 52.DC 55.1110 56. &a[i] continue 57. i=strlen(a) ;i>=j ;i-- a[i+1]=a[i] 58. ‘\0’str1[i]-str2[i] 59. j++ ‘\\’j++ ‘\\’j++ ‘\0’ 60. j<3 b[j][i]=a[i][j] i<3 61. b[i][j+1]=a[i][j] i=0 i<2 printf(“\n”) 62. i=j+1 found=1 63. strlen(t) t[k]==c 64. BD 65. float a[10],x i<10 i<9 j<9-i a[j]>a[j+1] a[j]=a[j+1] i<10 i%5==0 66. ADD 67. DA 测试5 1.BCBAD 6.DBDDA 11.DDCCB

程序设计基础实验内容

实验指导 实验一 Visual C++6.0开发环境使用 1.实验目的 (1)熟悉Visual C++6.0集成开发环境。 (2)掌握C语言程序的书写格式和C语言程序的结构。 (3)掌握C语言上机步骤,了解C程序的运行方法。 (4)能够熟练地掌握C语言程序的调试方法和步骤 2. 实验内容 输入如下程序,实现两个数的乘积。 #include (stdio.h); int main() { x=10,y=20 p=prodct(x,t) printf("The product is : ",p) int prodct(int a ,int b ) int c c=a*b return c } (1)在编辑状态下照原样键入上述程序。 (2)编译并运行上述程序,记下所给出的出错信息。 (3)再编译执行纠错后的程序。如还有错误,再编辑改正,直到不出现语法错误为止。3.分析与讨论 (1)记下在调试过程中所发现的错误、系统给出的出错信息和对策。分析讨论成功或失败的原因。 (2)总结C程序的结构和书写规则。 实验二数据类型、运算符和表达式 1.实验目的 (1)理解常用运行符的功能、优先级和结合性。 (2)熟练掌握算术表达式的求值规则。 (3)熟练使用赋值表达式。 (4)理解自加、自减运算符和逗号运算符 (5)掌握关系表达式和逻辑表达式的求值 2.实验内容

(1)整数相除 #include int main() { int a=5,b=7,c=100,d,e,f; d=a/b*c; e=a*c/b; f=c/b*a; printf("d=%d , e=%d ,f=%d\n",d,e,f); return 0; } (2)自加、自减运算 #include int main() { int a=5,b=8; printf("a++=%d\n",a++); printf("a=%d\n",a); printf("++b=%d\n",++b); printf("b=%d\n",b); return 0; } (3)关系运算和逻辑运算 #include int main() { int a=5,b=8,c=8; printf("%d,%d,%d,%d\n",a==b&&a==c,a!=b&&a!=c,a>=b&&a>=c,a<=b&& a<=c); printf("%d,%d\n",a<=b||a>=c,a==b||b==c); printf("%d,%d,%d,%d\n",!(a==b),!(a>=b),!(a>=c),!(a<=b)); return 0; } (1)在编辑状态下输入上述程序。 (2)编译并运行上述程序。 3.分析与讨论 (1)整数相除有什么危险?应如何避免这种危险? (2)分析a++和++a的区别。 (3)条件表达式和逻辑表达式的意义是什么,它们取值如何? (4)如何比较两个浮点数相等?为什么? 实验三格式化输入输出函数的使用 1.实验目的

实验一简单程序设计实验

实验一:简单程序设计实验 (1)编写一个 32 位无符号数除法的程序,要求将存放在 NUM1 中的 32 位无符号数与存放 在 NUM2 中的 16 位无符号数相除,结果存放在 NUM3 和 NUM4 中。 程序流程图略。 参考源程序: DATA SEGMENT NUM1 DD 2A8B7654H NUM2 DW 5ABCH NUM3 DW ? NUM4 DW ? DATA ENDS CODE SEGMENT ASSUME DS:DATA, CS:CODE START: MOV AX,DATA ;数据段寄存器初始化 MOV DS,AX MOV AX, WORD PTR NUM1 MOV DX, WORD PTR NUM1+2 DIV NUM2 MOV NUM3,AX MOV NUM4,DX MOV AH,4CH ;正常返回DOS 系统 INT 21H CODE ENDS END START (2)编写一个拆字程序。要求将存放在 ARY 单元的 2 位十六进制数 X 1X 2 拆为 X 1 和 X 2 两 部分,并以 0X 1 和 0X 2 的形式分别存入 ARY+1 和 ARY+2 单元中。 程序流程图略。 参考源程序: DATA SEGMENT ARY DB 2AH,?,? DATA ENDS CODE SEGMENT ASSUME DS:DATA, CS:CODE START: MOV AX,DATA MOV DS,AX MOV SI,OFFSET ARY ;取ARY 的偏移地址 MOV AL,[SI] ;取16进制数至AL

MOV BL,AL AND AL,0F0H ;取16进制数的高四位,即X1 SHR AL,4 MOV [SI+1],AL ;存0X1 MOV AL,BL AND AL,0FH ;取16进制数的低四位,即X2 MOV [SI+2],AL ;存0X2 MOV AH,4CH INT 21H CODE ENDS END START

计算机程序设计基础实验12个实验

《计算机程序设计基础》实验教学 大纲 课程编号:1303072 实验学时:24课程学分:3.5 课程类型:必修教学对象:全校各非计算机专业先修课程: ㈠实验目的与要求  本实验课程面向文法学院学生,通过本课程的学习与实验,使学生了解程序设计的一些基本概念,掌握计算机程序设计的一般方法,具备使用计算机解决实际问题的初步能力。 在实验教学中提倡“实验前要准备,实验中要认真,实验后要总结”;突出上机实践操作环节,强调在教师指导下的以学生为中心完成每次上机的具体内容和要求;对于普遍问题采用领练、辅导有机

结合的方法;尽量采用 CAI 辅助教学软件。 通过实验教学使学生能够建立计算机程序设计的基本概念;在简单的程序设计过程中掌握Visual Basic可视化设计的步骤,逐步搞清什么是对象、对象的属性以及事件和方法等重要概念。在此基础上,掌握程序设计的3种基本结构。 ㈡实验考核方式与成绩评定方法考核方式: 1.考核学生每次实验完成情况; 2.考核学生的计算机基本操作能力; 3.上机考试 成绩评定:学生应按照每次实验的要求,完成指定的实验任务,并按要求提交实验报告和实验文件,成绩评定由实验指导教师根据学生实验完成情况按照优秀、良好、中等、合格、不合格五个等级给出,实验成绩占20%计入学生课程成绩。  本学期需上交实验报告为三次,实验报告实验要求用本校实验报告册书写。要求填写学号、班级、姓名、实验指导老师、实验日期,报告内容包括实验名称、实验目的、实验内容、详细操作步骤及结果,最好写出自己的上机体会和总结。

㈢ 实验项目设置 根据教学内容和实验教学目的,共设4个实验项目: 项目一,认识Visual Basic,包括2个实验; 项目二,程序设计基础,,包括6个实验; 项目三,常用控件及界面设计,包括2个实验;项目四,文件管理,包括1个实验; 总的实验数为12个实验。 实验项目名称实验内容与学时分配总学时 数 认识Visual Basic 1.Visual Basic 程序设计环 境 2.窗体和最基 本控件 4 程序设计基础1.数据类型及函数 2.顺序程序设计 3.分支结构程序设计4.循环结构程序设计5.数组 6.过程 12 常用控件及界面设计1.常用标准控件 2.界面设计 4 文件管理1.文件管理2

实验二、基本程序结构设计

实验报告 课程名称微机接口与汇编语言 实验项目实验二 基本程序结构设计 实验仪器 TPC-USB通用微机接口实验系统 系别计算机学院 专业 班级/学号 学生姓名 实验日期 成绩 指导教师胡信裕

一、实验目的 1. 学习汇编程序设计的基本方法,掌握用汇编语言设计、编写、调试和运行程序的方法; 2. 进一步熟悉TPC-USB通用微机接口实验系统的使用操作; 3. 熟悉、掌握顺序结构、分支结构、循环结构程序设计和调试。二.实验设备 1.PC微机系统一套 2.TPC-USB通用微机接口实验系统一套 三.实验要求 1.实验前要作好充分准备,包括程序框图、源程序清单、调试步骤、测试方法、对运行结果的分析等。 2.熟悉与实验有关的系统软件(如编辑程序、汇编程序、连接程序和调试程序等)使用方法。在程序调试过程中,有意识地了解并掌握TPC-USB通用微机接口实验系统的软硬件环境及使用,掌握程序的调试及运行的方法技巧。 3.实验前仔细阅读理解教材相关章节的相关内容,实验时必须携带教材及实验讲义。 四.实验内容及步骤 (一) 程序设计 1.按图1虚线连接电路,将计数器0设置为方式0,计数器初值为N(N≤0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0变高电平)。 图1 实验连接参考电路图之一

2. 按图2连接电路,将计数器0、计数器1分别设置为方式3,计数初值均设为1000,用逻辑笔观察OUT1输出电平的变化(OUT1输出频率应为1Hz)。 图2 实验连接参考电路图之二 3. 参考流程图 8253控制寄存器地址:283H、计数器0地址:280H;计数器1:281H;CLK0连接时钟1MHz。 图3 实验电路之一参考流程图图4 实验电路之二参考流程图 4.实验程序设计如下: 8253_1.asm io8253a equ 283h io8253b equ 280h code segment assume cs:code

C++程序设计实验报告5

《程序设计基础》 实验报告 学号:2016211990 姓名:王贯东 班级:16-计算机科学与技术-1班

学院:计算机与信息学院 实验五指针 1.实验目的要求 (1)掌握指针的概念,学会定义和使用指针变量。 (2)学会使用数组指针和指向数组的指针变量。 (3)学会使用字符串指针和指向字符串的指针变量。 (4)了解指向指针的指针的概念以及其使用方法。 (5)掌握指针、引用、数组做函数参数的传递机制。 (6)*学会使用指向函数的指针变量。 2.实验设备 Visual C++ 6.0 3.实验内容 (1)阅读下面程序,写出其运行结果。

<1> #include sub ( int x , int y , int *z ) { *z = y – x ; } void main( ) { int a,b,c; sub( 10 , 5 , &a ) ; sub( 7, a, &b ) ; sub( a, b, &c ) ; cout << a <<‘,’<< b <<‘,’<< c << endl ; } 解:输出-5,-12,-7 <2> #include #include void main()

{ int stre ( char[ ] ) ; char str [ 10 ] , *p = str ; gets ( p ) ; cout << stre ( p ) << endl ; } int stre ( char str[ ] ) { int num = 0 ; while( * ( str + num ) != ’\0’ ) num ++ ; return ( num ) ; } 解:题目库函数少了 。该正后,输入1234,输出4 (2)编写程序实现下列问题的求解。 (1)输入三个整数,按由小到大的顺序输出,然后将程序改为:输入三个字符串,按由小到大的顺序输出。 #include using namespace std; int turn (int *p1,int *p2)

java程序设计基础(第3版)实验指导答案 第四章

实验16 public class shiyan16 { public static void main(String[] args) { int i; int []a; a=new int[10]; for(i=0;i<=a.length-1;i++) System.out.print("a["+i+"]="+a[i]+" "); System.out.print("\n"); for(i=a.length-1;i>=0;i--) { a[i]=i; System.out.print("a["+i+"]="+a[i]+" "); } } } //定义一个长度为10的整形数组,输出元素的内容,再对数组元素进行赋值 实验17 import java.util.*; public class shiyan17 { public static void main(String[] args) { int i,max,min; int []a=new int[5]; Scanner reader=new Scanner(System.in); System.out.println("从键盘输入5个整数"); for(i=0;i<5;i++) a[i]=reader.nextInt(); max=a[0]; min=a[0]; for(i=1;i<5;i++) { if(a[i]>max) max=a[i]; if(a[i]

程序设计基础实验指导书

实验1 C程序的运行环境和C语言的数据类型⒈ 实验目的 ⑴了解在具体的语言环境下如何编辑、编译、连接和运行一个C程序。 ⑵通过运行简单的C程序,初步了解C源程序的特点。 ⑶掌握C语言数据类型,熟悉如何定义一个整型、字符型和实型的变量,以及对它 们赋值的方法。 ⑷掌握不同的类型数据之间赋值的规律。 ⑸学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++) 和自减(--)运算符的使用。 ⒉ 实验内容和步骤 ⑴检查所用的计算机系统是否已安装了C编译系统并确定他所在的子目录。 ⑵进入所用的集成环境。 ⑶熟悉集成环境的界面和有关菜单的使用方法。 ⑷输入并运行一个简单的、正确的程序。 ⒊ 实验题目 ⑴ 输入下面的程序 # include “stdio.h” void main() { printf(“This is a c program.\n”); } 程序无误,其运行的结果为:(请填写) ⑵ 输入并编辑一个有错误的C程序。 # include “stdio.h” void main() { int a,b,sum a=123; b=456; sum=a+b print(“sum is %d\n”,sum); } 运行后程序出现几处错误,请分别指出,并逐一更改:

⑶若k,g均为int型变量,则下列语句的输出为,: # include “stdio.h” void main() { int k, g; k=017; g=111; print(“%d\t”,++k); printf(“%x\n”,g++); } 运行结果为:

⒈ 实验目的 ⑴掌握C语言中赋值语句的使用方法。 ⑵掌握各种类型数据的输入输出的方法,能正确使用各种格式转换符。 ⑶进一步熟悉C程序的编辑、编译、连接和运行的过程。 ⒉ 实验内容 用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=’A’,c2=’a’。问在键盘上如何输入? 请书写程序 #include “stdio.h” void main() { int a,b; float x,y; charc1,c2; scanf(“a=%d b=%d”,&a,&b); scanf(“%f %e”,&x,&y); scanf(“ %c %c”,&c1,&c2); printf(“a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n”); } 运行,并按照如下方式在键盘上输入: A=3 b=7 8.5 71.82 A a 运行结果: A=3,b=7,x=8.500000,y=71.820000,c1=A,c2=a 思考:为什么在第三个scanf函数双引号第一个字符为空格字符,如果没有这个空格字符,而写成:scanf(“%c %c”,&c1,&c2); 按以上的输入、输出将如何变化? 请分析原因

相关主题
文本预览
相关文档 最新文档