当前位置:文档之家› 微机原理及应用实验报告材料(中南大学2014年)

微机原理及应用实验报告材料(中南大学2014年)

微机原理及应用实验报告材料(中南大学2014年)
微机原理及应用实验报告材料(中南大学2014年)

微机原理及应用实验报告

班级:

姓名:

学号:

中南大学

机电工程学院精密测控实验室

实验二软件程序设计

1.实验目的:

1、掌握MCS-51单片机指令系统及用汇编语言编程技巧;

2、了解和熟悉用MCS-51单片机仿真开发机调试程序的方法。

2.实验内容:

1、编写排序程序并上机调试通过。

已知8031内部RAM60H~69H单元中,依次存放了

FFH,99H,77H,CCH,33H,DDH,88H,BBH,44H,EEH,它们均为无符号数,编程将它们按

递减次序排序,即最大数放在60H中,最小数放在69H中。

2.、编写多字节加法程序并上机调试通过。

8031内部RAM20H~22H单元中,存放了3字节被加数(低字节在前),在2AH~2CH

单元中存放3字节加数(低字节在前),求两数之和,并将结果存入以20H为起始地

址的区域中(低字节在前)。

3.实验设备名称、型号:

4.画出软件程序流程图,写出上机调试通过的汇编语言程序清单:

程序1、编写排序程序并上机调试通过。

已知8031内部RAM60H~69H单元中,依次存放了

FFH,99H,77H,CCH,33H,DDH,88H,BBH,44H,EEH,它们均为无符号数,编程将它们按递

减次序排序,即最大数放在60H中,最小数放在69H中。

解:本设计采用冒泡排序法,使用双重循环,并在内循环中进行比较如果合乎从大到小的顺序则不动,否则两两交换,这样比较下去,比较9次后,最小的那个数就会沉底,

在下一次比较时将减少一次比较次数。如果一次比较完毕,没有发生交换,说明已

经按照从大到小的顺序排列了。则可以退出循环,结束程序。

程序结构框图和程序代码如下:

ORG 1000H

TEM DATA 50H

MOV R7 , #9

MOV 60H , #0FFH

MOV 61H , #99H

MOV 62H , #77H

MOV 63H , #0CCH

MOV 64H , #33H

MOV 65H , #0DDH

MOV 66H , #88H

MOV 67H , #0BBH

MOV 68H , #44H

MOV 69H , #0EEH

LOOP0: CLR F0

MOV A , R7

MOV R6, A

MOV R0 , #60H

MOV R1, #60H

INC R1

LOOP1: MOV A , @R0

MOV TEM , A

MOV A , @R1

CJNE A ,TEM , NEXT

SJMP NOCHA

NEXT: JC NOCHA

SETB F0

MOV @R0 , A

XCH A , TEM

MOV @R1 , A

NOCHA:INC R0

INC R1

DJNZ R6, LOOP1

JNB F0, HAL

DJNZ R7, LOOP0

HAL: SJMP $

END

程序2:编写多字节加法程序并上机调试通过。

8031内部RAM20H~22H单元中,存放了3字节被加数(低字节在前),在2AH~2CH单

元中存放3字节加数(低字节在前),求两数之和,并将结果存入以20H为起始地

址的区域中(低字节在前)。

解:改程序由三个字节数相加,其结果不会超过4个字节,可以采用循环求和的办法,吧加数和被加数依次从低位带进位相加,当然加最低位时必须先对进位位清零。

可以采用线性结构,也可以采用循环结构。我在设计该程序采用单重循环,结

构简单,特别是当相加的数较长时,优势更加明显。

程序结构框图和源代码如下:

ORG 1000H

MOV 20H,#××H

MOV 21H,#××H

MOV 22H,#××H

MOV 2AH,#××H

MOV 2BH,#××H

MOV 2CH,#××H

MOV R0 #20H

MOV R1 #2AH

MOV R7 #03H

CLR C

LOOP0: MOV A ,@R0

MOV B ,@R1

ADDC A ,B

MOV @R0 ,A

INC R0

INC R1

DJNZ R7 ,LOOP0

NEXT : JNC HAL

INC R0

MOV @R0 ,#01H

HAL: SJMP $

END

5.思考题

1、如果题目1改为递增排序,如何修改程序,为什么?

答:将NEXT中的指令中的JC 指令换为JNC指令即可

2、如果题目1改为从30H单元开始的16个单元中无符号数排序,改哪几条指令?

答:改变R7的值为15,将值赋予30H到3FH上就可以了

3、如果题目2改为从50H开始的4字节数与60H开始的四字节数相加,如何修改?

答:MOV R0 #20H 改为MOV R0 #50H

MOV R1 #2AH 改为MOV R1 #60H

MOV R7 #03H 改为MOV R7 #04H

4、写出题目2中你处理最高位进位的相应指令。

答:NEXT : JNC HAL

INC R0

MOV @R0 ,#01H

HAL: SJMP $

5、循环程序中为何常用间接寻址方式(@Ri,@DPTR)?

答:因为间接寻址可以实现程序的循环,便于编写程序。

6.心得体会:

通过实际模拟操作,加深了对单片机的理解,更好的理解编程语言,本次实验较为简单,我是独立按时完成,当我看到发光二极管一次亮时别提我的兴奋劲了。在试验的编程过程中弄清了定时器的使用方法,以及延时的计算。

审阅:

实验三定时/计数器实验

1.实验目的:

1、掌握MCS-51单片机内部定时/计数器的功能与特点,工作方式选择和编程方法,中

断功能的使用和中断服务程序的设计;

2、解和熟悉MCS-51单片机实验板的功能。

2.实验内容:

1、用MCS-51单片机的内部定时器定时中断,通过P1口控制实验板上八个LED发光

二极管轮流循环显示发光,每个LED发光二极管显示时间为0.5秒;

2、用MCS-51单片机的内部定时器定时中断,编写一段电子秒表程序。(选做)

3.实验设备名称、型号:

4.画出软件程序流程图写出上机调试通过的汇编语言程序清单:

1、用MCS-51单片机的内部定时器定时中断,通过P1口控制实验板上八个LED发光二

极管轮流循环显示发光,每个LED发光二极管显示时间为0.5秒.

分析:采用的晶振为11.0592MHz,所以时间周期T=1.085069μs。采用方式一计时需要460800 次,超过了计时范围,故在采用一个内循环,取为10 ,则共需

460800÷10=46080。

X=2^(16)-46080=19456=4C00H

编程:

START:MOV TMOD,#01H

MOV TH0,#4CH

MOV TL0,#00H

SETB TR0

SETB EA

SETB ET0

MOV A,#F7H

MOV P1,A

MOV 40H,#0AH

SJMP $

ORG 0000H

LJMP START

ORG 00BH

MOV TH0,#4CH

MOV TL0,#00H

DJNZ 40H,OVER

MOV 40H,#0AH

MOV P1,A

RR A

OVER: RETI

5.思考题

1、你采用的是定时器0还是定时器1?如果换用另外一个定时器,需要修改那些语句?为什么?

答:采用定时器0 ,若用另一个则要替换的语句是

MOV TMOD ,#01H 换为 MOV TMOD ,#10H

MOV TH0 ,#4CH 换为 MOV TH1 ,#4CH

MOV TL0, #00H 换为 MOV TL1, #00H

SETB TR0 换为 SETB TR1

2、如果将延时时间变为1秒,如何修改程序,为何?

答:两个程序均是将MOV 40H,#0AH 改为 MOV 40H,#14H

3、改变发光二极管循环点亮方向,如何修改程序?如果间隔闪亮(亮一个,黑一个,亮一个……)如何修改程序?你还能做哪些花样?

答:将 RL A 改为 RR A

如果要间隔闪亮可以将A 连续两次左移即RL A 变为 RL A 再加RL A就可以了。我还

可以要其两同时亮,将累加器A 的值变为0FDH 就可以了语言是MOV A # 0FEH 变为

MOV A ,#0FDH

7.心得体会:

通过实际模拟操作,加深了对单片机的理解,更好的理解编程语言,本次实验较为简单,我是独立按时完成,当我看到发光二极管一次亮时别提我的兴奋劲了。在试验的编程过程中弄清了定时器的使用方法,以及延时的计算。

审阅:

实验四串行数据传送实验

1.实验目的:

1、掌握七段LED数码管显示器工作原理,以及用动态扫描方法编程实现8位LED数码管显

示的方法;

2.进一步了解和熟悉MCS-51单片机实验板的功能。

2.实验内容:

1.用MCS-51 的P1、P2输出段码和位码,编程实现8位LED数码管循环显示出“1”“2”

“3”“4”“5”“6”间隔时间0.5秒。

2.缩短间隔时间,直至显示效果为稳定的“123456”

3.实验设备名称、型号:

4.画出软件程序流程图,写出上机调试通过的汇编语言程序清单:

说明:采用的晶振为11.0592MHz,所以时间周期T=1.085069μs。执行一次DJNZ指令需要2T,要间隔0.5s。故需要执行0.5÷(2T)=230400次。取三次循环,第一次为4,第二次

为256,第三次为230400÷4÷256=225=0E1H。

代码如下:

ORG 0000H

MOV 40H,#00H

MOV 41H,#01H

MOV 42H,#02H

MOV 43H,#03H

MOV 44H,#04H

MOV 45H,#05H

START:MOV R0,#40H

MOV R2,#06H

MOV R7,#7FH

LOOP: MOV A,@R0

MOV DPTR,#DISTAB

MOVC A,@A+DPTR

MOV P1,A

MOV A,R7

MOV P2,A

RR A

MOV R7,A

MOV R3,#04H

MOV R4,#00H

MOV R5,#0E1H

LOOP1:DJNZ R5,LOOP1

DJNZ R4,LOOP1

DJNZ R3,LOOP1

INC R0

DJNZ R2,LOOP

LJMP START

DISTAB: DB 06H;显示1

DB 5BH;显示2

DB 4FH;显示3

DB 66H;显示4

DB 6DH;显示5

DB 7DH;显示6

END

修改 MOV R3,#04H

MOV R4,#00H

MOV R5,#0E1H

可以缩短显示时间。当修改为 MOV R3,#04H

MOV R4,#04H

MOV R5,#02H时从视觉看已经看不出变化。

用定时器实现方法:采用的晶振为11.0592MHz,所以时间周期T=1.085069μs。采用方式一计时需要460800 次,超过了计时范围,故在采用一个内循环,取为50,则共需

460800÷50=9216。X=216-9216=56350=DC1EH

源代码如下:

MOV TMOD,#01H

MOV TH0,#0DCH

MOV TL0,#1EH

SETB EA

SETB ET0

SETB TR0

SJMP $

0RGB 000BH

MOV R2,#32H

DJNZ R2,NEXT

ORG 0050H

MOV 40H,#00H

MOV 41H,#01H

MOV 42H,#02H

MOV 43H,#03H

MOV 44H,#04H

MOV 45H,#05H

START:MOV R0,#40H

MOV R2,#06H

MOV R7,#EFH

LOOP: MOV A,@R0

MOV DPTR,#DISTAB

MOVC A,@A+DPTR

MOV P1,A

MOV A,R7

MOV P2,A

RR A

MOV R7,A

INC R0

NEXT:RETI

DISTAB: DB 06H;显示1

DB 5BH;显示2

DB 4FH;显示3

DB 66H;显示4

DB 6DH;显示5

DB 7DH;显示6

END

5.思考题

1、要显示实验当天的日期(如20100509),怎样调试?

答:将 MOV R2,#06H 改为 MOV R2,#08H

DISTAB: DB 06H;显示1 改为 DISTAB: DB 5BH;显示2

DB 5BH;显示2 DB 3FH;显示0

DB 4FH;显示3 DB 06H;显示1

DB 66H;显示4 DB 3FH;显示0

DB 6DH;显示5 DB 3FH;显示0

DB 7DH;显示6 DB 6DH;显示5

DB 3FH;显示0

DB 6FH;显示9

2、用其中4位数码管显示“good”,程序如何修改?

答:将 MOV R2,#06H 改为 MOV R2,#04H

DISTAB: DB 06H;显示1 改为 DISTAB: DB 6FH;显示g

DB 5BH;显示2 DB 3FH;显示0

DB 4FH;显示3 DB 3FH;显示0

DB 66H;显示4 DB 5EH;显示d

DB 6DH;显示5

DB 7DH;显示6

7.心得体会:

通过实际模拟操作,加深了对单片机的理解,更好的理解编程语言,本次实验我能够根据老师给出的代码理解完成,并且取得满意的结果。在试验的编程过程中弄清了很多在课堂上没有理解的操作码的含义。熟悉了各个操作码的使用方法及为什么如此用。

审阅:

中南大学计算机体系结构实验报告

计算机体系结构实验报告 学院:信息科学与工程学院 专业班级:高赛文的小仙女 指导老师:雷向东 姓名:igot7

目录 实验 1 对指令操作码进行霍夫曼编码 (3) 一、实验目的 (3) 二、实验内容 (3) 三、实验过程 (3) 四、实验结果 (14) 实验 2 使用 LRU 方法更新 Cache (15) 一、实验目的 (15) 二、实验内容 (15) 三、实验过程 (15) 四、实验结果 (18) 实验 3 通道处理过程模拟 (20) 一、实验目的 (20) 二、实验内容 (20) 三、实验过程 (21) 四、实验结果 (22) 实验 4 单功能流水线调度机构模拟 (23) 一、实验目的 (23) 二、实验内容 (23) 三、实验过程 (23) 四、运行结果 (24) 实验总结 (24)

实验 1 对指令操作码进行霍夫曼编码 一、实验目的 1.了解和掌握指令编码的基本要求和基本原理 二、实验内容 1.使用编程工具编写一个程序,对一组指令进行霍夫曼编码,并输出最后的编码结果以及对 指令码的长度进行评价。与扩展操作码和等长编码进行比较。 问题描述以及问题分析: 我们举例说明此问题,例如: 有一组指令的操作码共分七类,它们出现概率如 下表所示: P1 P2 P3 P4 P5 P6 P7 0.45 0.30 0.15 0.05 0.03 0.01 0.01 对此组指令进行HUFFMAN 编码正如下图所示: 最后得到的HUFFMAN 编码如下表所示: 最短编码长度为: H=0.45*1+0.30*2+0.15*3+0.05*4+0.03*5+0.01*6+0.01*6=-1.95. 要对指令的操作码进行HUFFMAN 编码,只要根据指令的各类操作码的出现概率构造HUFFMAN 树再进行HUFFAM 编码。此过程的难点构造HUFFMAN 树,进行HUFFAM 编码只要对你所生成的HUFFMAN 树进行中序遍历即可完成编码工作。 三、实验过程 观察上图 1,不难看出构造 HUFFMAN 树所要做的工作:

中南大学C++实验报告

《C++程序设计》上机实验报告 上机内容:C++程序的运行环境和运行一个C++程序的方法 数据类型和表达式 专业班级:电气信息类1203班 学号:0909120320 姓名:李湖 日期:2013年3月16日

目录 1.实验目的 2.实验内容 3.程序源码 4.调试结果 5.实验心得

程序设计实验(一) 1、实验目的 (1)了解所用的计算机系统的基本操作方法,学会独立使用该系统。 (2)了解在该系统上如何编辑、编译、连接和运行一个C程序 (3)通过运行简单的C++程序,初步了解C++源程序的结构和特点。 应学会在一种以上的编译环境下运行C++的程序,建议学习并 掌握Visual C++ 6.0和GCC(RHIDE和DJGPP)的使用方法。2、实验内容和步骤 (1)检查所用所用的计算机系统是否已安装了C++编译系统,并确定他所在的子目录。如果使用的是Windows操作系 统,可以按以下步骤进行: 如果想查找Visual C++ 6.0,可以单击Windows桌面上“开 始”按钮,在菜单中选择“查找”窗口,在“名称”栏中 输入文件名“Microsoft Visual C++ 6.0”,请注意搜索范围, 应当使“搜索”栏中的内容为“C:\”,表示从C盘根目录 开始寻找,即搜索整个C盘。单击“开始查找”按钮, 系统会自动在指定的范围内找寻所需的文件,如果找到, 就会显示出文件路径,如“C:\Windows 000\Start Mean\Program\Microsoft Visual Studio 6.0,表示在

C:\Windows 000\Start Mean\Program\Microsoft Visual Studio 6.0文件中有Visual C++ 6.0。也可以选择Windows 桌面上的“开始”—>“程序”命令,在其弹出的菜单中 选择“Microsoft Visual Studio 6.0”命令,再在其子菜单中 查有无“Microsoft Visual C++ 6.0”命令。如果在安装时采 用系统提供的默认方式安装,应该在这个位置找到 Microsoft Visual C++ 6.0。 如果想查找RHIDE和DJGPP,只须选择“开始”—>“查找(F)”—>“文件或文件夹(F)”命令,并指定RHIDE 和DJGPP即可。 (2)在Visual C++环境下编译和运行C++程序。 在第一次上机时,按以下步骤建立和运行C++程序: ①先进入Visual C++ 6.0环境。 ②按照第15章15.2节介绍的方法,在自己指定的子目录中 建立一个名为test.cpp的新文件(此事尚未向文件输入内 容)。 ③从键盘输入以下程序(第1章第8题): int main(); { int a,b; c=a+b; cout>>”a+b=”>>a+b;

中南大学通信原理实验报告(截图完整)

中南大学 《通信原理》实验报告 学生姓名 指导教师 学院 专业班级 完成时间

数字基带信号 1、实验名称 数字基带信号 2、实验目的 (1)了解单极性码、双极性码、归零码、不归零码等基带信号波形特点。 (2)掌握AMI、HDB 3 码的编码规则。 (3)掌握从HDB 3 码信号中提取位同步信号的方法。 (4)掌握集中插入帧同步码时分复用信号的帧结构特点。 (5)了解HDB 3 (AMI)编译码集成电路CD22103。 3、实验内容 (1)用示波器观察单极性非归零码(NRZ)、传号交替反转码(AMI)、三阶高密度双极性码 (HDB 3)、整流后的AMI码及整流后的HDB 3 码。 (2)用示波器观察从HDB 3 码中和从AMI码中提取位同步信号的电路中有关波形。 (3)用示波器观察HDB 3 、AMI译码输出波形。 4、基本原理(简写) 本实验使用数字信源模块和HDB 3 编译码模块。 1、数字信源 本模块是整个实验系统的发终端,模块内部只使用+5V电压,其原理方框图如图1-1所示,电原理图如图1-3所示(见附录)。本单元产生NRZ信号,信号码速率约为170.5KB,帧结构如图1-2所示。帧长为24位,其中首位无定义,第2位到第8位是帧同步码(7位巴克码1110010),另外16位为2路数据信号,每路8位。此NRZ信号为集中插入帧同步码时分复用信号,实验电路中数据码用红色发光二极管指示,帧同步码及无定义位用绿色发光二极管指示。发光二极管亮状态表示1码,熄状态表示0码。 本模块有以下测试点及输入输出点: ? CLK 晶振信号测试点 ? BS-OUT 信源位同步信号输出点/测试点(2个) ? FS 信源帧同步信号输出点/测试点 ? NRZ-OUT(AK) NRZ信号(绝对码)输出点/测试点(4个) 图1-1中各单元与电路板上元器件对应关系如下: ?晶振CRY:晶体;U1:反相器7404 ?分频器U2:计数器74161;U3:计数器74193;U4:计数器40160 ?并行码产生器K1、K2、K3:8位手动开关,从左到右依次与帧同步码、数

操作系统实验报告-中南大学

操作系统原理试验报告 班级: 学号: 姓名:

实验一:CPU调度 一、实验内容 选择一个调度算法,实现处理机调度。 二、实验目的 多道系统中,当就绪进程数大于处理机数时,须按照某种策略决定哪些进程优先占用处理机。本实验模拟实现处理机调度,以加深了解处理机调度的工作。 三、实验题目 1、设计一个按优先权调度算法实现处理机调度的程序; 2、设计按时间片轮转实现处理机调度的程序。 四、实验要求 PCB内容: 进程名/PID; 要求运行时间(单位时间); 优先权; 状态: PCB指针; 1、可随机输入若干进程,并按优先权排序; 2、从就绪队首选进程运行:优先权-1/要求运行时间-1 要求运行时间=0时,撤销该进程 3、重新排序,进行下轮调度 4、最好采用图形界面; 5、可随时增加进程; 6、规定道数,设置后备队列和挂起状态。若内存中进程少于规定道数,可自动从后备 队列调度一作业进入。被挂起进程入挂起队列,设置解挂功能用于将指定挂起进程解挂入就绪队列。 7、每次调度后,显示各进程状态。 实验二:内存管理 一、实验内容 主存储器空间的分配和回收 二、实验目的 帮助了解在不同的存储管理方式下,应怎样实现主存空间的分配和回收。 三、实验题目 在可变分区管理方式下,采用最先适应算法实现主存空间的分配和回收。

四、实验要求 1、自行假设主存空间大小,预设操作系统所占大小并构造未分分区表; 表目内容:起址、长度、状态(未分/空表目) 2、结合实验一,PCB增加为: {PID,要求运行时间,优先权,状态,所需主存大小,主存起始位置,PCB指针} 3、采用最先适应算法分配主存空间; 4、进程完成后,回收主存,并与相邻空闲分区合并 .1、Vo类说明(数据存储结构) 进程控制块PCB的结构: Public class PCB{ //进程控制块PCB,代表一个进程 //进程名,作为进程的标识; private String name; //要求运行时间,假设进程运行的单位时间数; private int time; //赋予进程的优先权,调度时总是选取优先数小的进程先执行; private int priority; //状态,假设有“就绪”状态(ready)、“运行”状态(running)、 //“后备”状态(waiting)、“挂起”状态(handup) private String state; //进程存放在table中的位置 private int start; //进程的大小 private int length; //进程是否进入内存,1为进入,0为未进入 private int isIn; //进程在内存中的起始位置 private int base; //进程的大小 private int limit; //一些get和set方法以及构造器省略… };

计算机图形学实验报告 (2)

中南大学信息科学与工程学院 实验报告实验名称 实验地点科技楼四楼 实验日期2014年6月 指导教师 学生班级 学生姓名 学生学号 提交日期2014年6月

实验一Window图形编程基础 一、实验类型:验证型实验 二、实验目的 1、熟练使用实验主要开发平台VC6.0; 2、掌握如何在编译平台下编辑、编译、连接和运行一个简单的Windows图形应用程序; 3、掌握Window图形编程的基本方法; 4、学会使用基本绘图函数和Window GDI对象; 三、实验内容 创建基于MFC的Single Document应用程序(Win32应用程序也可,同学们可根据自己的喜好决定),程序可以实现以下要求: 1、用户可以通过菜单选择绘图颜色; 2、用户点击菜单选择绘图形状时,能在视图中绘制指定形状的图形; 四、实验要求与指导 1、建立名为“颜色”的菜单,该菜单下有四个菜单项:红、绿、蓝、黄。用户通过点击不同的菜单项,可以选择不同的颜色进行绘图。 2、建立名为“绘图”的菜单,该菜单下有三个菜单项:直线、曲线、矩形 其中“曲线”项有级联菜单,包括:圆、椭圆。 3、用户通过点击“绘图”中不同的菜单项,弹出对话框,让用户输入绘图位置,在指定位置进行绘图。

五、实验结果: 六、实验主要代码 1、画直线:CClientDC *m_pDC;再在OnDraw函数里给变量初始化m_pDC=new CClientDC(this); 在OnDraw函数中添加: m_pDC=new CClientDC(this); m_pDC->MoveTo(10,10); m_pDC->LineTo(100,100); m_pDC->SetPixel(100,200,RGB(0,0,0)); m_pDC->TextOut(100,100); 2、画圆: void CMyCG::LineDDA2(int xa, int ya, int xb, int yb, CDC *pDC) { int dx = xb - xa; int dy = yb - ya; int Steps, k; float xIncrement,yIncrement; float x = xa,y= ya; if(abs(dx)>abs(dy))

中南大学数据结构实验报告(六)

实验六 1.需求分析 2.二分查找算法(设计性实验) 问题描述 从键盘读入一串整数和一个待查键,查找在该整数串中是否有这个待查键。如果有,就输出它在 整数串中的位置;如果没有,输出1。 基本要求 掌握二分查找算法。 测试数据 由读者依据软件工程的测试技术自己确定。注意测试边界数据,如单个结点。 实现提示 利用二分查找算法查找实现。 4.简单个人电话号码查询系统(综合性实验) 问题描述 人们在日常生活中经常要查找某个人或某个单位的电话号码,本实验将实现一个简单的个人电话 号码查询系统,根据用户输入的信息(如姓名等)进行快速查询。 基本要求 (1) 在外存上,用文件保存电话号码信息。 (2) 在内存中,设计数据结构存储电话号码信息。 (3) 提供查询功能:根据姓名实现快速查询。 (4) 提供其他维护功能,如插入、删除、修改等。 测试数据 由读者依据软件工程的测试技术自己确定。注意测试边界数据,如单个结点。 实现提示 由于要管理的电话号码信息较多,而且要在程序运行结束后仍然保存电话号码信息,所以电话号码 信息采用文件的形式存放到外存中。在系统运行时,要将电话号码信息从文件调入内存来进行查找等操作。为了接收文件中的内容,要有一个数据结构与之对应,可以设计如下结构类型的数组来接收数据。const int max=10; struct TeleNumber { String name;// 姓名 String phoneNumber,// 固定电话号码 String mobileNumber,// 移动电话号码 String email;// 电子邮箱 }Tele[max]; 为了实现对电话号码的快速查询,可以将上述结构数组排序,以便应用二分查找,但是,在数组 中实现插入和删除操作的代价较高。如果记录需频繁进行插入或删除操作,可以考虑采用二叉排序树组织电话号码信息,这样查找和维护都能获得较高的时间性能。更复杂地,需考虑该二叉排序树是否平衡,如何使之达到平衡。

2017中南大学人工智能实验报告

“人工智能”实验报告 专业: 班级: 学号: 姓名: 2017年4月日

实验一搜索策略 (一)实验内容 1. 熟悉和掌握启发式搜索的定义、估价函数和算法过程;比较不同算法的性能。 2. 修改八数码问题或路径规划问题的源程序,改变其启发函数定义,观察结果的变化,分析原因。 (二)实验思路 1.利用已有程序“search.jar”,利用已有的“简单搜索树”图或自行构建一个图,选择DFS/BFS/Lowest Cost First/Best-First/Heuristic Depth First/A*等不同的搜索策略,观察程序运行中,OPEN表和CLOSED表的变化,观察搜索过程的变化,理解各个算法的原理。 2.任选八数码问题或路径规划问题的源程序,思考程序如何解决该问题,并对其启发函数进行修改,观察结果的变化,并分析原因 (三)程序清单 此处我选择了路径规划问题:由于篇幅原因,只附上启发函数的定义部分。 原启发函数: floatMapSearchNode::GoalDistanceEstimate( MapSearchNode&nodeGoal ) { floatxd = fabs(float(((float)x - (float)nodeGoal.x))); floatyd = fabs(float(((float)y - (float)nodeGoal.y))); return (xd + yd); } 第一次修改后的启发函数: float MapSearchNode::GoalDistanceEstimate( MapSearchNode&nodeGoal ) { float xd = fabs(float(((float)x - (float)nodeGoal.x))); float yd = fabs(float(((float)y - (float)nodeGoal.y))); float d=sqrt(xd*xd+yd*yd); return d; } 第二次修改后的启发函数: float MapSearchNode::GoalDistanceEstimate( MapSearchNode&nodeGoal ) { float xd = fabs(float(((float)x - (float)nodeGoal.x))); float yd = fabs(float(((float)y - (float)nodeGoal.y))); float d=3*sqrt(xd*xd+yd*yd); return d; } 第三次修改后的启发函数: float MapSearchNode::GoalDistanceEstimate( MapSearchNode&nodeGoal ) { float xd = fabs(float(((float)x - (float)nodeGoal.x)));

中南大学机械基础实验报告机类

机械基础实验报告 (机械类) 中南大学机械基础实验教学中心 2011年8月 目录 训练一机构运动简图测绘 (1) 实验二动平衡实验 (3) 实验三速度波动调节实验 (4) 实验四机构创意组合实验 (5) 实验五平面机构创新设计及运动测试分析实验 (6) 实验六螺栓联接静动态实验 (7) 实验七螺旋传动效率实验 (8) 实验八带传动实验 (9) 实验九液体动压轴承实验 (10) 实验十机械传动性能综合测试实验 (12) 实验十一滚动轴承综合性能测试分析实验 (13) 实验十二机械传动设计及多轴搭接实验 (14) 实验十三减速器拆装实验 (15)

训练一机构运动简图测绘 专业班级第组姓名成绩 1.一个正确的“机构运动简图”应能说明哪些内容?绘制机构运动简图的基本步骤是什么? 2.机构自由度与原动件的数目各为多少?当机构自由度=原动件的数目,机构的

运动是否确定? 五.收获与建议

实验二动平衡实验 专业班级第组姓名成绩一、实验目的: 二?设备名称: 三?实验数据 实验转速: 四.思考题: 转子动平衡为什么要在左右两个平面上进行平衡?

实验三速度波动调节实验专业班级第组姓名成绩一?实验目的: 二?设备名称: 三?实验数据 1?当转速不变时,采用不同的飞轮,数据记录: 结论:当转速不变时,飞轮转动惯量越大,则机构的速度波动越二?当飞轮不变时,转速变化,数据记录: 结论:当飞轮不变时,转速越大,则机构的速度波动越

实验四机构创意组合实验 专业班级第组姓名成绩 一、机构运动简图(要求符号规范标注参数) 二、机构的设计方案图(复印件) 三、机构有____________个活动构件?有______个低副,其中转动副_______个, 移动副__________个,有____________复合铰链,在_________处?有________处?有__________个虚约束,在__________处? 四、机构自由度数目为F=3n-2PL-PH=3X-2X-0= 五、机构有_________个原动件 在___________处用__________驱动,在__________处用___________驱动? 六、针对原设计要求,按照实验结果简述机构的有关杆件是否运动到位?曲柄是 否存在?是否实现急回特性?最小传动角数值?是否有“卡住”现象?(原无要求的项目可以不作涉及) 七、指出在机构中自己有所创新之处? 八、指出机构的设计存在的不足之处,简述进一步改进的设想?

微机原理及应用实验报告

微机原理及应用实验报告 班级:机械1301班 姓名:黄佳清 学号:0801130117 座位号: 中南大学机电工程学院

实验一单片机仿真开发机操作和MCS-51指令系统应用 一.实验目的 1、熟悉MCS-51单片机仿真开发机和开发调试软件的操作使用和调整; 2、学会编写和输入汇编语言源程序、对输入的源程序进行汇编; 3、掌握程序的调试和运行的各种方法。 三.实验内容及步骤(完成分值:60分) 本实验秩序运行Keil uVersion2程序,设置为keil为纯软件仿真 1.新建工程项目 2.设置工程文件参数 3.编写新程序事例 4.调试程序直至能够运行出结果。 四.实验程序 AJMP MAIN ORG 0030H MAIN: MOV R0,#20H MOV R2,#0FH MOV A,#00H A1: MOV @R0,A INC R0 INC A DJNZ R2,A1 MOV R0,#20H ;暂停,观察并记录! MOV DPTR,#7000H MOV R2,#0FH A2: MOV A,@R0 MOVX @DPTR,A INC R0 INC DPTR DJNZ R2,A2 MOV R0,#030H ;断点,观察并记录! MOV DPTR,#7000H MOV R2,#0FH A3: MOVX A,@DPTR MOVX @R0,A INC R0 INC DPTR DJNZ R2,A3 DO: LJMP DO END ;内部存储器数据块赋值,搬运数据块到外部存储器,再搬运回内部数据存储器。 五、附加题 1.将光标移到想要暂停的地方,MOV R0,#20H所在行,选择“执行到光

中南大学制造系统自动化技术实验报告整理

制造系统自动化技术 实验报告 学院:机电工程学院 班级:机制**** 姓名:张** 学号: *********** 指导教师:李** 时间: 2018-11-12 实验一柔性自动化制造系统运行实验 1.实验目的 (1)通过操作MES终端软件,实现对柔性制造系统的任务下达和控制加工,让学生

了解智能制造的特征及优势。 (2)通过创意性的实验让学生了解自动化系统总体方案的构思。 (3)通过总体方案的构思让学生了解该系统的工作原理,并学会绘制控制系统流程图,掌握物料流、信息流、能量流的流动路径。 (4)通过总体方案的构思让学生掌握各机械零部件、传感器、控制元器件的工作原理及性能。 (5)通过实验系统运行让学生了解运行的可靠性、安全性是采用何种元器件来实现的,促进学生进行深层次的思考和实践。 2.实验内容 (1)仔细观察柔性自动化制造系统的实现,了解柔性自动化制造系统的各个模块,熟悉各个模块的机械结构。 (2)了解各种典型传动机构的组装、工作原理、以及如何实现运动方向和速度的改变; (3)学习多种传感器的工作原理、性能和使用方法; (4)了解典型驱动装置的工作原理、驱动方式和性能; (5)理解柔性制造系统的工作原理,完成柔性制造系统的设计、组装; (6)实现对柔性制造系统的控制与检测,完成工件抓取、传输和加工。

3.实验步骤 (1)柔性制造系统的总体方案设计; (2)进行检测单元的设计; (3)进行控制系统的设计; (4)上下料机构的组装与检测控制; (5)物料传输机构的组装与实现; (6)柔性制造系统各组成模块的连接与控制; (7)柔性制造系统各组成单元的状态与工件状态位置的检测; (8)对机器人手动操作,实现对工件的抓取、传输。 4. 实验报告 ①该柔性自动化制造系统由哪几个主要的部分组成; 主要由:总控室工作站、AGV小车输送物料机构、安川机器人上下料工作站、法那科机器人上下料工作站、ABB机器人组装工作站、视觉检测及传送工作站、激光打标工作站、堆垛机及立体仓储工作站。 ②画出该柔性自动化制造系统的物料传输系统结构简图;

中南大学机械制造工艺学实验报告

机械制造工艺学实验报告 班级机械1301 姓名黄佳清 学号 07

中南大学机电学院 《机械制造工艺学》课程实验报告 实验名称:加工误差的统计分析 姓名:黄佳清班级:机械1301 学号: 07 实验日期: 2015 年 10 月 18 日指导教师:成绩: 1. 实验目的 (1)掌握加工误差统计分析方法的基本原理和应用。 (2)掌握样本数据的采集与处理方法,要求:能正确地采集样本数据,并能通过对样本 数据的处理,正确绘制出加工误差的实验分布曲线和图。 (3)能对实验分布曲线和图进行正确地分析,对加工误差的性质、工序能力及工艺 稳定性做出准确的鉴别。 (4)培养对加工误差进行综合分析的能力。 2. 实验内容与实验步骤

1.按加工顺序测量工件的加工尺寸,记录测量结果。 2.绘制直方图和分布曲线 1)找出这批工件加工尺寸数据的最大值x max和最小值x min,按下式计算出极差R。 R=x max一x min 2)确定分组数K(K一般根据样本容量来选择,建议可选在8~11之间)。 3)按下式计算组距 d。 4)确定组界(测量单位:微米)。 5)做频数分布表。 6)计算x和 。 7)画直方图 以样本数据值为横坐标,标出各组组界;以各组频率密度为纵坐标,画出直方图。 8)画分布曲线 若工艺过程稳定,则误差分布曲线接近正态分布曲线;若工艺过程不稳定,则应根据实际情况确定其分布曲线。画出分布曲线,注意使分布曲线与直方图协调一致。 9)画公差带 在横轴下方画出公差带,以便与分布曲线相比较。 3.绘制图 1)确定样组容量,对样本进行分组

样组容量m 通常取4或5件。按样组容量和加工时间顺序,将样本划分成若干个样组。 2)计算各样组的平均值和极差 对于第i 个样组,其平均值和极差计算公式为: ∑==m j ij i x m x 1 1 式中 ——第i 个样组的平均值; ——第i 个样组的标准差; ——第i 个样组第j 个零件的测量值; ——第i 个样组数据的最大值; ——第i 个样组数据的最小值 3)计算图控制限(计算公式见实验原理) 4)绘制 图 以样组序号为横坐标,分别以各样组的平均值和极差R 为纵坐标,画出图,并在图上标出中心线和上、下控制限。 4. 按下式计算工序能力系数Cp 5. 判别工艺过程稳定性 可按下表所列标准进行判别。注意,同时满足表中左列3个条件,工艺过程稳定;表中右列条件之一不满足,即表示工艺过程不稳定。

算法实验报告

算法分析与设计实验报告 学院:信息科学与工程学院 专业班级: 指导老师: 学号: 姓名:

目录 实验一:递归与分治 (3) 1.实验目的 (3) 2.实验预习内容 (3) 3.实验内容和步骤 (3) 4.实验总结及思考 (5) 实验二:回溯算法 (6) 1.实验目的: (6) 2.实验预习内容: (6) 3. 实验内容和步骤 (6) 4. 实验总结及思考 (9) 实验三:贪心算法和随机算法 (10) 1. 实验目的 (10) 2.实验预习内容 (10) 3.实验内容和步骤 (10) 4. 实验总结及思考 (13)

实验一:递归与分治 1.实验目的 理解递归算法的思想和递归程序的执行过程,并能熟练编写快速排序算法程序。 掌握分治算法的思想,对给定的问题能设计出分治算法予以解决。 2.实验预习内容 递归:递归算法是把问题转化为规模缩小了的同类问题的子问题。然后递归调用函数(或过程)来表示问题的解。 一个过程(或函数)直接或间接调用自己本身,这种过程(或函数)叫递归过程(或函数). 分治:分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解。 3.实验内容和步骤 快速排序的基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 源代码: #include using namespace std; int num; void swap(int &a,int &b) { int temp=a; a=b; b=temp; } void printarray(int *arr) { for (int i=1;i<=num;++i) cout<

中南大学计算机取证技术实验报告

学院:信息科学与工程学院 班级: 学号: 姓名: 指导老师:张健

目录 目录 ------------------------------------------------------------------------------------------------------------------ 0 实验一事发现场收集易失性数据-------------------------------------------------------------------------- 1 实验二磁盘数据映像备份---------------------------------------------------------------------------------- 6 实验三恢复已被删除的数据------------------------------------------------------------------------------ 10 实验四进行网络监听和通信分析------------------------------------------------------------------------- 15 实验五分析Windows系统中隐藏的文件和Cache信息 --------------------------------------------- 19 实验六数据解密 ------------------------------------------------------------------------------------------------ 25 总结 ----------------------------------------------------------------------------------------------------------------- 27

中南大学 计算机体系结构实验报告

计算机体系结构课程设计 学院:信息科学与工程学院 专业班级: 指导老师: 学号: 姓名:

目录 实验1 对指令操作码进行霍夫曼编码 (3) 一、实验目的 (3) 二、实验内容 (3) 三、设计思路 (4) 四、关键代码 (4) 五、实验截图 (5) 六、源代码 (5) 实验2 使用LRU 方法更新Cache (8) 一、实验目的 (8) 二、实验内容 (8) 三、设计思路 (9) 四、程序截图 (9) 五、实验代码 (9) 实验总结 (16) 参考文献 (16)

实验1 对指令操作码进行霍夫曼编码一、实验目的 了解和掌握指令编码的基本要求和基本原理 二、实验内容 1. 使用编程工具编写一个程序,对一组指令进行霍夫曼编码,并输出最后的编码结果以及对指令码的长度进行评价。与扩展操作码和等长编码进行比较。 2. 问题描述以及问题分析 举例说明此问题,例如: 下表所示: 对此组指令进行 HUFFMAN 编码正如下图所示: 最后得到的HUFFMAN 编码如下表所示:

最短编码长度为: H=0.45*1+0.30*2+0.15*3+0.05*4+0.03*5+0.01*6+0.01*6=-1.95. 要对指令的操作码进行 HUFFMAN 编码,只要根据指令的各类操作码的出现概率构造HUFFMAN 树再进行 HUFFAM 编码。此过程的难点构造 HUFFMAN 树,进行 HUFFAM 编 码只要对你所生成的 HUFFMAN 树进行中序遍历即可完成编码工作。 三、设计思路 观察上图,不难看出构造 HUFFMAN 树所要做的工作:1、先对各指令操作码的出现概率进行排序,构造一个有序链表。2、再取出两个最小的概率节点相加,生成一个生的节点加入到链表中,同时从两表中删除此两个节点。3、在对链表进行排序,链表是否只有一个节点,是则 HUFFAN 树构造完毕,否则继续做 2 的操作。为此设计一个工作链表(链表的元素时类,此类的功能相当结构。)、HUFFMAN 树节点、HUFFMAN 编码表节点。 四、关键代码 哈夫曼树重点在于如何排列权值大小不同的结点的顺序 private int leafNum; //叶子结点个数 private HaffmanNode[] hnodes; //哈夫曼树的结点数组 public HaffManCode(double[] weight) //构造指定权值集合的哈夫曼树 { int n = weight.length; //n个叶子结点 this.leafNum = n; this.hnodes = new HaffmanNode[2*n-1]; //n个叶子结点的哈夫曼树共有2n-1个结点 for(int i=0; i

中南大学微机原理及接口技术实验内容及报告要求

中南大学微机原理及接口技术实验内容及报告要求 一、实验内容: 实验一顺序程序设计与DEBUG使用 题目1.利用串操作传送指今将0FFH送入数据段的0180H开始的128个字节存储单元中,编写一段程序。 题目2.将数据段中0200H字节存储单元中的二位BCD码转换为二个ASCII码送0201H 开始的二个字节单元中,编写—段程序。 题目3.编写一段程序,在内存中自SQTAB(0200H)地址开始的连续十个单元中存放0~9的平方值。要求利用计算法查表求 NUM(0210H)单元中指定数(0~9中的任意一数)的平方值,并将所求平方值存入RESULT(0211H)单元中。 [注]:题目二和题目三可选做一个,题目一必做。 详细实验要求及步骤方法,参见“ DEBUG 实验参考” 实验二键盘、显示程序设计实验(教材P30) 提高部分: 1、显示数据输入提示信息、键盘输入一个字符,屏幕显示字符的ASCⅡ码; 2、显示字符串输入提示信息、键盘输入一个字符串,屏幕显示对应字符串中各字符的ASC Ⅱ码。 实验三数据传送、数码转换程序设计实验(教材P33、35) 提高部分: 1、数据传送,完成20个数据的传送,并对附加段数据进行升序排列,并在屏幕上显示排序后的数据,以及最大数据和最小数据。 2、数据转换,键盘输入2位(或以上)十进制数,分别转换成十六进制数、BCD码、七段共阳极码。 实验四运算类程序设计实验(教材P39) 提高部分:键盘输入5位被减数和减数,计算并以恒等式形式显示在屏幕上(允许被减数< 减数)。 实验五基本I/O接口与地址译码电路设计实验(教材P72、75) 提高部分: 1、在“基本I/O接口电路设计实验”中,如何扩展16路输入、输出功能? 2、在“地址译码电路设计实验”中,将Y6与CS_A、Y7与CS_B,改换成 Y0与CS_A、Y1 与CS_B连接,修改程序并实现实验功能。 实验六 8255接口电路设计实验(教材P95) 提高部分:

中南大学x射线实验报告参考

中南大学 X射线衍射实验报告 学院专业班级 姓名学号同组者 月日指导教师 实验 日期 评分分评阅人评阅日期 实验目的 1)掌握X射线衍射仪的工作原理、操作方法; 2)掌握X射线衍射实验的样品制备方法; 3)学会X射线衍射实验方法、实验参数设臵,独立完成一个衍射实验测试; 4)学会MDI Jade 6的基本操作方法; 5)学会物相定性分析的原理和利用Jade进行物相鉴定的方法; 6)学会物相定量分析的原理和利用Jade进行物相定量的方法。 本实验由衍射仪操作、物相定性分析、物相定量分析三个独立的实验组成,实验报告包含以上三个实验内容。 一、实验原理 1、X射线衍射仪 (1)X射线管 X射线管工作时阴极接负高压,阳极接地。灯丝附近装有控制栅,使灯丝发出的热电子在电场的作用下聚焦轰击到靶面上。阳极靶面上受电子束轰击的焦点便成为X射线源,向四周发射X射线。在阳极一端的金属管壁上一般开有四个射线出射窗口。转靶X射线管采用机械泵+分子泵二级真空泵系统保持管内真空度,

阳极以极快的速度转动,使电子轰击面不断改变,即不断改变发热点,从而达到提高功率的目的 (2)测角仪系统 测角仪圆中心是样品台,样品台可以绕中心轴转动,平板状粉末多晶样品安放在样品台上,样品台可围绕垂直于图面的中心轴旋转;测角仪圆周上安装有X 射线辐射探测器,探测器亦可以绕中心轴线转动;工作时,一般情况下试样台与探测器保持固定的转动关系(即θ-2θ连动),在特殊情况下也可分别转动;有的仪器中样品台不动,而X 射线发生器与探测器连动。 (3)衍射光路 2、物相定性分析 1) 每一物相具有其特有的特征衍射谱,没有任何两种物相的衍射谱是完全相同 的 2) 记录已知物相的衍射谱,并保存为PDF 文件 3) 从PDF 文件中检索出与样品衍射谱完全相同的物相 4) 多相样品的衍射谱是其中各相的衍射谱的简单叠加,互不干扰,检索程序能 从PDF 文件中检索出全部物相 3、物相定量分析 物相定量分析——绝热法 在一个含有N 个物相的多相体系中,每一个相的RIR 值(参比强度)均为已知的情况下,测量出每一个相的衍射强度,可计算出其中所有相的质量分数: 其中某相X 的质量分数可表示为: ∑ == N A i i A i X A X X K I K I W 式中A 表示N 个相中被选定为内标相的物相名称 式中A O Al X O Al X A K K K 3 232= 右边是两个物相X 和A 的RIR 值,可以通过实测、计算或查找PDF 卡片获得。 样品中只含有两相A 和B ,并选定A 为内标物相,则有:

中南大学人工智能实验报告

“人工智能”实验报告 专业 班级 学号 姓名

目录 一、实验八自动规划实验群 (3) 二、实验一生产式系统实验群 (6) 三、实验二搜索策略实验群 (7) 四、实验七神经网络 (9) 五、实验心得和体会 (10)

实验八自动规划实验群 姓名班级指导老师日期2011.12 实验目 的 熟悉和掌握自动规划的基本原理,方法和主要技术。 实验原理规划是一种问子题求解技术,它从某个特定的问题状态出发,寻求一系列行为动作,并建立一个操作序列,直到求得目标状态为止。简而言之,规划是一个行动过程的描述。一个总规划可以含有若干个子规划。 实验环 境 转载相 关源文 件 实验环境 转载相关源文件 实现过 程 单步观察实验算法

算法结果分析 观测结果通过规定规则,确定initial state和goal state,使得移动臂按照规则进行移动。分别进行clear holding pickup putdown putdowntable等实现对木块的移动。 实现过程先进行逆向推理选择,找出途径后再进行移动。 学生结论对于不同的规则将会出现不同的移动过程。通过规定不同的动作可实现不通过的移动。

实验一生产式系统实验群 姓名指导老师日期2011.12 实验目的熟悉和掌握产生式系统的运行机制,掌握基 于规则推理的基本方法。 推理方 法 逆向推理 建立规则库建立事实库 该动物是哺乳动物<- 该动物有毛发. 该动物是哺乳动物<- 该动物有奶. 该动物是鸟<- 该动物有羽毛. 该动物是鸟<- 该动物会飞&会下蛋. 该动物是食肉动物<- 该动物吃肉. 该动物是食肉动物<- 该动物有犬齿&有爪&眼盯前方. 该动物是有蹄类动物<- 该动物是哺乳动物&有蹄. 该动物是有蹄类动物<- 该动物是哺乳动物& 是嚼反刍动物. 该动物是金钱豹<- 该动物是哺乳动物&是食肉动物&是黄褐色&身上有暗斑点. 该动物是虎<- 该动物是哺乳动物&该动物是食肉动物&是黄褐色&身上有黑色条纹. 该动物是长颈鹿<- 该动物是有蹄类动物&有长脖子&有长腿&身上有暗斑点. 该动物是斑马<- 该动物是有蹄类动物&身上有黑色条纹. 该动物是鸵鸟<- 该动物是鸟&有长脖子&有长腿&不会飞&有黑白二色. 该动物是企鹅<- 该动物是鸟&会游泳&不会飞&有黑白二色. 该动物是信天翁<- 该动物是鸟&善飞. %------动物识别系统事实集: %会游泳. %--该动物是企鹅 %不会飞. %有黑白二色. %该动物是鸟. %-------- %--该动物是鸟 %该动物会飞. %会下蛋. %----该动物是金钱豹<- 该动物是哺乳动物&是食肉动物&是黄褐色&身上有暗斑点. %该动物有毛发. %是食肉动物. %是黄褐色. %身上有暗斑点. %----该动物是虎<- 该动物是哺乳动物&该动物是食肉动物&是黄褐色&身上有黑色条纹. %该动物是哺乳动物. %是食肉动物. %是黄褐色. %身上有暗斑点. %----该动物是长颈鹿<- 该动物是有蹄类动物&有长脖子&有长腿&身上有暗斑点. %该动物是有蹄类动物. %有长脖子. %有长腿. %身上有暗斑点. 预测结果假设目标为该动物是金钱豹,则结果为true. 实验过程及结果(注意观测规则的匹配过程和方法) (1)假设这个动物是金钱豹。为了检验这个假设,根据规则, 要求这个动物是哺乳动物&是食肉动物&是黄褐色&身上有暗 斑点. (2)必须检验这个动物是否为哺乳动物。先由规则库中的: 该动物是哺乳动物<- 该动物有毛发.该动物是哺乳动物<- 备注(原因等) 根据逆向推理可以逐步 确定

计算机网络课程设计实验报告

中南大学课程设计报告 课程:计算机网络课程设计 题目:基于Winpcap的网络流量统计分析 指导教师:张伟 目录 第一章总体设计 一、实体类设计 --------P3 二、功能类设计 --------P3 三、界面设计 --------P3 第二章详细设计 一、实体类实现 --------P4 二、功能类实现 --------P4 三、界面实现 --------P5 第三章源代码清单及说明 一、CaptureUtil.java --------P7 二、MyPcapPacketHandler.java --------P9 三、PacketMatch.java --------P9 四、Windows.java --------P13 第四章运行结果 --------P19 第五章心得体会 --------P21 第一章总体设计 一、实体类设计 TCP、UPD、ICMP、ARP、广播数据包五个包的数据结构设计 二、功能类设计 (1)网卡获取 (2)包的抓捕 (3)包的处理 三、界面设计 (1)布局 (2)按钮功能连接 第二章第二章详细设计 一、实体类实现 TCP、UPD、ICMP、ARP、广播数据包五个包的数据结构设计。 本程序采用Java编写,基于win10pcap。Win10pcap是winpcap在win10系统上的适用版本。Java对于winpcap使用jnetpcap进行支持。对于TCP、UPD、ICMP、ARP、广播数据包五种类型的包,在jnetpcap

的jar包中大部分已经封装好了相关的实体类型。对应如下: ARP 实体类: UPD 实体类: IP 实体类: TCP 实体类: UDP 实体类: 而对于其中的广播数据包,其判断我利用捕获到的IP包的目的地址进行判断,若其目的地址为,则认为其为广播数据包。 二、功能类实现 (1)网卡获取 电脑上的包的发送与接受都得通过网卡来进行,所以为了完成局域网数据包的捕获和统计,我首先要做的是获取到电脑上的网卡列表,然后选择一个网卡进行包的捕获。而相关代码在jnetpcap的官网的示例代码1中可以找到,从中可以学习到的是jnetpcap的各种使用方法。 在我电脑上可以捕获到三个网卡,一个是本机自身的物理网卡,另外两个是虚拟机模拟出的虚拟网卡。 (2)包的抓捕 Jnetpcap中包的抓捕也是有着固定的格式的,这在官网的示例代码中也是可以找到的,只要设置好相关的参数,就可以进行抓捕 具体方法如下,利用Pcap对象的loop方法。就是实例化一个Pcap对象,然后调用其loop方法。第一个参数arg0 代表循环次数,第二个参数就是传入一个PcapPaketHandler或其子类的对象,这个对象类型是要由我们自己编写的对包处理的方法。 (3)包的处理 在这里对捕获的包的处理我是编写了一个PcapPacketHandler的子类,然后重写了nextPacket()方法。在这个方法里我把捕获到的包当作参数传递个具体的处理方法packetMatch.handlePacket(packet)。 packetMatch.handlePacket(packet)方法是由我自己编写的。handlePacket是packetMatch 的一个静态方法,可以直接调用。在这个方法里面,它会把捕获到的包的包头和T CP、UPD、ICMP、ARP、广播数据包五种类型的包的包头进行一一比较,以确认是否抓到了了相对应的包。 这儿还用到的就是jnetpcap的内部的一个方法,就是packet.hasHeader(arg0),通过在arg0传入已在jnetpcap里封装好的包的类型的实例,可以很好的判断该包是属于什么包类型的,是T CP、UPD、ICMP、ARP还是广播数据包。 然后内部对于各种包的信息的输出也有很好的支持,可以直接使用相应的toString方法,就可以输出各种相关信息。 (4)网络流量统计 对于各个捕获到的包,分别针对各种类型的包设计了一个Double变量用于统计其传送过来相应包头的大小,并在停止抓包后将统计的数据输出在最下方的TextArea里面。 三、界面实现 本程序在设计GUI时使用了Java的一个很好的插件WindowBuilder。 (1)布局 一开始使用Border Layout布局,安排好各个按钮位置,文本框位置。后来采用Absolute layout,并将窗口大小固定化。 在布局的最上方是一个JToolBar的实例对象,其中放置有选择网卡、开始抓包、停止抓包、清空记录等四个选项,中间是两个带滚动条的多行文本框,左边的用于显示捕获的包的列表,右边用于显示左边的我们选中的包的具体信息。最下方会在停止抓包按钮生效后输出总的抓包情况。

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