openMP实验总结报告

openMP实验总结报告
openMP实验总结报告

openMP实验报告

目录

openMP实验报告.............................................. 错误!未定义书签。

OpenMP简介.............................................. 错误!未定义书签。

实验一................................................... 错误!未定义书签。

实验二................................................... 错误!未定义书签。

实验三................................................... 错误!未定义书签。

实验四................................................... 错误!未定义书签。

实验五................................................... 错误!未定义书签。

实验六................................................... 错误!未定义书签。

实验七................................................... 错误!未定义书签。

实验八................................................... 错误!未定义书签。

实验总结................................................. 错误!未定义书签。

在学习了MPI之后,我们又继续学习了有关openMP的并行运算,通过老师的细致讲解,我们对openMP有了一个初步的了解:

OpenMP简介

OpenMP是一种用于共享内存并行系统的多线程程序设计的库(Compiler Directive),特别适合于多核CPU上的并行程序开发设计。它支持的语言包括:C 语言、C++、Fortran;不过,用以上这些语言进行程序开发时,并非需要特别关注的地方,因为现如今的大多数编译器已经支持了OpenMP,例如:Sun Compiler,GNU Compiler、Intel Compiler、Visual Studio等等。程序员在编程时,只需要在特定的源代码片段的前面加入OpenMP专用的#pargma omp预编译指令,就可以“通知”编译器将该段程序自动进行并行化处理,并且在必要的时候加入线程同步及通信机制。当编译器选择忽略#pargma omp预处理指令时,或者编译器不支持OpenMP时,程序又退化为一般的通用串行程序,此时,代码

依然可以正常运作,只是不能利用多线程和多核CPU来加速程序的执行而已。

OpenMP使得程序员可以把更多的精力投入到并行算法本身,而非其具体实现细节。对基于数据分集的多线程程序设计,它是一个很好的选择。同时,使用OpenMP也提供了更强的灵活性,可以较容易的适应不同的并行系统配置。线程粒度和负载平衡等是传统多线程程序设计中的难题,然而,在OpenMP中,OpenMP 库从程序员手中接管了部分这两方面的工作,从而使得程序员可以更加专注于具体的算法本身,而非如何编程使得代码在CPU负载平衡和线程粒度方面做出平衡。但是,作为高层抽象,OpenMP并不适合需要复杂的线程间同步和互斥的场合。OpenMP的另一个缺点是不能在非共享内存系统(如计算机集群)上使用。在这样的系统上,MPI使用较多。

实验步骤:通过编写了一些程序,验证了关于openMP的一些简单的性质。实验一

代码:

#include ""

#include

#include

int main(int argc, char *argv[])

{

int id, numb;

omp_set_num_threads(3);

#pragma omp parallel private(id, numb)

{

id = omp_get_thread_num();

numb = omp_get_num_threads();

printf("I am thread %d out of %d \n", id, numb);

}

system("pause");

return 0;

}

实验结果:

可以看到,因为三个进程同步执行,所以输出顺序是乱序的,就是表示运行优先级相同。当把进程数改成10的时候,得到下面的结果:

与上面的到的结论(并行并行运算)相同。

实验二

代码:

#include ""

#include

#include

int main(int argc, char *argv[])

{

int id;

omp_set_num_threads(2);

#pragma omp parallel

{

printf("what will you see\n");

#pragma omp for

for( int i = 1; i <= 5; ++i )

{

printf( " i = %d of %d\n", i,omp_get_thread_num() );

printf("How many answers\n");

}

}

system("pause");

return 0;

}

实验运行结果:

可以看到,在设置进程为2的情况之下,运算(计算规模)被等可能的分配给各个进程。

实验三

代码:

#include

#include

#include <>

int main()

{

#pragma omp parallel sections

实验四

代码:

#include

#include

#include<>

int main()

{

#pragma omp parallel

{

for (int i = 0; i < 100; ++i)

{

std::cout << i << "+" << std::endl;

}

#pragma omp barrier

for (int j = 0; j < 10; ++j)

{

std::cout << j << "-" << std::endl;

}

}

system("pause");

return 0;

}

运行结果:

结果分析:

在语句 #pragma omp barrier 的作用下,只有当上面所有的进程计算工作全部完成之后,才会继续barrier之后的工作。

实验五

代码:

#include

#include

#include

#include <>

using namespace std;

int main()

{

int sum = 0;

cout << "Before: " << sum << endl; #pragma omp parallel for

for(int i = 0; i < 100; i++)

{

#pragma omp critical (a)

{

sum += i;

sum += i * 2;

}

}

cout << "After: " << sum << endl;

system("pause");

return 0;

}

运行结果:

结果分析:

CRITICAL指令指定一块同一时间只能被一条线程执行的代码区域

各个线程还是并行执行for里面的语句,但当你们执行到critical里面时,要注意有没有其他线程正在里面执行,如果有的话,要等其他线程执行完再进去执行。

实验六

代码:

#include

#include

#include

#include<>

using namespace std;

#define NUM_THREADS 2

static long num_steps = 100000;

int main()

{

int i, id;

double x, pi, sum = ;

double step = / (double) num_steps;

omp_set_num_threads(NUM_THREADS);

#pragma omp parallel private(x, i, id) reduction(+:sum) {

id = omp_get_thread_num();

for(i = id + 1; i <= num_steps; i = i + NUM_THREADS)

{

x = (i - * step;

sum += / + x * x);

}

}

pi = sum * step;

printf("pi = %.12f\n", pi);

system("pause");

return 0;

}

运行结果:

结果分析:

很简单,通过并行运算,发挥计算机多核的优势,自然能够较单核计算更快的得出计算结果,但是要注意计算机的核数是有限制的,不能无限扩大并行计算线程。

实验七

代码:

#include

#include

#include

#include<>

using namespace std;

int i = 0, sum1, sum2, sum3, sum;

int main()

{

#pragma omp parallel sections num_threads(3) {

#pragma omp section

for(i = 0; i < 100; i++)

sum1 += i;

#pragma omp section

for(i = 100; i < 200; i++)

sum2 += i;

#pragma omp section

for(i = 200; i < 300; i++)

sum3 += i;

}

sum = sum1 + sum2 + sum3;

printf("sum = %d\n", sum);

system("pause");

return 0;

}

运行结果:

结果分析:

这里需要将累计求和值得部分和分配给几个变量的原因是:当多个线程并行执行时,有可能多个线程同时对某变量进行了读写操作,从而导致不可预知的结果,因为多线程计算如果只设置一个sum,每次增加的值可能是不同进程的,从而导致运算结果混乱,但是如果把不同进程的计算结果分别保存,这样就不会出现结算结果错误的问题。

实验八

将openMP 与之前学习过的MPI实验进行综合,通过计算PI的运算时间的比较得出结论

代码:

#include<>

#include<>

#include""

staticlong num_steps = 100000;

#define NUM_THREADS 4

void main(int argc, char* argv[])

{

int i_start, i_end, i, myid, numprocs;

double pi, mypi, x, step, sum = ;

double start, end;

MPI_Init(&argc, &argv);

MPI_Comm_size(MPI_COMM_WORLD, &numprocs);

MPI_Comm_rank(MPI_COMM_WORLD, &myid);

if(myid == 0)

{

start = MPI_Wtime();

}

MPI_Bcast(&num_steps, 1, MPI_INT, 0, MPI_COMM_WORLD);

i_start = myid * (num_steps / numprocs);

i_end = i_start + (num_steps / numprocs);

step = / (double) num_steps;

omp_set_num_threads(NUM_THREADS);

#pragma omp parallel private(x, i) reduction(+:sum) for( i = i_start; i < i_end; i += NUM_THREADS)

{

x = (i + * step;

sum = sum + / + x * x);

}

mypi = step * sum;

MPI_Reduce(&mypi, &pi, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD);

if(myid == 0)

{

printf("Pi = %f\n", pi);

end = MPI_Wtime();

printf("Run time is : %.10f\n", end - start);

fflush(stdout);

}

MPI_Finalize();

}

实验结果:

实验结果分析:

MPI与openMP的主要区别在于:OpenMP:线程级(并行粒度);共享存储;隐式(数据分配方式),可扩展性差,MPI:进程级;分布式存储;显式;可扩展性好。

在这里,我们将MPI作为一个消息传递机制,在计算机集群之间传递不同进程计算的结果的值,在集群中的单台计算机上使用openMP进行多线程编程,即通过MPI的分布式有点综合openMP的共享内存计算方式来共同结合,从而提高运算效率。由实验结果我们可以得知,如果仅仅是使用MPI或者仅仅使用opnMP 的情况下,都只能部分程度上达到并行计算的效果,而两者进行综合的话,就可以尽最大可能的发挥计算机集群的运算威力。

实验总结

这次实验,是我们在之前学习过的MPI的基础之上,通过对openMP的学习,进一步了解了关于计算机多核多进程计算的概念。实验过程中,遇到各种各样的

问题,老师耐心的予以一一解答。关于MPI与openMP,具体来说,在OpenMp并行编程中,主要针对细粒度的循环级并行,主要是在循环中将每次循环分配给各个线程执行,主要应用在一台独立的计算机上;在MPI并行编程中,采用粗粒度级别的并行,主要针对分布式计算机进行的,它将任务分配给集群中的所有电脑,来达到并行计算; OpenMp+MPI混合编程,多台机器间采用MPI分布式内存并行且每台机器上只分配一个MPI进程,而各台机器又利用OpenMP进行多线程共享内存并行。

感觉这些实验能够是我们对于计算机的高性能计算的一些方式有了一个初步的了解,眼下大数据集中爆发的时代,这种高性能计算的人门式教育更加显得有必要。

北京理工大学汇编实验报告3

北京理工大学汇编实验报告3

本科实验报告实验名称:实验三字符串操作实验 课程名称: 课程设计Ⅰ(CPU与汇编)(实 验)实验时间: 第5-10周周五 下午 任课教师:聂青实验地点:10-102 实验教师:苏京霞 实验类型:?原理验证□综合设计□自主创新 学生姓名:罗逸雨 学号/班级:1120141208 05211401 组号:3 学院:信息与电子学院同组搭档: 专业:通信工程成绩:

CX 中值减 1,当 CX 中值减至 0 时,停止重复执行,继续执行下一条指令。当REP无条件重复前缀,重复串操作直到计数寄存器的内容 CX 为0为止。经常与REP 配合工作的字符串处理指令有MOVS、STOS和LODS。 当REPE/REPZ判断计数寄存器的内容 CX 是否为0或ZF=0(即比较的两个操作数不等),只要满足一个则重复执行结束,否则继续执行。可以与 REPE/REPZ 配合工作的串指令有CMPS和SCAS。 当REPNE/REPNZ判断计数寄存器的内容是否为0或ZF=1(即比较的两个操作数相等),只要满足一个则重复执行结束,否则继续执行。可以与 REPE/REPZ 配合工作的串指令有CMPS和SCAS。 3)字符串操作指令 lodsb、lodsw:把DS:SI指向的存储单元中的数据装入AL或AX,然后根据 DF 标志增减 SI; stosb、stosw:把AL或AX中的数据装入ES:DI指向的存储单元,然后根据 DF 标志增减 DI; movsb、movsw:把 DS:SI 指向的存储单元中的数据装入ES:DI指向的存储单元中,然后根据 DF标志分别增减SI和DI; scasb、scasw:把AL或AX 中的数据与ES:DI 指向的存储单元中的数据相减,影响标志位,然后根据DF标志分别增减SI和DI; cmpsb、cmpsw:把DS:SI 指向的存储单元中的数据与 ES:DI 指向的存储单元中的数据相减,影响标志位,然后根据DF标志分别增减SI和DI; rep:重复其后的串操作指令。重复前先判断 CX 是否为0,为0就结束重复,否则CX减1,重复其后的串操作指令。主要用在MOVS和STOS前。一般不用在 LODS 前。 上述指令涉及的寄存器:段寄存器DS和ES、变址寄存器SI和DI、累加器 AX、计数器CX。 涉及的标志位:DF、AF、CF、OF、PF、SF、ZF。 三、实验步骤 1) 编写程序,比较两个字符串BUF1和BUF2所含的字符是否相同,相同则AL 返回0,不同AL返回1,字符串长度要求自动获取,要求用字符串处理方法。提示:输入两个字符串之后,将串操作所必须的寄存器等参数设置好,然后使用串操作指令进行从头到尾的比较,两个字符串相等的条件是串长度相等且对应的字符相同。 2) 编写程序,设有一字符串存放在以BUF为首址的数据区中,其最后一字符‘$’作为结束标志,计算该字符串的长度并输出。提示:从串的第一个字符开始统计,直到遇到定义的字符串结束符为止,看看在这个过程中总共有多少个字符,

数据分析实验报告

数据分析实验报告 文稿归稿存档编号:[KKUY-KKIO69-OTM243-OLUI129-G00I-FDQS58-

第一次试验报告 习题1.3 1建立数据集,定义变量并输入数据并保存。 2数据的描述,包括求均值、方差、中位数等统计量。 分析—描述统计—频率,选择如下: 输出: 统计量 全国居民 农村居民 城镇居民 N 有效 22 22 22 缺失 均值 1116.82 747.86 2336.41 中值 727.50 530.50 1499.50 方差 1031026.918 399673.838 4536136.444 百分位数 25 304.25 239.75 596.25 50 727.50 530.50 1499.50 75 1893.50 1197.00 4136.75 3画直方图,茎叶图,QQ 图。(全国居民) 分析—描述统计—探索,选择如下: 输出: 全国居民 Stem-and-Leaf Plot Frequency Stem & Leaf 5.00 0 . 56788 数据分析实验报告 【最新资料,WORD 文档,可编辑修改】

2.00 1 . 03 1.00 1 . 7 1.00 2 . 3 3.00 2 . 689 1.00 3 . 1 Stem width: 1000 Each leaf: 1 case(s) 分析—描述统计—QQ图,选择如下: 输出: 习题1.1 4数据正态性的检验:K—S检验,W检验数据: 取显着性水平为0.05 分析—描述统计—探索,选择如下:(1)K—S检验

结果:p=0.735 大于0.05 接受原假设,即数据来自正太总体。 (2 )W 检验 结果:在Shapiro-Wilk 检验结果972.00 w ,p=0.174大于0.05 接受原假设,即数据来自正太总体。 习题1.5 5 多维正态数据的统计量 数据:

汇编实验报告(详细版)

计算机组成与汇编语言(实验报告) 内容: 实验一、六、七、八 院系专业:计算机学院计算机科学与技术 姓名: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++)

汇编实验报告

南华大学 实验名称:汇编语言程序设计实验 学院:计算机学院 专业班级:本2010 电气信息类03班 学号:20104030342 姓名:谢志兴 指导教师:刘芳菊 日期:2012 年 6 月10 日

实验一DEBUG的熟悉 一、实验目的 (1)学习使用DEBUG的命令; (2)使用DEBUG命令在数据段中查看程序运行的结果; (3)利用DEBUG运行简单的程序段。 二、实验内容 1)输入程序观察寄存器变化 使用DEBUG命令,将下面的程序段写入内存,逐条执行,观察每条指令执行后,CPU中相关寄存器的内容变化。注意用T命令执行时,CS: IP寄存器的内容。 MOV AX, 4E20 ADD AX, 1416 MOV BX, 2000 ADD AX, BX MOV BX, AX ADD AX, BX MOV AX, 001A MOV BX, 0026 ADD AL, BL ADD AH, BL ADD BH, AL MOV AH, 0 ADD AL, BL ADD AL, 9C 2)输入下面的程序,这是一个两个数相与的程序。结果存放在MSG2单元中,偏移地址为?值为多少? DSEG SEGMENT MSG1 DW 7856H, 2038H MSG2 DW? DSEG ENDS CSEG SEGMENT ASSUME CS: CSEG, DS: DSEG

START: MOV AX, DSEG MOV DS, AX MOV AX, MSG1 AND AX, MSG1+2 MOV MSG2, AX MOV AL, 0 MOV AH, 4CH INT 21H CSEG ENDS END START 程序的跟踪执行操作 在DOS下直接输入文件主名就可以执行文件了,有的程序会显示结果,可能执行后什么结果都没有,是因为程序中没有显示命令。那么如何查看程序的运行结果呢? 程序执行过程的跟踪操作步骤如下: (1)在DOS下输入:DEBUG 文件名.EXE (2)在DEBUG提示符下输入U命令 如果程序中有数据段,可以看到反汇编后第一句可执行语句为: A地址:B地址MOV AX, K地址如:1261:0000 MOV AX, 1260 其中:K地址就是数据段的段寄存器内容,A地址为代码段段寄存器地址,B地址为程序第一条指令的偏移地址。 (3)可以用T命令单步执行指令,执行到MOV AH, 4CH时结束,也可以用G命令执行整个程序,输入:G=B地址(如:G=0000) (4)用D命令查看程序执行后数据段的变化 输入:D K地址:0 (如:D1260:0)

大数据分析技术与应用_实验2指导

目录 1实验主题 (1) 2实验目的 (1) 3实验性质 (1) 4实验考核方法 (1) 5实验报告提交日期与方式 (1) 6实验平台 (1) 7实验内容和要求 (1) 8实验指导 (2) 8.2 开启Hadoop所有守护进程 (2) 8.2 搭建Eclipse环境编程实现Wordcount程序 (3) 1.安装Eclipse (3) 2.配置Hadoop-Eclipse-Plugin (3) 3.在Eclipse 中操作HDFS 中的文件 (7) 4.在Eclipse 中创建MapReduce 项目 (8) 5.通过Eclipse 运行MapReduce (13) 6.在Eclipse 中运行MapReduce 程序会遇到的问题 (16)

1实验主题 1、搭建Hadoop、Eclipse编程环境 2、在Eclipse中操作HDFS 3、在Eclipse中运行Wordcount程序 4、参照Wordcount程序,自己编程实现数据去重程序 2实验目的 (1)理解Hadoop、Eclipse编程流程; (2)理解MapReduce架构,以及分布式编程思想; 3实验性质 实验上机内容,必做,作为课堂平时成绩。 4实验考核方法 提交上机实验报告,纸质版。 要求实验报告内容结构清晰、图文并茂。 同学之间实验报告不得相互抄袭。 5实验报告提交日期与方式 要求提交打印版,4月19日(第10周)之前交到软件学院412。 6实验平台 操作系统:Linux Hadoop版本:2.6.0或以上版本 JDK版本:1.6或以上版本 Java IDE:Eclipse 7实验内容和要求 (1)搭建Hadoop、Eclipse编程环境; (2)运行实验指导上提供的Wordcount程序; (3)在Eclipse上面查看HDFS文件目录; (4)在Eclipse上面查看Wordcount程序运行结果; (5)熟悉Hadoop、Eclipse编程流程及思想; 程序设计题,编程实现基于Hadoop的数据去重程序,具体要求如下: 把data1文件和data2文件中相同的数据删除,并输出没有重复的数据,自己动手实现,把代码贴到实验报告的附录里。 设计思路: 数据去重实例的最终目标是让原始数据中出现次数超过一次的数据在输出文件中只出现一次。具体就是Reduce的输入应该以数据作为Key,而对value-list则没有要求。当Reduce 接收到一个时就直接将key复制到输出的key中,并将value设置成空值。在MapReduce流程中,Map的输出 经过shuffle过程聚集成后会被交给Reduce。所以从设计好的Reduce输入可以反推出Map输出的key应为数据,而

汇编实验报告..

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

实验一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.360docs.net/doc/0313387397.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 – 注意:

数据分析实验报告

《数据分析》实验报告 班级:07信计0班学号:姓名:实验日期2010-3-11 实验地点:实验楼505 实验名称:样本数据的特征分析使用软件名称:MATLAB 实验目的1.熟练掌握利用Matlab软件计算均值、方差、协方差、相关系数、标准差与变异系数、偏度与峰度,中位数、分位数、三均值、四分位极差与极差; 2.熟练掌握jbtest与lillietest关于一元数据的正态性检验; 3.掌握统计作图方法; 4.掌握多元数据的数字特征与相关矩阵的处理方法; 实验内容安徽省1990-2004年万元工业GDP废气排放量、废水排放量、固体废物排放量以及用于污染治理的投入经费比重见表6.1.1,解决以下问题:表6.1.1废气、废水、固体废物排放量及污染治理的投入经费占GDP比重 年份 万元工业GDP 废气排放量 万元工业GDP 固体物排放量 万元工业GDP废 水排放量 环境污染治理投 资占GDP比重 (立方米)(千克)(吨)(%)1990 104254.40 519.48 441.65 0.18 1991 94415.00 476.97 398.19 0.26 1992 89317.41 119.45 332.14 0.23 1993 63012.42 67.93 203.91 0.20 1994 45435.04 7.86 128.20 0.17 1995 46383.42 12.45 113.39 0.22 1996 39874.19 13.24 87.12 0.15 1997 38412.85 37.97 76.98 0.21 1998 35270.79 45.36 59.68 0.11 1999 35200.76 34.93 60.82 0.15 2000 35848.97 1.82 57.35 0.19 2001 40348.43 1.17 53.06 0.11 2002 40392.96 0.16 50.96 0.12 2003 37237.13 0.05 43.94 0.15 2004 34176.27 0.06 36.90 0.13 1.计算各指标的均值、方差、标准差、变异系数以及相关系数矩阵; 2.计算各指标的偏度、峰度、三均值以及极差; 3.做出各指标数据直方图并检验该数据是否服从正态分布?若不服从正态分布,利用boxcox变换以后给出该数据的密度函数; 4.上网查找1990-2004江苏省万元工业GDP废气排放量,安徽省与江苏省是 否服从同样的分布?

汇编实验报告

XXXX大学 实验报告 课程名称汇编语言程序设计成 绩 实验学时 评语: 指导教师: 年月日 班级: 学号: 姓名: 地点: 时间:

实验一汇编语言编程实验 一、实验目的 (1)掌握汇编语言的编程方法 (2)掌握DOS功能调用的使用方法 (3)掌握汇编语言程序的调试运行过程 二、实验内容 1. 将指定数据区的字符串数据以ASCII码形式显示在屏幕上,并通过DOS功能调用完 成必要提示信息的显示。 2. 在屏幕上显示自己的学号姓名信息。 3. 循环从键盘读入字符并回显在屏幕上,然后显示出对应字符的ASCII码,直到输 入”Q”或“q”时结束。 4. 实验中使用的DOS功能调用: INT 21H AH 值功能调用参数结果 1 键盘输入并回显AL=输出字符 2 显示单个字符(带Ctrl+Break检查) DL=输出字符光标在字符后面 6 显示单个字符(无Ctrl+Break检查) DL=输出字符光标在字符后面 8 从键盘上读一个字符AL=字符的ASCII码 光标跟在串后面 9 显示字符串DS:DX=串地址, ‘$’为结束字符 4CH 返回DOS系统AL=返回码 例如,实现键盘输入并回显的完整代码: MOV AH 01H INT 21H 三、实验结果 1. 将指定数据区的字符串数据”Let us go !”以ASCII码形式显示在屏幕上,并通过 DOS功能调用完成必要提示信息的显示: 2. 在屏幕上显示自己的学号姓名信息 3.循环从键盘读入字符并回显在屏幕上,然后显示出对应字符的ASCII码,直到输 入”Q”或“q”时结束。

四、实验原理 DATA SEGMENT MES DB 'NUMBER: 03099018 ',0AH,0DH,'NAME: Feng Xiaokang',0AH,0DH,'$' CENT DB 'Let us go !','$' ENTE DB 0AH,0DH,'$' INFO DB 'Origin: ','$' ASCI DB 'ASCII : ','$' MSG1 DB 'If you want to quit please press...q/Q...',0AH,0DH,'$' MSG2 DB 0AH,0DH,'Char: $' RS DB ' ASCII: $' SD DB '' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA ;存储数据 MOV DS,AX MOV DX,OFFSET MES ;显示数据 MOV AH,09H INT 21H MOV DX,OFFSET MSG1 MOV AH,09H INT 21H MOV DX, OFFSET CENT MOV SI, DX T: MOV AL,[SI] CMP AL,'$' JZ C1 AND AL,0F0H ;取高4位 MOV CL,4 SHR AL,CL CMP AL,0AH ;是否是A以上的数 JB A ADD AL,07H A: ADD AL,30H MOV DL,AL ;show character MOV AH,02H INT 21H

数值分析实验报告

学生实验报告实验课程名称 开课实验室 学院年级专业班 学生姓名学号 开课时间至学年学期

if(A(m,k)~=0) if(m~=k) A([k m],:)=A([m k],:); %换行 end A(k+1:n, k:c)=A(k+1:n, k:c)-(A(k+1:n,k)/ A(k,k))*A(k, k:c); %消去end end x=zeros(length(b),1); %回代求解 x(n)=A(n,c)/A(n,n); for k=n-1:-1:1 x(k)=(A(k,c)-A(k,k+1:n)*x(k+1:n))/A(k,k); end y=x; format short;%设置为默认格式显示,显示5位 (2)建立MATLAB界面 利用MA TLAB的GUI建立如下界面求解线性方程组: 详见程序。 五、计算实例、数据、结果、分析 下面我们对以上的结果进行测试,求解:

? ? ? ? ? ? ? ? ? ? ? ? - = ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? - - - - - - 7 2 5 10 13 9 14 4 4 3 2 1 13 12 4 3 3 10 2 4 3 2 1 x x x x 输入数据后点击和,得到如下结果: 更改以上数据进行测试,求解如下方程组: 1 2 3 4 43211 34321 23431 12341 x x x x ?? ???? ?? ???? ?? ???? = ?? ???? - ?? ???? - ???? ?? 得到如下结果:

汇编语言实验报告

汇编语言实验报告 专业: 班级: 姓名: 学号: 2011年12月14日

目录 实验1 利用DEBUG调试汇编语言程序段 (3) 实验2 初级程序的编写与调试实验(一) (11) 实验3 初级程序的编写与调试实验(二) (20) 实验4 汇编语言程序上机过程 (28) 实验5 分支程序实验 (33) 实验6 循环程序实验 (40) 实验7 子程序实验 (45)

实验1 利用DEBUG调试汇编语言程序段一.实验目的 1.熟悉DEBUG有关命令的使用方法; 2.利用DEBUG掌握有关指令的功能; 3.利用DEBUG运行简单的程序段。 二.实验内容 1.进入和退出DEBUG程序; 1)开始—运行,输入cmd,点确定进入命令窗口 2)在命令窗口中输入dubug进入debug程序 3)进入debug窗口后,输入q命令退出debug 2.学会DEBUG中的 1)D命令(显示内存数据D 段地址:偏移地址) 例1:-D100;显示DS段, 0100开始的128个节内容

说明:指定要显示其内容的内存区域的起始和结束地址,或起始地址和长度。 ①DSEGREG[起始地址] [L 长度] ;显示SEGREG段中(缺省内默认为DS), 以[起始地址] (缺省内为当前的偏移地址),开始的[L 长度] (缺省内默认为128)个字节的内容. ② D SEGREG[段地址:偏移地址] ;显示SEGREG段中(缺省内默认为DS), [段地址:偏移地址]开始的[L 长度] (缺省内默认为128)个字节内容 -D ;默认段寄存器为DS,当前偏移地址(刚进入debug程序偏移地址为0100H) -D DS:100 ;显示DS段, 0100H开始的128个字节内容 -D CS:200 ;显示CS段, 0200H开始的128个字节内容 -D 200:100 ;显示DS段, 0200:0100H开始的128个字节内容

汇编实验报告

汇编语言程序设计 实验报告 学号:100511530 班级:电气信息类1005 姓名:陆淑琴 指导老师:李诗高

实验一、汇编语言上机的基本过程及环境 【实验目的】 (1)熟悉汇编语言的编辑、汇编、连接及调试的全过程,重点掌握使用DEBUG调试程序的方法。 (2)了解汇编语言的程序结构。 【实验内容】 (1)在数据段中定义两个数(数据自拟,包含有正数和负数),要求编写程序分别计算出这两个数的和、差、积、商,并用Debug的相关命令查询计算结果(包括对CF,OF,SF,ZF的影响)。 (2)首先对AX,BX,CX寄存器赋初值(数据自拟),再将AX寄存器的中间八位,BX的低四位和CX的高四位拼接成一个新的字,并把结果存入偏移地址为0000H的存储单元。其中BX的低四位作为结果字的高四位,CX的高四位作为结果字的低四位。并用Debug的相关命令查询内存单元的结果字。 源代码: DA TA SEGMENT val1 DW 1000h val2 DW 2000h maxv DW ? DA TA ENDS STACK SEGMENT STACK 'STACK'

DB 100H DUP(?) STACK ENDS CODE SEGMENT 'CODE' ASSUME CS:CODE, DS:DATA,SS:STACK .386 MAIN: MOV AX, DATA; MOV DS, AX PUSH val1 PUSH val2 CALL MAX ; POP maxv ;栈顶返回值出栈 MOV AX, 4c00H INT 21H MAX PROC PUSH BP ;执行该指令前堆栈情况 MOV BP, SP ;执行后堆栈情况 MOV AX, [BP+4] CMP AX, [BP+6] JA EXIT MOV AX, [BP+6] EXIT: MOV [BP+6], AX ;用栈顶返回值 POP BP RET 2 ;执行后堆栈情况 MAX ENDP CODE ENDS END MAIN 【实验步骤】 (1)用编辑软件(记事本、UltraEdit等)编辑一个扩展文件名为ASM的汇编语言源程序。 (2)用汇编程序MASM汇编上述的汇编语言源程序,形成目标代码文件。(扩展名为OBJ) (3)用连接程序LINK连接目标代码文件,形成可执行文件。(扩展名为EXE)(4)用DEBUG32调试可执行文件,观察执行结果,以验证其正确性。

数据分析实验报告

数据分析实验报告 【最新资料,WORD文档,可编辑修改】 第一次试验报告 习题1.3 1建立数据集,定义变量并输入数据并保存。 2数据的描述,包括求均值、方差、中位数等统计量。 分析—描述统计—频率,选择如下: 输出:

方差1031026.918399673.8384536136.444百分位数25304.25239.75596.25 50727.50530.501499.50 751893.501197.004136.75 3画直方图,茎叶图,QQ图。(全国居民) 分析—描述统计—探索,选择如下: 输出: 全国居民Stem-and-Leaf Plot Frequency Stem & Leaf 9.00 0 . 122223344 5.00 0 . 56788 2.00 1 . 03 1.00 1 . 7 1.00 2 . 3 3.00 2 . 689

1.00 3 . 1 Stem width: 1000 Each leaf: 1 case(s) 分析—描述统计—QQ图,选择如下: 输出: 习题1.1 4数据正态性的检验:K—S检验,W检验数据: 取显着性水平为0.05 分析—描述统计—探索,选择如下:(1)K—S检验 单样本Kolmogorov-Smirnov 检验 身高N60正态参数a,,b均值139.00

标准差7.064 最极端差别绝对值.089 正.045 负-.089 Kolmogorov-Smirnov Z.686 渐近显着性(双侧).735 a. 检验分布为正态分布。 b. 根据数据计算得到。 结果:p=0.735 大于0.05 接受原假设,即数据来自正太总体。(2)W检验

数据仓库与数据挖掘实验二(多维数据组织与分析)

一、实验内容和目的 目的: 1.理解维(表)、成员、层次(粒度)等基本概念及其之间的关系; 2.理解多维数据集创建的基本原理与流程; 3.理解并掌握OLAP分析的基本过程与方法; 内容: 1.运用Analysis Server工具进行维度、度量值以及多维数据集的创建(模拟案例)。 2.使用维度浏览器进行多维数据的查询、编辑操作。 3.对多维数据集进行切片、切块、旋转、钻取操作。 二、所用仪器、材料(设备名称、型号、规格等) 操作系统平台:Windows 7 数据库平台:SQL Server 2008 SP2 三、实验原理 在数据仓库系统中,联机分析处理(OLAP)是重要的数据分析工具。OLAP的基本思想是企业的决策者应能灵活地、从多方面和多角度以多维的形式来观察企业的状态和了解企业的变化。 OLAP是在OLTP的基础上发展起来的,OLTP是以数据库为基础的,面对的是操作人员和低层管理人员,对基本数据的查询和增、删、改等进行处理。而OLAP是以数据仓库为基础的数据分析处理。它具有在线性(online)和多维分析(multi-dimension analysis)的特点。OLAP超越了一般查询和报表的功能,是建立在一般事务操作之上的另外一种逻辑步骤,因此,它的决策支持能力更强。 建立OLAP的基础是多维数据模型,多维数据模型的存储可以有多种不同的形式。MOLAP和ROLAP是OLAP的两种主要形式,其中MOLAP(multi-dimension OLAP)是基

于多维数据库的OLAP,简称为多维OLAP;ROLAP(relation OLAP)是基于关系数据库的OLAP,简称关系OLAP。 OLAP的目的是为决策管理人员通过一种灵活的多维数据分析手段,提供辅助决策信息。基本的多维数据分析操作包括切片、切块、旋转、钻取等。随着OLAP的深入发展,OLAP也逐渐具有了计算和智能的能力,这些能力称为广义OLAP操作。 四、实验方法、步骤 要求:利用实验室和指导教师提供的实验软件,认真完成规定的实验内容,真实地记录实验中遇到的各种问题和解决的方法与过程,并根据实验案例绘出多维数据组织模型及其OLAP操作过程。实验完成后,应根据实验情况写出实验报告。 五、实验过程原始记录(数据、图表、计算等) 本实验以实验一建立的数据仓库为基础,使用Microsoft的SQL Server Business Intelligence Development Studio工具,建立OLAP相关模型,并实现OLAP的一些简单基本功能。 首先打开SQL Server Business Intelligence Development Studio工具,新建一个Analysis Service项目,命名为:DW

汇编语言(第2版)王爽著-课后实验报告详解

汇编语言实验报告 : 班级学号 学生姓名 提交日期 成 绩

实验1-1如下: 用E命令将指令写入内存:

用A命令将指令写入内存: 实验1-2代码如下: 用a命令在2000:0000处写如要写如的代码,然后用R命令来修改CS为2000,IP修改为0,然后用T命令执行,直到AX中的值为10,因为是默认为十六进制,所以ax中的0010实际代表十进制的16。如图:

实验1-3: 用D命令输入内存fff0h~fffffh,则可看到:

生产日期为06/15/09在地址为FFFF5~FFFF12处,现在用E命令随便修改一下有: 在window7下虚拟的dos中可以改,但如果重新打开dos中的debug 则日期任然不会改变,因为那是ROM。 实验1-4代码如下:

内存地址为B800:0开始的为显存,是RAM,可以改变其值来在屏幕中显示,其中这一个字符占两个字节,前一个(低)为字符的ASCII 码,后一个(高)为要显示的颜色,内存B800:0和B800:1这两个字节对应着屏幕中的第一个字符的位置,依次类推,每个屏幕的行有80个字符,对应的内存占160个字节 实验2-1:(按实验结果填空) Mov ax,ffff Mov ds,ax Mov ax,2200 Mov ss,ax Mov sp,0100 Mov ax,[0] ;ax=5BEA Add ax,[2] ;ax=5CCA Mov bx,[4] ;bx=30F0 Add bx,[6] ;bx=6026 Push ax ;sp=00FE; 修改的内存单元的地址是2200:00FE 内容是5CCA Push bx ;sp=00FC; 修改的内存单元的地址是2200:00FC内容是6026 Pop ax ;sp=00FE; ax=6026. Pop bx ;sp=0100; bx=.5CCA Push [4] ;sp=00FE; 修改的内存单元的地址是2200:00FE内容是30F0 Push [6] ;sp=00FC; 修改的内存单元的地址是2200:00FC内容是2F36 实验截图如下:

数值分析实验(2)word版本

数值分析实验(2)

实验二 插值法 P50 专业班级:信计131班 姓名:段雨博 学号:2013014907 一、实验目的 1、熟悉MATLAB 编程; 2、学习插值方法及程序设计算法。 二、实验题目 1、已知函数在下列各点的值为 试用4次牛顿插值多项式()4P x 及三次样条函数()S x (自然边界条件)对数据进行插值用图给出(){},,0.20.08,0,1,11,10i i i x y x i i =+=,()4P x 及()S x 。 2、在区间[]1,1-上分别取10,20n =用两组等距节点对龙格函数()2 1125f x x = +作多项式插值及三次样条插值,对每个n 值,分别画出插值函数及()f x 的图形。 3、下列数据点的插值 可以得到平方根函数的近似,在区间[]0,64上作图 (1)用这9个点作8次多项式插值()8L x (2)用三次样条(第一边界条件)程序求()S x 从得到结果看在[]0,64上,哪个插值更精确;在区间[]0,1上,两种插值哪个更精确? 三、实验原理与理论基础

1、拉格朗日差值公式 )()(111k k k k k k x x x x y y y x L ---+ =++ 点斜式 k k k k k k k k x x x x y x x x x y x L --+--=++++11111)( 两点式 2、n 次插值基函数 ....,2,1,0,)()(0n j y x l y x L i j n k k k j n ===∑= n k x x x x x x x x x x x x x l n k n k k k k k ,...,1,0,) () (... ) () (... ) () ()(1100=------= -- 3、牛顿插值多项式 ...))(](,,[)](,[)()(102100100+--+++=x x x x x x x f x x x x f x f x P n ))...(](,...,[100---+n n x x x x x x f )(],...,,[)()()(10x x x x f x P x f x R n n n n +=-=ω 4、三次样条函数 若函数],,[)(2b a C x S ∈且在每个小区间],[1+j j x x 上是三次多项式,其中, b x x x a n =<<<=...10是给定节点,则称)(x S 是节点n x x x ,...,,10上的三次样条函数。若在节点j x 上给定函数值),,...,2,1,0)((n j x f y j i ==并成立,,...,2,1,0,)(n j y x S i j ==则称)(x S 为三次样条插值函数。 5、三次样条函数的边界条件 (1)0)()(''''''00''====n n f x S f x S (2)'''00')(,)(n n f x S f x S == 四、实验内容 1、M 文件: function [p]=Newton_Polyfit(X,Y) format long g r=size(X); n=r(2); M=ones(n,n); M(:,1)=Y'; for i=2:n

计算机组成原理与汇编实验报告

计算机组成原理与汇编 实验报告 Company Document number:WUUT-WUUY-WBBGB-BWYTT-1982GT

计算机组成原理与汇编课程设计 实验报告 目录 一、课程设计目标 (3) 二、课程设计基本要求 (3) 三、课程设计的内容 (3) 四、课程设计的要求 (5) 五、实验详细设计 (5) 1.统计文件中各字母出现的频率 (5) 2.用递归计算50以内Fibonacci 数, 以十进制数输出 (9) 3.虚拟平台模拟机实验 (11) 六、使用说明 (19) 七、总结与心得体会 (19) 八、参考文献 (20) 九、附录 (20) 1.字符统计.asm (20) 2.斐波那契数(小于50).asm (29) 一、课程设计目标 通过课程设计使学生综合运用所学过的计算机原理与汇编知识,增强解决实际问题的能力,加深对所学知识的理解与掌握,提高软硬件开发水平,为今后打下基础。 课程设计的目的和要求: 1、使学生巩固和加强《计算机原理与汇编语言》课程的基本理论知识。

2、使学生掌握汇编语言程序设计的方法及编程技巧,正确编写程序。 3、使学生养成良好的编程习惯并掌握调试程序的基本方法。 4、使学生养成规范书写报告文档的能力,撰写课程设计总结报告。 5、通过查阅手册和文献资料,培养学生独立分析问题和解决问题的能力。 二、课程设计的基本要求 1、认真查阅资料,独立完成设计任务,每道题都必须上机通过。 2、编写预习报告,写好代码,上机调试。 3、独立思考,培养综合分析问题解决问题和调试程序的能力。 4、按时完成课程设计,写出课程设计报告。 三、课程设计的内容 1、给定一个英文ASCII码文件,统计文件中英文字母的频率,以十进制形式输出。 2、用递归计算50以内Fibonacci 数, 以十进制数输出. 3、虚拟平台的模型机实验,具体要求如下: 1)选择实验设备,将所需要的组件从组件列表中拖到实验设计流程栏中 2)搭建实验流程:根据原理图1和电路图(见附件),将已选择的组件进行连线。 3)输入机器指令:选择菜单中的“工具”,再选择“模型机调试”,在指令输入窗 口中输入如下指令: 00000000 00010000 00001001 00100000 00001011 00110000 00001011 01000000 00000000 00000001 本实验设计机器指令程序如下:

华中科技大学汇编实验报告2

课程实验报告 课程名称:汇编语言程序设计实验 实验名称:实验二分支程序、循环程序的设计 实验时间: 2016-3-29,14:00-17:30 实验地点:南一楼804室63号实验台 指导教师:勇专业班级:计算机科学与技术201409班 学号: U201414813 姓名:唐礼威 同组学生:无报告日期: 2016年 3 月 30日原创性声明 本人重声明:本报告的容由本人独立完成,有关观点、方法、数据和文献等的引用已经在文中指出。除文中已经注明引用的容外,本报告不包含任何其他个人或集体已经公开发表的作品或成果,不存在剽窃、抄袭行为。 特此声明! 学生签名: 日期: 成绩评定 实验完成质量得分(70分)(实验步骤清晰详细深入,实验记录真实完整等)报告撰写质量得分(30分) (报告规、完整、通顺、详 实等) 总成绩(100分)指导教师签字: 日期:

目录 1实验目的与要求 (2) 2实验容 (2) 3实验过程 (3) 3.1任务1 (3) 3.1.1设计思想及存储单元分配 (3) 3.1.2流程图 (4) 3.1.3源程序 (4) 3.1.4实验步骤 (7) 3.1.5实验记录 (8) 4体会 (9) 参考文献 (10)

1实验目的与要求 1、熟悉分支、循环程序的结构及控制方法,掌握分支、循环程序的调试方法; 2、加深对转移指令及一些常用的汇编指令的理解; 3、加深对常用DOS功能调用指令的理解,进一步熟悉TD的使用。 2实验容 设计实现一个学生成绩查询的程序。 1、实验背景 在以BUF为首址的字节数据存储区中,存放着n个学生的课程成绩表(百分制),每个学生的相关信息包括:(占10个字节,结束符为数值0),语文成绩(1个字节),数学成绩(1个字节),英语成绩(1个字节),平均成绩(1个字节)。 例如: N EQU 1000 BUF DB ‘zhangsan’,0,0 ;学生,不足10个字节的部分用0填充 DB 100, 85, 80,? ; 平均成绩还未计算 DB ‘lisi’,6 DUP(0) DB 80, 100, 70,? DB N-3 DUP( ‘TempValue’,0,80,90,95,?) ;除了3个已经具体定义了学生信息的 成绩表以外,其他学生的信息暂时假 定为一样的。 DB ‘wangwu’,0,0,0,0 DB 85, 85, 100, ? 2、功能一:提示并输入学生 (1)使用9号DOS系统功能调用,提示用户输入学生。 (2)使用10号DOS系统功能调用,输入学生。输入的字符串放在以in_name为首址的存储区中。 (3)若只是输入了回车,则回到“(1)”处重新提示与输入;若仅仅输入字符q,则程序退出,否则,准备进入下一步处理。 3、功能二:以学生查询有无该学生 (1)使用循环程序结构,在成绩表中查找该学生。

数据分析与挖掘实验报告

数据分析与挖掘实验报告

《数据挖掘》实验报告 目录 1.关联规则的基本概念和方法 (1) 1.1数据挖掘 (1) 1.1.1数据挖掘的概念 (1) 1.1.2数据挖掘的方法与技术 (2) 1.2关联规则 (5) 1.2.1关联规则的概念 (5) 1.2.2关联规则的实现——Apriori算法 (7) 2.用Matlab实现关联规则 (12) 2.1Matlab概述 (12) 2.2基于Matlab的Apriori算法 (13) 3.用java实现关联规则 (19) 3.1java界面描述 (19) 3.2java关键代码描述 (23) 4、实验总结 (29) 4.1实验的不足和改进 (29) 4.2实验心得 (30)

1.关联规则的基本概念和方法 1.1数据挖掘 1.1.1数据挖掘的概念 计算机技术和通信技术的迅猛发展将人类社会带入到了信息时代。在最近十几年里,数据库中存储的数据急剧增大。数据挖掘就是信息技术自然进化的结果。数据挖掘可以从大量的、不完全的、有噪声的、模糊的、随机的实际应用数据中,提取隐含在其中的,人们事先不知道的但又是潜在有用的信息和知识的过程。 许多人将数据挖掘视为另一个流行词汇数据中的知识发现(KDD)的同义词,而另一些人只是把数据挖掘视为知识发现过程的一个基本步骤。知识发现过程如下: ·数据清理(消除噪声和删除不一致的数据)·数据集成(多种数据源可以组合在一起)·数据转换(从数据库中提取和分析任务相关的数据) ·数据变换(从汇总或聚集操作,把数据变换和统一成适合挖掘的形式) ·数据挖掘(基本步骤,使用智能方法提取数

据模式) ·模式评估(根据某种兴趣度度量,识别代表知识的真正有趣的模式) ·知识表示(使用可视化和知识表示技术,向用户提供挖掘的知识)。 1.1.2数据挖掘的方法与技术 数据挖掘吸纳了诸如数据库和数据仓库技术、统计学、机器学习、高性能计算、模式识别、神经网络、数据可视化、信息检索、图像和信号处理以及空间数据分析技术的集成等许多应用领域的大量技术。数据挖掘主要包括以下方法。神经网络方法:神经网络由于本身良好的鲁棒性、自组织自适应性、并行处理、分布存储和高度容错等特性非常适合解决数据挖掘的问题,因此近年来越来越受到人们的关注。典型的神经网络模型主要分3大类:以感知机、bp反向传播模型、函数型网络为代表的,用于分类、预测和模式识别的前馈式神经网络模型;以hopfield 的离散模型和连续模型为代表的,分别用于联想记忆和优化计算的反馈式神经网络模型;以art 模型、koholon模型为代表的,用于聚类的自组

相关文档
最新文档