文档库 最新最全的文档下载
当前位置:文档库 › C上机实验报告

C上机实验报告

C上机实验报告
C上机实验报告

实验一 顺序结构程序设计

【实验日期】 年 月 日

【实验目的】

1.

熟悉VC++6.0调试环境,掌握运行一个C 程序的基本步骤。 2.

掌握基本输入、输出函数的使用。 3.

能够编写简单的顺序结构程序,实现简单的数据处理。 4. 掌握C 程序的查错方法。

【实验内容】

调试示例

改正下列程序中的错误,求华氏温度1000F 对应的摄氏温度。计算公式如下,其中:c 表示摄氏温度,f 表示华氏温度。

源程序(有错误的程序)

#include “stdoi.h ”

void main()

{ int c;f;

f=100;

c=5*(f-32)/9;

printf(“f=d,c=%d\n ”,f,c); }

运行结果(改正后程序的运行结果) f=100,c=37

调试过程:

(1) 输入源程序。

(2) 使用菜单或工具栏来完成编译、连接和运行操作。

(3) 单击编译(Compile )按钮,编译时出现的第一条错误信息是: Cannot open include file:’stdoi.h ’:no such file or directory

通过拖动信息窗口右侧的滚动块或将信息窗口拉大可查看错误信息。双击该错误信息,箭头指向源程序的第一行,因为“stdio.h ”被误写为“stdoi.h ”。改正为“stdio.h ”后,重新编译,新产生的第一9)32(5-?=f c

条错误信息是:‘f’:undeclared identifier

双击该错误信息,箭头指向源程序的第四行,错误信息指出“f”变量没有被定义。仔细观察后,发现“f”前的分号应该为逗号。将“f”前的分号改为逗号后,重新编译,编译正确。

(4) 单击连接(Build)按钮,连接正确。

(5) 单击运行(Build Execute)按钮,运行结果为:f=d,c=100。

结果不符合题目的要求,仔细检查源程序,发现函数printf中“f=d”的“d”应为“%d”。改正后,重新编译、连接和运行,运行结果与题目要求的结果一致。

●改错题

改正下列程序中的错误,计算x的平方y,并分别以“y=x*x”和“x*x=y”的形式输出x和y的值。

源程序(有错误的程序)

/********************found********************/

#include “stdoi.h”

void main()

{ int y,x;

printf(“Input x:”);

scanf(“%d”,&x);

y=x*x;

/********************found**********************/

printf(“%d=%d*%d\n”,x);

/********************found**********************/

printf(“%d*%d=%d\n”,y);

}

运行结果1(改正后程序的运行结果)运行结果2

Input x:5 Input x:4

25=5*5 16=4*4

5*5=25 4*4=16

●编程题

1、已知某位学生的数学、英语和计算机课程的成绩分别是82分、78分和91分,求该生3门课的平均成绩。

输出示例: Math=82,eng=78,comp=91,average=83

2、当n为152时,分别求出n的个位数字(d1)、十位数字(d2)和百位数字(d3)的值。

输出示例: 整数152的个位数字是2,十位数字是5,百位数字是1

提示:n的个位数字d1的值是n%10,十位数字d2的值是(n/10)%10,百位数字d3的值是n/100。

思考:如果n是一个四位数,任何求出它的每一位数字?

指导教师:

实验二选择、循环程序设计

【实验日期】年月日

【实验目的】

1.掌握关系运算符及逻辑运算符。

2.掌握if语句、switch语句的格式及执行过程。

3.掌握while语句、do-while语句和for语句的格式和执行过程。

4.掌握选择结构、循环结构程序设计的基本方法。

【实验内容】

改错题

1、改正下列程序中的错误,输入x、计算并输出下列分段函数f(x)

源程序(有错误的程序)

/********************found **********************/

#include “stdoi.h”

void main()

{ double x,y;

printf(“Enter x:”);

/******************* found ***********************/ scanf(“%lf”,x);

if(x!=0)

/******************* found ***********************/ y=1/x

else

y=0;

printf(“f(%.2f)=%.1f\n”,x,y);}

运行结果1(改正后程序的运行结果)

Enter x:5

F(10.00)=0.2

运行结果2

Enter x:0

F(0.00)=0.0

2、改正下列程序中的错误,计算表达式1+2+3+…+100的值。 源程序(有错误的程序)

#include “stdio.h ”

void main()

/******************found*********************/

{ int i,sum;

/*****************found***********************/

for(i=1,i<=100,i++)

sum=sum+i;

printf(“sum=%d\n ”,sum); }

运行结果(改正后程序的运行结果)

Sum=5050

编程题

1、输入三角形的3条边a ,b ,c ,如果能构成一个三角形,输出面积area 和周长perimeter (保留2位小数);否则,输出“不构成三角形”。在一个三角形中,任意两边之和大于第三边。三角形面积计算公式: area=)()((c s b s a s s --- ,其中s=(a+b+c)/2

输入输出示例(运行2次)

第一次运行:

请输入三角形的三边:3 4 5

area=6.00 perimeter=12.00

第二次运行:

请输入三角形的三边:1 3 1

不构成三角形

2、输入1个正整数n ,计算1+

?++5

131的前n 项之和,输出时保留2位小数。

输入输出示例(运行2次)

第一次运行:

Enter n :3

sum=1.53

第二次运行:

Enter n :10

sum=2.13

指导教师:

实验三函数程序设计

【实验日期】年月日

【实验目的】

1. 熟练掌握函数的定义和调用。

2. 熟练掌握使用函数编写程序。

3. 掌握函数的实参、形参和返回值的概念和使用。

【实验内容】

改错题

改正下列程序中的错误,计算1!+2!+3!+…+10!的值,要求定义并调用函数fact(n)计算n!,函数类型是double。

输出示例

1!+2!+…+10!=4037913.000000

源程序(有错误的程序)

#include “stdio.h”

double fact(int n); /*对函数进行声明*/

void main()

{ int i;

/*******************found*********************/

double sum;

/*******************found**********************/

for(i=1;i<10;i++)

sum=sum+fact(i);

printf(“1!+2!+…+10!=%f\n”,sum);

}

/*******************found**********************/

double fact(int n);

{ int i;

double r=1;

for(i=1;i<=n;i++)

r=r*i;

return r;

}

编程题

1、输入一批正整数(以零或负数为结束标志),求出其中的偶数和。要求定义并调用函数even(n)判断数的奇偶性,当n为偶数时返回1,否则返回0。

输入输出示例

请输入一串正整数(用零或负数结束):12 5 8 9 4 13 20 7 0 其中偶数和是:44

需要完善的源程序如下:

#include “stdio.h”

int even(int n)

{

}

void main()

{ int a,x,sum=0;

printf(“请输入一串正整数(用零或负数结束):”);

scanf(“%d”,&x);

while(x>0)

{ a=even(x);

if(a==1) sum=sum+x;

scanf(“%d”,&x);

}

printf(“其中偶数的和是:%d\n”,sum);

}

2、编写一个程序,包含两个函数,一个函数fun1(int x)用来判定x是否为偶数,另一个函数fun2(int x)用来x是否为素数,函数的判断结果可用1和0分别表示肯定和否定。自定义main函数,在main函数中输入两个正整数m和n,调用fun1函数判定m是否为偶数,调用fun2函数判定n是否为素数。(此题为思考题)

指导教师:

实验四数组程序设计

【实验日期】年月日

【实验目的】

1. 熟练掌握使用一维数组编程的方法。

2. 熟练掌握使用字符数组处理字符串的方法。

3. 掌握用数组名作为函数参数的编程方法。

【实验内容】

改错题

1、输入一个以回车结束的字符串(少于80个字符),把字符串中的所有数字字符(0~9)转换为整数,去掉其他字符。例如,字符串“4a56bc”转换为整数后是456。

输入输出示例

Abc85xyz64

8564

源程序(有错误的程序)

#include “stdio.h”

#include “string.h”

void main()

/****************** found ******************/

{ int i,s;

char str[80];

gets(str);

for(i=0;i

/****************** found *******************/

if(str[i]<=’0’||str[i]>=’9’)

s=s*10+str[i]-48;

printf(“%d”,s);}

2、输入1个正整数n(0

运行结果(改正后程序的运行结果)

请输入数据的个数n:5

请输入这5个整数:1 2 3 6 8

请输入要插入的整数:

4插入后:1 2 3 4 6 8

【提示:先找到插入点,从插入点开始,所有的数据顺序后移,然后插入数据。】

源程序(有错误的程序)

#include “stdio.h”

void main()

/********************found********************/

{ int i,j,n,x,a[n];

printf(“请输入数据的个数n:”);

scanf(“%d”,&n);

printf(“请输入这%d个整数:”,n);

for(i=0;i

scanf(“%d”,&a[i]);

printf(“请输入要插入的整数:”);

scanf(“%d”,&x);

j=n; /*假设插在最后*/

for(i=0;i

if(x

for(i=n-1;i>=j;i--) /*从插入点开始,所有的数据顺序后移*/

/********************found*********************/

a[i] =a[i+1];

/********************found*********************/

a[i]=x; /*插入数据*/

printf(“插入后:”);

for(i=0;i

printf(“%d ”,a[i]);

putchar(‘\n’);

}

编程题

1、输入1个正整数n(1

输入输出示例

请输入数据个数n值:5

请输入这5个数:4 6 2 9 8

处理后的结果是:2 6 4 8 9

需要完善的程序如下:

#include “stdio.h”

int ex(int a[],int n)

{

}

void main()

{ int i,a[10],n,x,t;

printf(“请输入数据个数n(1≤n≤10):”);

scanf(“%d”,&n);

printf(“请输入这%d个数:”,n);

for(i=0;i

scanf(“%d”,&a[i]);

ex(a,n);

for(i=0;i

printf(“%d ”,a[i]);

printf(“\n”);

}

2、输入一组整数(数据个数在1~10之间),输出该组数据的和。要求定义并调用函数sum(int a[],int n)实现求数组a中n 个元素的和,并返回求得的结果。

输入输出示例(运行2次)

第一次运行:

请输入数据个数n(1≤n≤10):5

请输入这5个数:3 5 2 9 6

这些数的和是:25

第二次运行:

请输入数据个数n(1≤n≤10):3

请输入这3个数:6 7 8

这些数的和是:21

需要完善的源程序如下:

#include “stdio.h”

int sum(int a[],int n)

{

}

void main()

{ int i,a[10],n,x,t;

printf(“请输入数据个数n(1≤n≤10):”);

scanf(“%d”,&n);

printf(“请输入这%d个数:”,n);

for(i=0;i

scanf(“%d”,&a[i]);

t=sum(a,n);

printf(“这些数的和是:%d\n”,t);

}

指导教师:

实验五指针程序设计

【实验日期】年月日

【实验目的】

1. 掌握指针、地址的基本概念。

2. 掌握通过指针操作数组元素的方法。

【实验内容】

改错题

1、有n个整数,使前面各数顺序循环移动m个位置(m

运行结果(改正后程序的运行结果)

请输入n,m(m

请输入这5个整数(用空格键或Tab键或回车键间隔):1 2 3 6 8

移动后: 3 6 8 1 2

源程序(有错误的程序)

#include "stdio.h"

void mov(int *,int,int);

void main()

{ int i,m,n,a[80],*p;

printf("请输入n,m(m

scanf(“%d,%d",&n,&m);

printf("请输入这%d个整数:",n);

for(p=a,i=0;i

/******************found********************/

scanf(“%d”,&p++);

mov(a,n,m);

printf("移动后:");

for(i=0;i

}

void mov(int *x,int n,int m)/*将a数组中n个元素顺序移动m个位置*/

{ int i,j,k;

for(i=0;i

{ k=x[n-1]; /*将最后一个元素的值保存在k中*/ for(j=n-1;j>0;j--) /*实现从最后一个元素开始依次后移*/

x[j]=x[j-1];

/*******************found*********************/

x[0]=x[k]; } }

编程题

1、在数组a中查找指定元素。输入一个正整数n(1<n≤10),然后输入n个整数存入数组a中,再输入一个整数x,在数组a中查找x,如果找到则输出相应的下标,否则输出“没找到”。

要求定义并调用函数search(a,n,x),它的功能是在数组a中查找元素x,若找到则返回下标,否则返回-1。

输入输出示例(运行2次)

第一次运行:

请输入n值(1<n≤10):3

请输入这3个数:1 2 5

请输入x值:2

2的下标是1

第二次运行:

请输入n值(1<n≤10):5

请输入这5 个数:2 7 5 -1 4

请输入x值:9

没找到

需要完善的源程序如下:

#include “stdio.h”

int search(int *a,int n,int x)

{

}

void main()

{ int i,a[10],n,x,t;

printf(“请输入n值(1<n≤10):”);

scanf(“%d”,&n);

printf(“请输入这%d个数:”,n);

for(i=0;i

scanf(“%d”,&a[i]);

printf(“请输入x值:”);

scanf(“%d”,&x);

t=search(a,n,x);

if(t!=-1) printf(“%d的下标是%d\n”,x,t);

else printf(“没找到”);

}

2、以下程序中,函数fun的功能是判断一串字符是否为“回文”,若是返回1,否则返回0。所谓“回文”,是指顺读和倒读都一样的字符串。如果“ABCBA”和“xyzzyx”都是“回文”。

输入输出示例(运行3次)

第一次运行:

Enter a string:abcddcba

YES

第二次运行:

Enter a string:12321

YES

第三次运行:

Enter a string:xyzy

NO

需要完善的源程序如下:

#include “stdio.h”

#include “string.h”

int fun(char *s)

{

}

void main()

{ int a; char str[80];

printf(“Enter a string:”);

scanf(“%s”,str);

a=fun(str);

if(a==1) printf(“YES”);

else printf(“NO”);} 指导教师:

实验六结构体程序设计

【实验日期】年月日

【实验目的】

1. 掌握结构体数组的基本使用方法。

2. 掌握链表的基本概念。

【实验内容】

改错题

1、输入n(3<n≤10)个学生的成绩信息,包括学号、姓名和3门课程的成绩,输出总分最高的学生姓名和总分。

输入输出示例

输入n:5

输入第1个学生的学号、姓名和3门课成绩:1 赵丽 78 67 84 输入第2个学生的学号、姓名和3门课成绩:2 钱君 89 65 90 输入第3个学生的学号、姓名和3门课成绩:3 刘芳 75 78 82 输入第4个学生的学号、姓名和3门课成绩:4 陈伟 77 69 68 输入第5个学生的学号、姓名和3门课成绩:5 宋平 80 76 85 总分最高的学生是:钱君,244分

源程序(有错误的程序)

#include "stdio.h"

typedef struct student /*定义结构体类型*/

{ long num;

char name[9];

int score[3];

int sum;

}STU;

void main()

{ int i,j,k,n,max=0;

STU a[10];

printf("输入n:");

scanf(“%d”,&n);

for(i=0;i

{ printf("输入第%d个学生的学号、姓名和3门课成绩:",i+1);

scanf(“%d”,&a[i].num);

scanf(“%s”,a[i].name);

a[i].sum=0;

for(j=0;j<3;j++)

/******************found *********************/

{ scanf(“%d”,&score[j]);

a[i].sum+=a[i].score[j];

}

}

for(i=0;i

if(a[i].sum>max)

{ max=a[i].sum; k=i; }

/***************** found*********************/

printf("总分最高的学生是:%s,%d\n", name, sum);

}

编程题

1、从键盘输入n(3<n≤10)个学生的数据,每个学生包括学号、姓名和3门课程的成绩,输出每个学生的姓名和平均成绩,输出的平均成绩保留2位小数。

输入输出示例

输入n:3

输入第1个学生的学号、姓名和3门课成绩:1 赵丽 78 64 83 输入第2个学生的学号、姓名和3门课成绩:2 钱君 89 65 90 输入第3个学生的学号、姓名和3门课成绩:3 刘芳 71 78 82 赵丽,75.00分

钱君,81.33分

刘芳,77.00分

需要完善的源程序如下:

#include "stdio.h"

typedef struct student /*定义结构体类型*/

{ long num;

char name[9];

int score[3];

float aver;

}STU;

void main()

{

}

指导教师:

实验七文件程序设计

【实验日期】年月日

【实验目的】

1. 掌握文件的基本概念。

2. 掌握文件的打开、关闭方法。

3. 掌握文件的读、写方法。

【实验内容】

●改错题

从键盘输入一行字符,写到文件a.txt中。

源程序(有错误的程序)

#include “stdio.h”

void main()

{ char ch;

/**************** found ******************/

FILE fp;

/**************** found ******************/

if((fp=fopen(“a.txt”,“w”))!=NULL)

{ printf(“cannot open file\n”);

exit(0);

}

while((ch=getchar())!=’\n’)

fputc(ch,fp);

fclose(fp);

}

●填空题

1、下面程序完成的功能是:从键盘输入一行字符,反序后输出。请填空并运行程序。(程序从键盘接受字符的同时就用头插法建立链表,所建立的链表本身就已经是反序排序的。因此反序输出字符的时候只需沿着链表的第一个结点开始,顺序输出即可。)

#include “stdio.h”

#include “stdlib.h”

struct node

{ char data;

struct node *next;

};

void main()

{ char ch;

struct node *head,*p;

head=NULL;

while((ch=getchar())!=’\n’)

{ p=(struct node *)malloc(sizeof(struct node));

p->data=ch;

p->next= ;

head= ;

}

;

while(p!=NULL)

{ printf(“%c”,p->data);

p=p->next;

}

}

编程题

1、从键盘输入一串字符,将其中的小写字母转换成大写字母,其它字符不变,输出到文件test.txt中。

2、从键盘输入n(3<n≤10)个学生的数据,每个学生包括学号、姓名和3门课程的成绩,由程序计算出每个学生的平均成绩,将每个学生的输入数据和计算出的平均成绩写入文件stud.dat中。

需要完善的源程序如下:

#include "stdio.h"

typedef struct student

{ long num;

char name[9];

汇编实验报告(详细版)

计算机组成与汇编语言(实验报告) 内容: 实验一、六、七、八 院系专业:计算机学院计算机科学与技术 姓名:xxxxxxxxx 学号: 2011004xxxxx 完成时间:2012年12月1日

计算机组成与汇编语言实验报告 姓名xxxx 学号2011004xxxxx 计分 专业软件工程班级xxxx 实验日期2012年 12 月 1日实验名称实验一数制转换 实验目的 ●熟悉各种进制数据之间的相互转换方法。 ●掌握二-十进制数据的相互转换程序设计。 实验内容 1.将编写好的程序1输入、编译、连接并运行。 程序1清单 #include #include #include void main() { int i,l,s0=0,s=0; char a[17]; while(l!=16) { printf("请输入一个16位的二进制数:\n"); gets(a); l=strlen(a); for(i=0;i<16;i++) { if(a[i]!='0'&&a[i]!='1') {

printf("输入的二进制数不正确!!"); break; } } } if(a[15]=='1') s++; for(i=1;i<16;i++) { if(a[15-i]=='1') s+=(1<

说明:如果不是16位二进制则会提示错误。 2.将编写好的程序2输入、编译、连接并运行。 程序2清单 #include #include void main() { int t0,t1,t2,t3,i,j; int a[16]; printf("请输入一个十进制数:"); scanf("%d",&t0); t1=t0; for(i=0;i<16;i++) { t2=t1/2; if(t2>1) a[i]=t1%2; else if(t1==1) { a[0]=1; for(i=1;i<16;i++) a[i]=0; } else if(t1==2) { a[i]=0; a[i+1]=1; for(j=i+2;j<16;j++)

SQL-Server数据库上机实验报告

SQL-Server数据库上机实验报告

《数据库系统原理》上机实验报告 学号:1120131743 姓名:谈兆年 班级:07111301

一、实验目的与要求: ●熟练使用SQL语句 ●掌握关系模型上的完整性约束机制 二、实验内容 1:利用SQL语句创建Employee数据库 CREATE DATABASE Employee; 结果: 2:利用SQL语句在Employee数据库中创建人员表person、月薪表salary及部门表dept。 做法:按表1、表2、表3中的字段说明创建 表1 person表结构 字段名数据 类型 字段 长度 允许空 否 字段说明 P_no Char 6 Not Null 工号,主键P_na Varch10 Not 姓名

me ar Null Sex Char 2 Not Null 性别 Birth date Dateti me Null 出生日期 Prof Varch ar 10 Null 职称 Dept no Char 4 Not Null 部门代码,外键 (参照dept表)表2 salary表结构 字段名数据 类型 字段 长度 允许空 否 字段说明 P_no Char 6 Not Null 工号,主键,外键(参照person表) Base Dec 5 Null 基本工资Bonu s Dec 5 Null 奖金,要求>50 Fact Dec 5 Null 实发工资=基本工 资+奖金 Mont h Int 2 Not Null 月份

表3 dept表结构 字段名数据 类型 字段 长度 允许空 否 字段说明 Dept no Char 4 Not Null 部门代码,主键, Dna me Varch ar 10 Not Null 部门名称 程序为: CREATE TABLE dept( deptno CHAR(4) PRIMARY KEY NOT NULL, dname V ARCHAR(10) NOT NULL) CREATE TABLE Person( P_no CHAR(6) PRIMARY KEY Not Null, P_name V ARCHAR(10) Not Null, Sex CHAR(2) Not Null, Birthdate Datetime Null, Prof V ARCHAR(10) Null, Deptno CHAR(4) Not Null, FOREIGN KEY(Deptno) REFERENCES

PPT操作练习 上机实验报告

PPT操作练习上机实验报告 一、实验目的 ①掌握演示文稿制作的基本过程②按时文稿播放的基本操作 . 实验步骤:一、准备工作 1、在自己文件夹里建一个课件文件夹→双击打开此文件夹→建一个名为“素材”的文件夹。 2、搜集素材:包括声音、图片、影像、文字等,都存在“素材”文件夹内。 二、建立演示文稿 1、启动PowerPoint:双击桌面上的PowerPoint图标→选择“空演示文稿”→确定→选一版式→确定→选空白页→确定 2、保存:点“文件”菜单→保存→单击“保存位置”后面的“▼”→打开自己建的课件文件夹→在“文件名称”后面的框中输入文件名(中国山水画的意境)→保存。 3、关闭:点“X”按钮。 三、修饰、制作演示文稿 1打开已保存的课件:找到自己制作的课件保存的位置,双击打开课件。 (1)输入文字:插入→文本框→水平→到空白片按住鼠标左键拖动鼠标,在适当位置处松开→在所形成的方框内输入“体味中国传统文化的魅力”→输完后到框外空白处单击左键即可。 (2)修改文字:用鼠标将文字选中→设置“宋体、36、黑色”等。 在此输入一行字“____领略中国山水画的意境”并自定义动画:选中图标→右键→自定义动画→在“效果”下面的“动画和声音”处单击“▼”,选择一种动画。 (3)然后在当前页面插入音乐:插入→影片和→声音文件中的声音→在“素材”文件夹选一声音→确定→自动播放(放映幻灯片时声音自动播放)在插入的声音图标上点右键→编辑声音对象→单击“循环播放,直到停止”前的“□”,则埋单循环播放,否则只播放一次。 (4)设置声音播到第“4”张幻灯片后停止:单击声音图标→在图标上点右键→自定义动画→在“按动画顺序播放”前的“□”单击→继续幻灯片的放映→在下面的框内输入“4”→确定 2、插入新幻灯片:插入→新幻灯片→空白版式→确定。 3、插入艺术字:插入→图片→艺术字→选择简单版式→确定→输入文字→宋体、24号→确定。

计算机汇编上机实验报告

实验报告 、实验编号: 二、实验题目:顺序程序设计 三、实验类型:必做 四、实验目的: 1.了解汇编语言的程序结构。 2.理解汇编语言中由源程序文件到可执行文件的过程。 五、实验内容和步骤: 1、实验内容: 编程实现:当 X=5 时,求 Y=3X4+5X3+6X2+4X+2. 2、实验步骤: (1)首先对al.asm进行汇编连接生成 a1.exe文件。 (2)进行DEBUG程序并装入要调试的程序 a1.exe 女口: DEBUG a1.exe ;进入 DEBUG 并装配 a1.exe (3)反汇编,确定每条指令的地址。 -U ;从当前地址进行反汇编 —U200 ;从CS: 200处开始反汇编 反汇编可以确定断点地址,如:把断点地址设置在0120H处,则可以打入以下命令 (4)G命令来设置断点。 —G120 此时程序在0120H处停下,并显示出所有寄存器以及各标志位的当前值,在最后一行还给出下一条将要执行的指令的地址、机器语言和汇编语言,程序员可以从显示的内容来以解程序运行是否正确。 (5)观察数据段的内容,即观察内存的内容 —D DS: 0000 ;从数据段的0单元开始显示128个字节。 —D DS: 0000 0001;从数据段的0单元、1单元显示2个字节。 (6)退出DEBUG命令 —Q 六、实验结果: 145A:001E 83C002 ADD AX,+02 -u 145A:0021 A30100 MOV [0001],AX 145A:0024 B44C MOV AH,4C 145A:0026 CD21 INT 21 145A:0028 7509 JNZ 0033 145A:002A E83F26 CALL 266C 145A:002D 8946E8 MOV [BP-18],AX 145A:0030 E80D97 CALL 9740 145A:0033 F6065C3601 TEST BYTE PTR [365C],01 145A:0038 7405 JZ 003F

数据库上机实验报告

数据库实验 (第三次) 题目1 实验内容: 1. 检索上海产的零件的工程名称; 2. 检索供应工程J1零件P1的供应商号SNO; 3. 检索供应工程J1零件为红色的供应商号SNO; 4. 检索没有使用天津生产的红色零件的工程号JNO; 5. 检索至少用了供应商S1所供应的全部零件的工程号JNO; 6. 检索购买了零件P1的工程项目号JNO及数量QTY,并要求对查询的结果按数 量QTY降序排列。

1 select jname from j where jno in (select jno from spj where sno in (select sno from s where city ='上海' ) ); 2 select sno from spj where jno ='j1'and pno ='p1' 3

selectdistinct sno from spj where pno in (select pno from p where color='红'and pno in (select pno from spj where jno ='j1' ) ); 4 selectdistinct jno from spj where pno notin (select pno from p where color ='红'and pno in (select pno from spj where sno in (select sno from s where city ='天津' ) ) )

5 select jno from spj where sno ='s1' 6 select jno,qty from spj where pno ='p1' orderby qty desc 四﹑思考题 1.如何提高数据查询和连接速度。 建立视图 2. 试比较连接查询和嵌套查询 有些嵌套查询是可以用连接来代替的,而且使用连接的方式,性能要比 嵌套查询高出很多 当查询涉及多个关系时,用嵌套查询逐步求解结构层次清楚,易于构造,具有结构化程序设计的优点。但是相比于连接运算,目前商用关系数据库管理系统对嵌套查询的优化做的还不够完善,所以在实际应用中,能够用连接运算表达的查询尽可能采用连接运算。

C上机实验报告实验五

C上机实验报告实验五 This manuscript was revised by the office on December 22, 2012

实验五继承与派生 1.实验目的 1.学习定义和使用类的继承关系,定义派生类 2.熟悉不同继承方式下对基类成员的访问控制 3.学习利用虚基类解决二义性问题 2.实验要求 1.定义一个基类Animal,有私有整型成员变量age,构造其派生类dog,在其成员函数SetAge(intn)中直接给age赋值,看看会有什么问题,把age改为公有成员变量,还会有问题吗?编程尝试。 2.定义一个基类BaseClass,有整型变量Number,构造其派生类DerivedClass,观察构造函数和析构函数的执行情况。 3.定义一个车(vehicle)基类,具有Maxspeed、Weight等成员,Run、Stop 等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类。自行车(bicycle)类有高度(Height)等属性,汽车(motorcar)类有座位数(SeatNun)等属性。从bicycle和motorcar派生出摩托车(motorbicycle)类,在继承过程中,注意把vehicle设置为虚基类。如果不把vehicle设置为虚基类,会有什么问题?编程尝试。 3.实验内容及实验步骤 1.编写程序定义基类Animal,成员变量age定义为私有的。构造派生类dog,在其成员函数SetAge(intn)中直接对age赋值时,会出现类似以下的错误提示: errorC2248:‘age’:cannotaccessprivatememberdeclaredinclass‘Animal’errorC2248:‘age’:cannotaccessprivatememberdeclaredinclass‘Animal’把age改为公有成员变量后重新编译就可以了。程序名:lab7_1.cpp。 2.编写程序定义一个基类BaseClass,构造其派生类DerivedClass,在构造函数和析构函数中用cout输出提示信息,观察构造函数和析构函数的执行情况。程序名:lab7_2.cpp。 3.用debug功能跟踪程序lab7_2的执行过程,观察基类和派生类的构造函数和析构函数的执行情况。 4.编写程序定义一个车(vehicle)基类,由此派生出自行车(bicycle)类、汽车(motorcar)类,注意把vehicle派生为虚基类。再从bicycle和motorcar派生出摩托车(motorcycle)类,在main()函数中测试这个类。程序名:lab7_3.cpp。 编译成功后,把vehicle设置为非虚基类,再编译一次,此时系统报错,无法编译成功。这是因为若不把vehicle设置为虚基类,会出现二义性错误,程序不能成功编译。 4.思考题 1.如何在已有的类的基础上设计新的类?

数据库上机实验7实验报告

上机实验七——视图的建立及操作 一、实习目的: 掌握创建、删除、和查询视图的方法,验证可更新视图和不可更新视图。 二、实习准备: 1.复习第三章3.6节视图 2. 完成习题三第16题中的各项操作的SQL语句。 3.了解可更新视图和不课更新视图 三、实习内容:验证习题三第16题中的各项操作的SQL语句。 ①建立01311班选修了1号课程的学生视图Stu_01311_1 CREATE VIEW Stu_01311_1 AS SELECT * FROM Grade WHERE Cno='1'AND Sno in( SELECT Sno FROM Student WHERE Clno='01311') WITH CHECK OPTION ②建立01311班选修了1号课程并且成绩不及格的学生视图Stu_01311_2 CREATE VIEW Stu_01311_2 AS SELECT * FROM Grade

WHERE Cno='1'AND Gmark<60 AND Sno in( SELECT Sno FROM Student WHERE Clno='01311') WITH CHECK OPTION ③建立视图Stu_year,由学生学号、姓名、出生年份组成 CREATE VIEW Stu_year AS SELECT Sno,Sname,year=2001-Sage FROM Student ④查询1990年以后出生的学生姓名 SELECT Sname FROM Student WHERE 2001-Sage<1990; ⑤查询01311班选修了1号课程并且成绩不及格的学生的学号、姓名、出生年份SELECT Sno,Sname,2014-Sage FROM Student WHERE Clno=01311 AND EXISTS(

汇编实验报告..

合肥工业大学计算机与信息学院 实验报告 课程:汇编语言程序设计专业班级: 学号: 姓名:

实验一Debug程序的使用 一.实验目的 1、熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。 2、掌握8086/8088的寻址方式及多字节数据的处理方法。 二.实验内容 1、利用DEBUG程序中的“E”命令,将两个多字节数“003F1AE7H”和“006BE5C4H”分别送入起始地址为DS:0200H和DS:0204H两个单元中。 2、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H 单元和DS:0204H单元中的数据相加,并将运算结果存放在DS:0208H单元中。要求: 本次实验的内容均在DEBUG下完成,实现数据的装入、修改、显示;汇编语言程序段的编辑、汇编和反汇编;程序的运行和结果检查。 三.实验过程和程序 1、启动DOS操作系统 2、运行https://www.wendangku.net/doc/4517270128.html,程序(若当前盘为C) C:>DEBUG↙ – ;(“–”为DEBUG提示符,仅当屏幕出现该提示符后,才可输入DEBUG命令) 3、用“A”命令编辑和汇编源程序 –A ↙ 186E:0100 MOV AX,[0200]↙ 186E:0103 MOV BX,[0202]↙ 186E:0107 ADD AX,[0204]↙ 186E:010B ADC BX,[0206]↙ 186E:010F MOV [0208],AX↙ 186E:0112 MOV [020A],BX↙ 186E:0116 ↙ 4、用“U”命令反汇编验证源程序 –U CS:0100↙ 186E:0100 A10002 MOV AX,[0200] 186E:0103 8B1E0202 MOV BX,[0202] 186E:0107 03060402 ADD AX,[0204] 186E:010B 131E0602 ADC BX,[0206] 186E:010F A30802 MOV [0208],AX 186E:0112 891E0A02 MOV [020A],BX 186E:0116 – 注意:

数据库上机实验报告正式版

For the things that have been done in a certain period, the general inspection of the system is also a specific general analysis to find out the shortcomings and deficiencies 数据库上机实验报告正式 版

数据库上机实验报告正式版 下载提示:此报告资料适用于某一时期已经做过的事情,进行一次全面系统的总检查、总评价,同时也是一次具体的总分析、总研究,找出成绩、缺点和不足,并找出可提升点和教训记录成文,为以后遇到同类事项提供借鉴的经验。文档可以直接使用,也可根据实际需要修订后使用。 数据库上机实验报告 试验内容 1、数据表的建立 基本表《简单的》带有主键 带有外码约束的(外码来自其他表或者本表) 2、数据表的修改 添加删除列 修改列属性类型 添加删除约束(约束名) 元组的添加,修改,删除 删除数据表

试验过程 1、createtablestudent ( snochar(9)primarykey,/*sno是主码列级完整性约束条件*/ snamechar(20)unique,/*sname取唯一值*/ ssexchar(2), sagesmallint,/*类型为smallint*/ sdeptchar(20)/*所在系*/ ); createtablecourse ( cnochar(4)primarykey,/*列级完整性约束条件,cno是主码*/

cnamechar(40), cpnochar(4),/*cpno的含义是先行课*/ ccreditsmallint, foreignkey(cpno)referencescourse(cno) /*表级完整性约束条件,cpno是外码,被参照表是course,被参照列是 cno*/ ); createtablesc ( snochar(9), cnochar(4), gradesmallint,

C上机实验报告实验四

实验四数组、指针与字符串 1.实验目的 1.学习使用数组 2.学习字符串数据的组织和处理 3.学习标准C++库的使用 4.掌握指针的使用方法 5.练习通过Debug观察指针的内容及其所指的对象的内容 6.联系通过动态内存分配实现动态数组,并体会指针在其中的作用 7.分别使用字符数组和标准C++库练习处理字符串的方法 2.实验要求 1.编写并测试3*3矩阵转置函数,使用数组保存3*3矩阵。 2.使用动态内存分配生成动态数组来重新完成上题,使用指针实现函数的功能。 3.编程实现两字符串的连接。要求使用字符数组保存字符串,不要使用系统函数。 4.使用string类定义字符串对象,重新实现上一小题。 5.定义一个Employee类,其中包括姓名、街道地址、城市和邮编等属性,以及change_name()和display()等函数。Display()显示姓名、街道地址、城市和邮编等属性,change_name()改变对象的姓名属性。实现并测试这个类。 6.定义包含5个元素的对象数组,每个元素都是Employee类型的对象。 7. (选做)修改实验4中的选做实验中的people(人员)类。具有的属性如下:姓名char name[11]、编号char number[7]、性别char sex[3]、生日birthday、身份证号char id[16]。其中“出生日期”定义为一个“日期”类内嵌对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、聚集。在测试程序中定义people类的对象数组,录入数据并显示。 3.实验内容及实验步骤 1.编写矩阵转置函数,输入参数为3*3整形数组,使用循环语句实现矩阵元素的行列对调,注意在循环语句中究竟需要对哪些元素进行操作,编写main()函数实现输入、输出。程序名:lab6_1.cpp。 2.改写矩阵转置函数,参数为整型指针,使用指针对数组元素进行操作,在main()函数中使用new操作符分配内存生成动态数组。通过Debug观察指针的内容及其所指的对象中的内容。程序名:lab6_2.cpp。 3.编程实现两字符串的连接。定义字符数组保存字符串,在程序中提示用户输入两个字符串,实现两个字符串的连接,最后用cout语句显示输出。程序名:lab6_3.cpp。用cin实现输入,注意,字符串的结束标志是ASCII码0,使用循环语句进行字符串间的字符拷贝。 4.使用string类定义字符串对象,编程实现两字符串的连接。在string类中已重载了运算符“+=”实现字符串的连接,可以使用这个功能。程序名:lab6_4.cpp。 5.在employee.h文件中定义Employee类。Employee类具有姓名、街道地址、城市和邮编等私有数据成员,在成员函数中,构造函数用来初始化所有数据成员;display()中使用cout显示

《大学计算机基础》上机实验报告

《大学计算机基础》 上机实验报告 班级: 姓名: 学号: 授课教师: 日期:年月日

目录 一、Windows操作系统基本操作......................................................... - 1 - 二、Word文字处理基本操作 .............................................................. - 4 - 三、Excel电子表格基本操作 ............................................................ - 6 - 四、PowerPoint幻灯片基本操作....................................................... - 8 - 五、网页设计基本操作 ...................................................................... - 9 - 六、Access数据库基本操作 ............................................................ - 10 - 上机实验作业要求: ○1在实验报告纸上手写并粘贴实验结果; ○2每人将所有作业装订在一起(要包封面); ○3全部上机实验结束后全班统一上交; ○4作业内容不得重复、输入的数据需要有差别。

实验名称一、Windows操作系统基本操作 实验目的1、掌握Windows的基本操作方法。 2、学会使用“画图”和PrntScr快捷键。 3、学会使用“计算器”和Word基本操作。 实验内容1、日历标注 利用“画图”和Word软件,截取计算机上日历的图片并用文字、颜色、图框等标注出近期的节假日及其名称,并将结果显示保存在下面(参考下面样图)。 运行结果是: 主要操作步骤是: 2、科学计算 利用“计算器”和Word软件,计算下列题目,并将结果截图保存在下面(参考样图)。 ○1使用科学型计算器,求8!、sin(8)、90、74、20、67、39、400、50.23、ln(785)的平均值、和值,并用科学计数法显示。 运行结果是: ②将以下十、八、十六进制数转换为二进制数:(894.8125)10、(37.5)8、(2C.4B)16 运行结果是:(需要下载使用“唯美计算器”) ○3计算下列二进制数的加法与乘法:101.1+11.11;1101*1011 运行结果是:(参考样图) 写出主要操作步骤: 3、实验心得体会

计算机汇编上机实验报告

实验报告 1 二、实验题目:顺序程序设计 三、实验类型:必做 四、实验目的: 1.了解汇编语言的程序结构。 2.理解汇编语言中由源程序文件到可执行文件的过程。 五、实验内容和步骤: 1、实验内容: 编程实现:当X=5时,求Y=3X4+5X3+6X2+4X+2. 2、实验步骤: (1)首先对a1.asm进行汇编连接生成a1.exe文件。 (2)进行DEBUG程序并装入要调试的程序a1.exe。 如:DEBUG a1.exe;进入DEBUG并装配a1.exe (3)反汇编,确定每条指令的地址。 -U ;从当前地址进行反汇编 -U200;从CS:200处开始反汇编 反汇编可以确定断点地址,如:把断点地址设置在0120H处,则可以打入以下命令 (4)G命令来设置断点。 -G120 此时程序在0120H处停下,并显示出所有寄存器以及各标志位的当前值,在最后一行还给出下一条将要执行的指令的地址、机器语言和汇编语言,程序员可以从显示的内容来以解程序运行是否正确。 (5)观察数据段的内容,即观察内存的内容 -D DS:0000;从数据段的0单元开始显示128个字节。 -D DS:00000001;从数据段的0单元、1单元显示2个字节。 (6)退出DEBUG命令 -Q 六、实验结果: 145A:001E 83C002 ADD AX,+02 -u 145A:0021 A30100 MOV [0001],AX 145A:0024 B44C MOV AH,4C 145A:0026 CD21 INT 21 145A:0028 7509 JNZ 0033 145A:002A E83F26 CALL 266C 145A:002D 8946E8 MOV [BP-18],AX 145A:0030 E80D97 CALL 9740 145A:0033 F6065C3601 TEST BYTE PTR [365C],01 145A:0038 7405 JZ 003F

数据库上机实验报告4

数据库上机实验报告 4 学号:姓名:日期:年月日 实验目的:(1)练习连接查询;(2)练习视图的创建与使用;(3)学习使用ODBC的方法;(4)体验T-SQL的功能;体验存储过程的功能;体验表值函数、标量值函数的作用;体验ranking等功能。 1 练习视图及连接查询。 (1)创建一个视图,视图名为viNF,视图内容为select id,count(*) as nf from friends group by id。执行成功后,将SQL语句复制到下方。 (2)基于viNF视图,查找拥有最多好友的用户、最少好友的用户。执行成功后,将SQL语句复制到下方。 (3)基于users表和viNF视图进行连接查询。分别进行内连接、全外连接、左外连接、右外连接四种操作。执行成功后,将SQL语句复制到下方,并回答:四种结果表,哪两个的结果是一致的,为什么? (4)将题(3)中全外连接保存为一个新的视图viUAF。 2 通过ODBC用Excel打开users表。 3 体验T-SQL。 回顾实验2中的题目: 定义最低价格为成本价;依据此成本价做如下计算: 连接Goods,Goods_Extent,Sellers表,按照总利润,输出前10名;要求输出表的格式为(商品名称,卖家名称,商品价格,运费,卖家信誉,卖家好评率,历史销量,历史利润,期内销量,期内利润,总销量,总利润) 利用如下语句进行查询,体会和之前有什么不同。如感兴趣,自己可以仿照写一个变量定义、赋值及应用的例子。 declare @cost as float; select @cost=min(good_price)from goods; select top 10 good_name as商品名称, goods.seller_name as卖家名称, good_price as商品价格, good_shipping as运费,

C程序设计上机实验报告11

C程序设计实验报告 实验名称:指针与字符串学时安排:2课时 实验类别:上机操作型实验要求:1人1组 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 一、实验目的 1. 掌握通过指针操作字符串的方法; 二、实验设备介绍 软件需求: Visual C++ 6.0或CFree3.5以上版本 硬件需求: 对于硬件方面的要求,建议配置是Pentium III 450以上的CPU 处理器,64MB以上的内存,200MB的自由硬盘空间、CD-ROM驱动器、能支持24位真彩色的显示卡、彩色显示器、打印机。 三、实验内容 1.输入一个字符串t和一个正整数m,讲t中从第m个(m小于字符串长度)字符开始的全部字符复制的字符串s中,再输出字符串s。要求用字符指针定义并调用函数strmcpy(s, t, m),它的功能是将字符串t中从第m个字符开始的全部字符复制到字符串s中。示例如下:Input a string: happy new year! Input an integers: 7 Output is: new year! 2. 编写一个函数delchar(s, c),该函数将字符串s中出现的所有c字符删除。自己定义main 函数,并在其中调用delchar(s,c)函数。D此大锅饭 3. 改正程序error08_ 4.cpp中的错误。函数strc的作用是将字符串s连接到t的尾部。在

主函数中输入两个字符串s和t,调用strc完成字符串的连接。输入输出结果如下所示:World! Hello HelloWorld! 要求把正确的代码(按规范缩进)写入报告,并以注释的方式说明错误原因。 注释示例如下: int i; /*循环控制变量不能定义为double类型*/ 4. 编程判断输入的一串字符是否为“回文”,如果是输出“Yes”,否则输出“No”。所谓“回文”,是指顺读和倒读都一样的字符串。如“XYZYX”和“xyzzyx”都是回文。 四、程序清单 第一题 #include void strmcpy(char str[],char t[],int m){ int i=0,n; char *s; s=str; for(s+=m-1;*s!=0;s++) { t[i]=*s; i++; } printf("Output is:"); for(n=0;n

8086软硬件实验报告(微机原理与接口技术上机实验)

实验一实验环境熟悉与简单程序设计 实验目的 (1)掌握DEBUG调试程序的使用方法。 (2)掌握简单程序的设计方法。 实验内容 编程将BH中的数分成高半字节和低半字节两部分,把其中的高半字节放到DH中的低4位(高4位补零),把其中的低半字节放到DL中的低4位(高4位补零)。如: BH=10110010B 则运行程序后 DH=00001011B DL=00000010B 实验准备 (1)熟练掌握所学过的指令。 (2)根据实验内容,要求预先编好程序。 实验步骤 (1)利用DEBUG程序输入、调试程序。 (2)按下表要求不断地修改BH的内容,然后记录下DX的内容。 实验报告 (1)给出程序清单。 (2)详细说明程序调试过程。

程序: CODE SEGMENT START : MOV BH,00111111B MOV AL,BH MOV CL,4 SHR AL,CL MOV DH,AL MOV AL,BH AND AL,00001111B MOV DL,AL MOV CL,0 CODE ENDS END START

实验二简单程序设计 实验目的 (3)掌握DEBUG调试程序的使用方法。 (4)掌握简单程序的设计方法。 实验内容 试编写一个汇编语言程序,要求实现功能:在屏幕上显示:Hello world My name is Li Jianguo 参考程序如下:(有错) data segment out1 db 'Hello world' ax db 'My name is Li Jianguo' data ens code segment assume cs:code;ds:data lea dx,out1 mov ah,2 int 21h mov dl,0ah mov ah,2

数据库上机实验报告 总结

重庆邮电大学移通学院 数据库集中上机报告 学生:马志鹏 学号: 022******* 班级: 02210901 专业:计算机应用技术 重庆邮电大学移通学院 2011年6月

第一天:Access数据库基本操作 1 实验目的 1、熟悉的掌握Access数据库结构与创建 2、了解创建、修改、删除、查询、保存等操作 3、输入数据创建、设计器创建、向导创建。 2 实验内容 3 实验结果 1. 2. 2

重庆邮电大学移通学院 3 2 Access 数据表的编辑 第二天 数据表基本操作 1 表关系与编辑数据 1 实验目的: 1、实现一对一,一对多,多对多的实体关系 2、对“学生基本信息”表中的记录进行排序,按出生日期降序排列 3、从“学生基本信息”表中筛选出所有计算机系男生的记录 4、从“学生基本信息”表中筛选出回族和蒙古族的所有学生记录

2 实验内容 1. SELECT 学生基本信息表.学生姓名, 成绩档案表.* FROM 成绩档案表INNER JOIN 学生基本信息表ON 成绩档案表.学生学号= 学生基本信息表.学生学号 WHERE (((学生基本信息表.学生姓名)="张冰冰")); 2 SELECT 学生基本信息表.* FROM 学生基本信息表 WHERE (((学生基本信息表.性别)="男") AND ((学生基本信息表.班级名称)="计算机系")); 3 SELECT 成绩档案表.C语言, 课程表.* FROM 成绩档案表, 课程表; 4 SELECT 学生基本信息表.*, 学生基本信息表.性别, 学生基本信息表.班级名称FROM 学生基本信息表WHERE (((学生基本信息表.性别)<>"男") AND ((学生基本信息表.班级名称)<>"计算机系")); 5 SELECT 学生基本信息表.*, 学生基本信息表.出生日期 FROM 学生基本信息表WHERE (((Month([出生日期]))=9) AND ((Day([出生日期]))=1)); 6 SELECT 学生基本信息表.* FROM 学生基本信息表WHERE (((学生基本信息表.学生姓名) Like "李*")); 3 实验结果 4

c上机实验报告

实验五继承与派生 实验目的 1.学习定义和使用类的继承关系,定义派生类 2.熟悉不同继承方式下对基类成员的访问控制 3.学习利用虚基类解决二义性问题 实验要求 1?定义一个基类Animal,有私有整型成员变量age,构造其派生类dog,在其成员函数SetAge (int n)中直接给age赋值,看看会有什么问题,把age改为公有成员变量,还会有问题吗?编程尝试。 2?定义一个基类BaseClass有整型变量Number,构造其派生类 DerivedClass观察构造函数和析构函数的执行情况。 3.定义一个车(vehicle)基类,具有Maxspeed、Weight 等成员,Run、Stop 等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类。自行车 (bicycle)类有高度(Height)等属性,汽车(motorcar)类有座位数 (SeatNun)等属性。从bicycle和motorcar 派生出摩托车(motorbicycle)类,在继承过程中,注意把vehicle设置为虚基类。如果不把vehicle设置为虚基类,会有什么问题?编程尝试。 实验内容及实验步骤 1?编写程序定义基类Animal,成员变量age定义为私有的。构造派生类dog,在其成员函数SetAge (int n)中直接对age赋值时,会出现类似以下的错误提示: error C2248: ‘age':cannot access private member declared in class C2248: ‘ age' :cannot access privateer declared in class 把Agm改为公 有成员变量后重新编译就可以了。程序名:。 错误代码: #include using namespace std; class Animal

计算机组成原理上机实验报告

《计算机组成原理实验》课程实验报告 实验题目组成原理上机实验 班级 1237-小 姓名 学号 时间 2014年5月 成绩

实验一基本运算器实验 1.实验目的 (1)了解运算器的组成原理 (2)掌握运算器的工作原理 2.实验内容 输入数据,根据运算器逻辑功能表1-1进行逻辑、移位、算术运算,将运算结果填入表1-2。 表 1-1运算器逻辑功能表 表1-2运算结果表

3.实验原理 本实验的原理如图1-1所示。 运算器内部含有三个独立运算部件,分别为算术、逻辑和移位运算部件,要处理的数据存于暂存器 A 和暂存器 B,三个部件同时接受来自 A 和 B 的数据(有些处理器体系结构把移位运算器放于算术和逻辑运算部件之前,如 ARM),各部件对操作数进行何种运算由控制信号S3…S0和 CN 来决定,任何时候,多路选择开关只选择三部件中一个部件的结果作为 ALU 的输出。如果是影响进位的运算,还将置进位标志 FC,在运算结果输出前,置 ALU 零标志。ALU 中所有模块集成在一片 CPLD 中。 图 1-1 运算器原理图 逻辑运算部件由逻辑门构成,较为简单,而后面又有专门的算术运算部件设计实验,在此对这两个部件不再赘述。移位运算采用的是桶形移位器,一般采用交叉开关矩阵来实现,交叉开关的原理如图1-2所示。 图1-2中显示的是一个 4X4 的矩阵(系统中是一个 8X8 的矩阵)。每一个输入都通过开关与一个输出相连,把沿对角线的开关导通,就可实现移位功能,即: (1)对于逻辑左移或逻辑右移功能,将一条对角线的开关导通,这将所有的输入位与所使用的输出分别相连,而没有同任何输入相连的则输出连接 0。 (2)对于循环右移功能,右移对角线同互补的左移对角线一起激活。例如,在 4 位矩阵中使用‘右1’和‘左3’对角线来实现右循环 1 位。 (3)对于未连接的输出位,移位时使用符号扩展或是 0 填充,具体由相应的指令控制。使用另外的逻辑进行移位总量译码和符号判别。 运算器部件由一片 CPLD 实现。ALU 的输入和输出通过三态门 74LS245 连到 CPU 内总线上,另外还有指示灯标明进位标志 FC 和零标志 FZ。请注意:实验箱上凡丝印标注有马蹄形标记‘’,表示这两根排针之间是连通的。图中除 T4 和 CLR,其余信号均来自于 ALU 单元的排线座,实验箱中所有单元的 T1、T2、T3、T4 都连接至控制总线单元的 T1、T2、T3、T4,CLR 都连接至 CON 单元的 CLR 按钮。T4 由时序单元的 TS4 提供(时序单元的介绍见附录二),其余控制信号均由 CON 单元的二进制数据开关模拟给出。控制信号中除 T4 为脉冲信号外,其余均为电平信号,其中 ALU_B 为低有效,其余为高有效。 暂存器 A 和暂存器 B 的数据能在 LED 灯上实时显示,原理如图1-3 所示(以 A0 为例,其

汇编语言程序设计实验报告

微机原理实验报告 实验名称汇编语言程序设计 一、实验目的 1、掌握Lab6000p实验教学系统基本操作; 2、掌握8088/8086汇编语言的基本语法结构; 3、熟悉8088/8086汇编语言程序设计基本方法 二、实验设备 装有emu8086软件的PC机 三、实验内容 1、有一个10字节的数组,其值分别是80H,03H,5AH,FFH,97H, 64H,BBH,7FH,0FH,D8H。编程并显示结果: 如果数组是无符号数,求出最大值,并显示; 如果数组是有符号数,求出最大值,并显示。 2、将二进制数500H转换成二-十进制(BCD)码,并显示“500H 的BCD是:” 3、将二-十进制码(BCD)7693转换成ASCII码,并显示“BCD 码7693的ASCII是:” 4、两个长度均为100的内存块,先将内存块1全部写上88H,再 将内存块1的内容移至内存块2。在移动的过程中,显示移动次数1, 2 ,3…0AH…64H(16进制-ASCII码并显示子程序) 5、键盘输入一个小写字母(a~z),转换成大写字母 显示:请输入一个小写字母(a~z): 转换后的大写字母是: 6、实现4字节无符号数加法程序,并显示结果,如99223344H +

99223344H = xxxxxxxxH

四、实验代码及结果 实验代码见代码附录 1.1程序运行结果 图1 无符号最大值结果截图 1.1 程序运行结果

图2 有符号最大值截图2.0 程序运行结果

图3 BCD码显示3.0 程序运行结果

图4 ASCII码显示4.0 程序运行结果

相关文档