华中科技大学计算机原理实验报告

合集下载

华中科技大学计算机原理实验报告

华中科技大学计算机原理实验报告

电气学科大类《计算机原理与应用实验》课程实验报告电气与电子工程学院级姓名:学号:专业班号:日期:2014年1月7日实验成绩:评阅人:实验评分表目录实验评分表错误!未指定书签。

实验一:软件安装与使用错误!未指定书签。

一、实验目的错误!未指定书签。

二、实验设备错误!未指定书签。

三、实验任务错误!未指定书签。

四、实验原理错误!未指定书签。

五、实验内容错误!未指定书签。

六、实验过程及结果错误!未指定书签。

七、实验感想八、参考文献实验二:汇编语言实例讲解与程序编写一、实验目的二、实验设备三、实验任务四、实验原理五、实验内容六、实验过程及结果七、实验感想八、参考文献实验三:基于软件的最小系统硬件设计一、实验目的二、实验设备三、实验任务四、实验原理五、实验内容六、实验过程及结果七、实验感想八、参考文献实验四:基于最小系统的汇编程序设计一、实验目的错误!未指定书签。

二、实验设备错误!未指定书签。

三、实验任务错误!未指定书签。

四、实验原理错误!未指定书签。

五、实验内容六、实验过程及结果七、实验感想八、参考文献实验五:并行接口实验(演示实验)一、实验目的二、实验设备三、实验任务四、实验原理五、实验内容六、实验过程及结果七、实验感想八、参考文献实验六:工频测频接口电路设计与实现一、实验目的二、实验设备三、实验任务四、实验原理五、实验内容六、实验过程及结果七、实验感想八、参考文献实验一:软件安装与使用一、实验目的通过本实验学习软件的安装与使用。

二、实验设备微机一台,仿真软件三、实验任务.安装仿真软件。

.利用仿真软件编程。

四、实验原理仿真软件就是在下的一种仿真软件,它可以仿真模拟的程序运行,并且可以直观地观察寄存器的变化情况。

结合了一个先进的原始编辑器、组译器、反组译器、具除错功能的软件模拟工具(虚拟),还有一个循序渐进的指导工具。

这对刚开始学组合语言的人会是一个很有用的工具。

它会在模拟器中一步一步的编译程序码并执行,视觉化的工作环境让它更容易使用。

华中科技大学,组成原理实验报告,第二次实验,半导体存储器实验

华中科技大学,组成原理实验报告,第二次实验,半导体存储器实验

课程实验报告课程名称:计算机组成原理专业班级:信息安全1003班学号:U201014669姓名:蒋志斌同组成员:张源信报告日期:2012年6月计算机科学与技术学院目录一、实验名称 (3)二、实验目的 (3)三、实验设备 (3)四、实验任务 (3)五、预备知识 (4)1、RAM6116的功能特性 (4)2、存储器芯片的工作原理 (5)3、注意事项 (5)六、设计思路、电路实现与电路分析说明 (5)1、任务分析 (5)2、设计思路 (7)3、电路实现与详细分析说明 (7)七、实验结果的记录与分析 (10)八、实验中碰到的问题及解决办法 (10)九、收获与体会 (10)十、参考书目 (11)一、实验名称实验名称:半导体存储器实验二、实验目的1.掌握半导体随机读写存储器RAM的工作原理特性及其使用方法。

2.掌握半导体存储器进行读写的过程及读写周期、时序等。

3.掌握半导体存储器扩充的方法。

4.掌握对存储数据进行奇偶效验的原理和方法。

三、实验设备JZYL—Ⅱ型计算机组成原理实验仪一台。

芯片:6116存储器芯片1块74LS244数据开关2块74LS193计数器1块四、实验任务根据实验指导书P12—P16页的要求,按照下图完成8位存储器基本实验内容。

要求:1)、为了提高存储器读写数据的可靠性,在基本存储方案的基础上,自行设计电路对写入的数据进行编码处理,即形成奇偶效验码,并将产生的校验信息与数据一并保存。

2)、对读出的数据通过奇偶效验方式进行验证,检查写入的数据在保存和读出过程中是否出现错误,保证存储器数据写入读出的可靠性。

3)、校验指示灯:当从6116读出信息时,校验指示灯亮;其它情况下灭。

4)、读写模式、读写操作:读模式下,如果开关为读操作,则无冲突;读模式下,如果开关为写操作,则发生冲突;写模式下,如果开关为读操作,则发生冲突;写模式下,如果开关为写操作,则无冲突;5)、冲突说明:冲突时,报警灯亮,244处于高阻态,6116不工作,7个数据灯、一个校验码灯和一个校验指示灯全灭。

华中科技大学计算机网络实验二报告

华中科技大学计算机网络实验二报告

华中科技大学计算机网络实验(二)报告————————————————————————————————作者:————————————————————————————————日期:ﻩ计算机网络课程实验报告实验2:抗干扰编码姓名李蓝鑫院系自动化学院学号U201514280实验地点科技楼十二楼机房实验时间2018年5月3日实验目的:1. 了解抗干扰编码原理。

2、掌握海明编码和CRC编码的原理,能熟练计算实验内容:内容1:海明编码1.1海明编码原理将有效信息按某种规律分成若干组,每组安排一个校验位通过异或运算进行校验,得出具体的校验码;在接收端同样通过异或运算看各组校验结果是否正确,并观察出错的校校组,或者个出错的校验组的共同校验位,得出具体的出错比特位;对错误位取反来将其纠正;假设用N表示添加了校验码位后整个传输信息的二进制位数,用K代表其中有效信息位数,r表示添加的校验码位数,它们之间的关系应满足:N=K+r≤2^r-1(是为了确保r位校验码能校验全部的数据位,因为r位校验码所能表示的最大十进制数为2^r-1,同时也确保各位码本身不被其他校验码校验)。

海明码的校验码的位置必须是在2n次方位置(n从0开始,分别代表从左边数起分别是第1、2、4、8、16……),信息码也就是在非2n次方位置第i位校验码从当前校验码位开始,每次连续校验i位后再跳过i位,然后再连续校验i位,再跳过i位,以此类推。

确定每个校验码所校验的比特位:1.2海明编码程序流程图1.3交互界面设计编码:原码序列从“输入序列”编辑框输入,点击“编码”按钮在“编码序列”编辑框内输出编码序列,对输入编码要求为二进制输入译码:编码序列从“输入序列”编辑框输入,点击“译码”按钮在“译码序列”编辑框内输出译码序列,若译码错误会有响应的报错和纠错,对输入序列有不小于三位和二进制序列的要求1.4核心代码与注释输入序列框callback%做输入检测,检测是否是“0”“1”输入,否则报错temp_str=get(handles.input,'String');num_char=unique(temp_str);%unique函数获得输入字符串中不同字符的字符串if length(num_char)==2 %如果字符串长度为2if num_char(2)=='1' %第二个字符不是“1”说明字符串中有其他字符else set(handles.input,'String','0000');errordlg('只能输入1和0','输入错误');endelseif length(num_char)==1 %如果字符串长度为1,判断“1”还是“0",否则报错if num_char(1)=='0'elseif num_char(1)=='1'elseset(handles.input,'String','0000');errordlg('只能输入1和0','输入错误');endelse %如果字符串长度不为2,直接报错set(handles.input,'String','0000');errordlg('只能输入1和0','输入错误');End编码按钮callback(编码核心)%获取输入字符串temp_str=get(handles.input,'string');%获取字符串长度len_str=length(temp_str);%转存原码字符串长度备用k=len_str;%初始化需要插入的校验码的位数r=0;%根据海明编码的2^(r)-1)<(k+r)要求,计算校验码位数while((2^(r)-1)<(k+r))r=r+1;end%把字符串数组转成0和1的数组,便于处理for i=1:1:len_strif temp_str(i)=='1'yuan(i)=1;%原码数组为yuanelseyuan(i)=0;endend%把求得相应位数的校验码,用0插入原码中得到新码j=0;m=1;for i=1:1:(k+r)if i==2^(j) %如果该位置为2的次方,则插入校验码xin(i)=0;j=j+1;elsexin(i)=yuan(m);m=m+1;endend%进行海明编码odd=0;%用于计算每位校验码负责校验的位置的和for j=1:1:r %共有r位校验码,需要计算r次n=1; %初始化循环变量i=1;while((n*2^(j-1)+i-1)<=(k+r))%当没有超过数组长度时继续循环if i>(2^(j-1)) %如果本段的编码已经加完i=1; %则调转到下一段,也就是隔一个2^(j-1)的段再进行累加n=n+2;else %累加odd=odd+xin(n*2^(j-1)+i-1);i=i+1;endendif mod(odd,2)==0 %判断是否为偶数xin(2^(j-1))=0; %若为偶数,则在对应的校验位插入0 elsexin(2^(j-1))=1; %若为奇数,则在对应的校验为插入1 endodd=0;end%编码完毕,把数组转换成字符串用于输出for i=1:1:(k+r)if xin(i)==1output_str(i)='1';elseoutput_str(i)='0';endendset(handles.out,'String',output_str);译码按钮callback(原理与编码基本相同)%获得译码序列字符串temp_str=get(handles.input,'string');len_str=length(temp_str);%判断输入序列长度是否满足要求,不满足报错返回if len_str<3errordlg('译码最低输入位数为3位','输入出错');elsek=len_str;%编码中信息码的个数r=len_str;%编码中校验码的个数while((2^(r)-1)>=len_str)r=r-1;endr=r+1;%找到校验码的个数k=len_str-r;for i=1:1:len_str%得到所有编码数组if temp_str(i)=='1'xin(i)=1;elsexin(i)=0;endend%提取出信息编码数组m=1;j=0;for i=1:1:(k+r)if i==2^(j)j=j+1;elseyuan(m)=xin(i);m=m+1;endend%重新偶校验,原理同编码odd=0;for j=1:1:rn=1;i=1;while((n*2^(j-1)+i-1)<=(k+r))if i>(2^(j-1))i=1;n=n+2;elseodd=odd+xin(n*2^(j-1)+i-1);i=i+1;endendif mod(odd,2)==0check(j)=0; %校验结果存在check数组中elsecheck(j)=1;endodd=0;end%把check数组也就是校验结果转成十进制数num_wrong=0;for j=1:1:rnum_wrong=num_wrong*2;if check(r-j+1)==1num_wrong=num_wrong+1;endend%判断校验是否正确,为0则正确if num_wrong==0for m=1:1:kif yuan(m)==1output_str(m)='1';elseoutput_str(m)='0';endendset(handles.ym_out,'String',output_str);else%否则校验错误,对应位置取反后再输出if xin(num_wrong)==0xin(num_wrong)=1;elsexin(num_wrong)=0;endm=1;j=0;for i=1:1:(k+r)if i==2^(j)j=j+1;elseyuan(m)=xin(i);m=m+1;endendfor m=1:1:kif yuan(m)==1output_str(m)='1';elseoutput_str(m)='0';endendset(handles.ym_out,'String',output_str);errordlg(['校验码第',num2str(num_wrong),' 位出错,对应位置取反后得到正确解码为',output_str],'校验出错');endend1.5程序执行测试1.5.1 编码测试①正常编码1.5.2 译码测试①输入报错②正常解码③解码错误与纠正内容2:CRC编码2.1 CRC编码原理在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码也叫(N,K)码。

华科_计算机系统实验报告

华科_计算机系统实验报告

课程实验报告课程名称:计算机系统基础专业班级:学号:姓名:指导教师:报告日期:年月日计算机科学与技术学院目录实验1: (1)实验2: (7)实验3: (24)实验总结 (34)实验1:数据表示1.1 实验概述实验目的:更好地熟悉和掌握计算机中整数和浮点数的二进制编码表示。

实验目标:加深对数据二进制编码表示的了解。

实验要求:使用有限类型和数量的运算操作实现一组给定功能的函数。

实验语言:c。

实验环境:linux1.2 实验内容需要完成bits.c中下列函数功能,具体分为三大类:位操作、补码运算和浮点数操作。

1)位操作表1列出了bits.c中一组操作和测试位组的函数。

其中,“级别”栏指出各函数的难度等级(对应于该函数的实验分值),“功能”栏给出函数应实现的输出(即功能),“约束条件”栏指出你的函数实现必须满足的编码规则(具体请查看bits.c中相应函数注释),“最多操作符数量”指出你的函数实现中允许使用的操作符的最大数量。

你也可参考tests.c中对应的测试函数来了解所需实现的功能,但是注意这些测试函数并不满足目标函数必须遵循的编码约束条件,只能用做关于目标函数正确行为的参考。

表1 位操作题目列表2)补码运算表2列出了bits.c中一组使用整数的补码表示的函数。

可参考bits.c中注释说明和tests.c中对应的测试函数了解其更多具体信息。

表2 补码运算题目列表3)浮点数操作表3列出了bits.c中一组浮点数二进制表示的操作函数。

可参考bits.c中注释说明和tests.c中对应的测试函数了解其更多具体信息。

注意float_abs的输入参数和返回结果(以及float_f2i函数的输入参数)均为unsigned int类型,但应作为单精度浮点数解释其32 bit二进制表示对应的值。

表3 浮点数操作题目列表表示,当输入参数是NaN 时,返回NaN 号整型操作,包括||,&&以及if,while控制结构4 float_f2i 返回浮点数‘f’的强制整型转换“(int)f”表示仅能使用任何整型/无符号整型操作,包括||,&&以及if,while控制结构301.3 实验设计根据题目要求,选择合适的操作符来编写代码。

华科-计算机系统实验报告

华科-计算机系统实验报告

课程实验报告课程名称:计算机系统基础专业班级:学号:姓名:指导教师:报告日期:年月日计算机科学与技术学院目录实验1: (1)实验2: (7)实验3: (24)实验总结 (34)实验1:数据表示1.1 实验概述实验目的:更好地熟悉和掌握计算机中整数和浮点数的二进制编码表示。

实验目标:加深对数据二进制编码表示的了解。

实验要求:使用有限类型和数量的运算操作实现一组给定功能的函数。

实验语言:c。

实验环境:linux1.2 实验内容需要完成bits.c中下列函数功能,具体分为三大类:位操作、补码运算和浮点数操作。

1)位操作表1列出了bits.c中一组操作和测试位组的函数。

其中,“级别”栏指出各函数的难度等级(对应于该函数的实验分值),“功能”栏给出函数应实现的输出(即功能),“约束条件”栏指出你的函数实现必须满足的编码规则(具体请查看bits.c中相应函数注释),“最多操作符数量”指出你的函数实现中允许使用的操作符的最大数量。

你也可参考tests.c中对应的测试函数来了解所需实现的功能,但是注意这些测试函数并不满足目标函数必须遵循的编码约束条件,只能用做关于目标函数正确行为的参考。

表1 位操作题目列表2)补码运算表2列出了bits.c中一组使用整数的补码表示的函数。

可参考bits.c中注释说明和tests.c中对应的测试函数了解其更多具体信息。

表2 补码运算题目列表3)浮点数操作表3列出了bits.c中一组浮点数二进制表示的操作函数。

可参考bits.c中注释说明和tests.c中对应的测试函数了解其更多具体信息。

注意float_abs的输入参数和返回结果(以及float_f2i函数的输入参数)均为unsigned int类型,但应作为单精度浮点数解释其32 bit二进制表示对应的值。

表3 浮点数操作题目列表表示,当输入参数是NaN 时,返回NaN 号整型操作,包括||,&&以及if,while控制结构4 float_f2i 返回浮点数‘f’的强制整型转换“(int)f”表示仅能使用任何整型/无符号整型操作,包括||,&&以及if,while控制结构301.3 实验设计根据题目要求,选择合适的操作符来编写代码。

华中科技大学-计算机学院-数据结构实验报告

华中科技大学-计算机学院-数据结构实验报告

华中科技大学-计算机学院-数据结构实验报告LT目录1基于顺序存储结构实现线性表的基本运算 (1)1.1 实验目的 (1)1.2 线性表演示系统设计 (1)1.2.1 系统总体设计 (1)1.2.2 有关常量和类型定义 (1)1.2.3 算法设计 (1)1.3 线性表演示系统实现与测试 (3)1.3.1 系统实现 (3)1.3.2 系统测试 (11)1.4 实验小结 (12)2 基于链式实现线性表的基本运算 (13)2.1 问题描述 (13)2.2 线性表演示系统设计 (13)2.2.1 系统总体设计 (13)2.2.2 有关常量和类型定义 (13)2.2.3 算法设计 (13)2.3 线性表演示系统实现与测试 (15)2.3.1 系统实现 (15)2.3.2 系统测试 (24)2.4 实验小结 (25)3基于顺序存储结构实现栈的基本运算 (27)3.1实验目的 (27)3.2栈演示系统设计 (27)3.2.1 系统总体设计 (27)3.2.2 算法实现 (27)3.3 栈演示系统实现与测试 (28)3.3.1 程序实现 (28)3.3.2 系统测试 (34)3.4 实验小结 (35)4基于循环队列存储结构实现队列的基本运算 (36)4.1 问题描述 (36)4.2.1 系统总体设计 (36)4.2.2 有关常量和类型定义 (36)4.2.3 算法设计 (36)4.3 队列演示系统实现与测试 (37)4.3.1 系统实现 (37)4.3.2 系统测试 (44)4.4 实验小结 (45)5基于二叉链表实现二叉树的基本运算 (46)5.1 实验目的 (46)5.2.1 系统总体设计 (46)5.2.2 有关常量和类型定义 (46)5.2.3 算法设计 (46)5.3 二叉树演示系统实现与测试 (48)5.3.1 系统实现 (48)5.3.2 系统测试 (79)5.4 实验小结 (81)6基于邻接表实现图的基本和常见运算 (82)6.1 实验目的 (82)6.2.1 系统总体设计 (82)6.2.2 有关常量和类型定义 (82)6.2.3 算法设计 (82)6.3 图演示系统实现与测试 (83)6.3.1 系统实现 (83)6.3.2 系统测试 (101)6.4 实验小结 (103)参考文献 (104)1基于顺序存储结构实现线性表的基本运算1.1 实验目的通过实验达到:(1)加深对线性表的概念、基本运算的理解;(2)熟练掌握线性表的逻辑结构与物理结构的关系;(3)物理结构采用顺序表,熟练掌握线性表的基本运算的实现。

华科计算机并行实验报告

华科计算机并行实验报告

课程设计报告题目:并行实验报告课程名称:并行编程原理与实践专业班级:学号:姓名:指导教师:报告日期:计算机科学与技术学院目录1,实验一 (1)1 实验目的与要求 (1)1.1实验目的 (1)1.2实验要求 (1)2 实验内容 (1)2.1.1熟悉pthread编程 (1)2.1.2简单的thread编程 (2)2.2.1熟悉openMP编程 (3)2.3.1熟悉MPI编程 (4)2,实验2~5 (7)1 实验目的与要求 (7)2 算法描述 (7)3.实验方案 (8)4实验结果与分析 (8)3 心得体会 (10)附录: (10)3 蒙特.卡罗算法求π的并行优化 (19)1.蒙特.卡罗算法基本思想 (19)2.工作过程 (20)3.算法描述 (20)4 设计与实现 (21)5 结果比较与分析 (23)6 思考与总结 (24)1,实验一1 实验目的与要求1.1实验目的1)熟悉并行开发环境,能进行简单程序的并行开发,在Linux下熟练操作。

2)熟悉一些并行工具,如pthread,OpenMP,MPI等进行并行编程3)培养并行编程的意识1.2实验要求1)利用pthread、OpenMP、MPI等工具,在Linux下进行简单的并行编程,并且掌握其编译、运行的方法。

2)理解并行计算的基础,理解pthread、OpenMP、MPI等并行方法。

2 实验内容2.1.1熟悉pthread编程Linux系统下的多线程遵循POSIX线程接口,称为 pthread。

编写Linux下的多线程程序,需要使用头文件pthread.h,连接时需要使用库libpthread.a。

下面是pthread编程的几个常用函数:1,int pthread_create(pthread_t *restrict tidp,const pthread_attr_t *restrict attr, void *(*start_rtn)(void),void *restrict arg);返回值:若是成功建立线程返回0,否则返回错误的编号形式参数:pthread_t *restrict tidp 要创建的线程的线程id指针const pthread_attr_t *restrict attr 创建线程时的线程属性void* (start_rtn)(void) 返回值是void类型的指针函数void *restrict arg start_rtn的行参2 , int pthread_join( pthread_t thread, void **retval );thread表示线程ID,与线程中的pid概念类似;retval用于存储等待线程的返回值连接函数pthread_join()是一种在线程间完成同步的方法。

华中科技大学计算机学院C实验报告实验三

华中科技大学计算机学院C实验报告实验三

课程实验报告课程名称:面向对象程序设计实验名称:面向对象的整型栈编程院系:计算机科学与技术专业班级:CS1209班学号:___________姓名:一扌旨导教师 : ____ 李春花________2015 年01月22 日一、需求分析1. 题目要求整型栈是一种先进后出的存储结构,对其进行的操作通常包括判断栈是否为空、向栈顶 添加一个整型元素、出栈等。

整型栈类型及其操作函数采用面向对象的C++语言定义,请将完成上述操作的所有函数采用 C++编程,然后写一个main 函数对栈的所有操作函数进行测 试。

class STACK{int *con st elems; //申请内存用于存放栈的元素 const int max;〃栈能存放的最大元素个数int pos; //栈实际已有元素个数,栈空时pos=0;public:STACK(int m);//初始化栈:最多m 个元素STACK(co nst STACK&s); virtual int size ( ) con st; virtual operator int ( ) con st; virtual int operator] ] (int x) con st; virtual STACK & operator«(i nt e); virtual STACK & operator»(i nt &e); //virtual STACK& operator=(const STACK&s); //赋 s 给栈,并返回被赋值的栈 virtual void prin t( ) con st;virtual ~STACK(); //打印栈//销毁栈};2. 需求分析采用面向对象的C++语言定义,构建整型栈并对其进行判断栈是否为空、向栈顶添加一个 整型元素、出栈等操作。

、系统设计 概要设计用结构实现栈,此结构包括指向栈的指针,最大容量,和当前的元素个数等三个元素 要求是栈的元素是栈元素类型是整形。

计算机原理实验报告

计算机原理实验报告

实验名称:计算机原理实验实验日期:2023年X月X日实验地点:计算机实验室实验目的:1. 理解计算机的基本工作原理和组成结构。

2. 掌握计算机各部件的功能和相互关系。

3. 熟悉计算机指令系统和工作流程。

4. 培养动手能力和实验技能。

实验内容:一、计算机硬件组成实验1. 实验目的:了解计算机硬件的组成和各部件的功能。

2. 实验步骤:(1)观察计算机主机,识别各硬件部件,如CPU、内存、硬盘、显卡等。

(2)了解各硬件部件的功能和相互关系。

(3)拆装计算机,练习硬件组装和维修。

二、计算机指令系统实验1. 实验目的:熟悉计算机指令系统,掌握指令的格式和功能。

2. 实验步骤:(1)学习计算机指令系统的基础知识,了解指令的分类和功能。

(2)分析指令的格式,掌握指令的编码方式。

(3)编写简单的程序,实现指令的功能。

三、计算机工作流程实验1. 实验目的:理解计算机的工作流程,掌握程序执行的过程。

2. 实验步骤:(1)学习计算机工作流程的基本知识,了解程序的加载、执行和存储过程。

(2)观察计算机运行程序的过程,分析程序执行过程中的指令执行顺序。

(3)编写程序,验证程序执行的正确性。

实验结果与分析:一、计算机硬件组成实验实验结果:通过观察和拆装计算机,掌握了计算机硬件的组成和各部件的功能,熟悉了计算机的硬件结构。

分析:计算机硬件是计算机系统的基础,了解硬件组成有助于更好地理解计算机的工作原理。

二、计算机指令系统实验实验结果:学习了计算机指令系统的基础知识,掌握了指令的格式和功能,能够编写简单的程序实现指令的功能。

分析:计算机指令系统是计算机执行程序的基础,熟悉指令系统对于程序设计和开发具有重要意义。

三、计算机工作流程实验实验结果:理解了计算机的工作流程,掌握了程序执行的过程,能够分析程序执行过程中的指令执行顺序。

分析:计算机工作流程是计算机执行程序的关键,了解工作流程有助于优化程序设计和提高程序执行效率。

实验总结:本次计算机原理实验使我对计算机的基本工作原理和组成结构有了更深入的了解。

华中科技大学计算机系统基础实验报告

华中科技大学计算机系统基础实验报告

课程实验报告课程名称:计算机系统基础专业班级:学号:姓名:指导教师:报告日期:2016年5月24 日计算机科学与技术学院目录实验1:数据表示1.1 实验概述本实验的目的是更好地熟悉和掌握计算机中整数和浮点数的二进制编码表示。

实验中,你需要解开一系列编程“难题”——使用有限类型和数量的运算操作实现一组给定功能的函数,在此过程中你将加深对数据二进制编码表示的了解。

实验语言:c; 实验环境: linux1.2 实验内容需要完成 bits.c 中下列函数功能,具体分为三大类:位操作、补码运算和浮点数操作。

1.3 实验设计源码如下:/** lsbZero - set 0 to the least significant bit of x* Example: lsbZero(0x87654321) = 0x87654320* Legal ops: ! ~ & ^ | + << >>* Max ops: 5* Rating: 1*/int lsbZero(int x) {//x右移一位再左移一位实现把最低有效位置0x = x>>1;x = x<<1;return x;}/** byteNot - bit-inversion to byte n from word x* Bytes numbered from 0 (LSB) to 3 (MSB)* Examples: getByteNot(0x12345678,1) = 0x1234A978* Legal ops: ! ~ & ^ | + << >>* Max ops: 6* Rating: 2*/int byteNot(int x, int n) {//x第n个字节每位都和1异或实现取反int y = 0xff;n = n<<3;y = y<<n;x = (x^y);return x;}/** byteXor - compare the nth byte of x and y, if it is same, return 0, if not, return 1* example: byteXor(0x12345678, 0x87654321, 1) = 1* byteXor(0x12345678, 0x87344321, 2) = 0* Legal ops: ! ~ & ^ | + << >>* Max ops: 20* Rating: 2*/int byteXor(int x, int y, int n) {//把x和y的第n个字节取出来异或,再转换为逻辑的0和1n = n<<3;x = x>>n;y = y>>n;x = x&(0xff);y = y&(0xff);return !!(x^y);}/** logicalAnd - x && y* Legal ops: ! ~ & ^ | + << >>* Max ops: 20* Rating: 3*/int logicalAnd(int x, int y) {//把x和y分别转化为逻辑的0和1,再相与x = (!(!x))&(!(!y));return x;}/** logicalOr - x || y* Legal ops: ! ~ & ^ | + << >>* Max ops: 20* Rating: 3*/int logicalOr(int x, int y) {//把x和y分别转化为逻辑的0和1,再相或x = (!(!x))|(!(!y));return x;}/** rotateLeft - Rotate x to the left by n* Can assume that 0 <= n <= 31* Examples: rotateLeft(0x87654321,4) = 0x76543218* Legal ops: ~ & ^ | + << >> !* Max ops: 25* Rating: 3*/int rotateLeft(int x, int n) {//先构造低n位为1,高(32-n)位为0的数z,x左移n位后的数加上x右移(32-n)位的数&z即可int z;z = ~(((1<<31)>>31)<<n);x = ((x>>(32+(~n+1)))&z)+(x<<n);return x;}/** parityCheck - returns 1 if x contains an odd number of 1's* Examples: parityCheck(5) = 0, parityCheck(7) = 1* Legal ops: ! ~ & ^ | + << >>* Max ops: 20* Rating: 4*/int parityCheck(int x) {//每次将数的低半数位与高半数位比较,再把y右移31位,最后把y转化为逻辑的0和1int y;y = x<<16;y = y^x;y = y^(y<<8);y = y^(y<<4);y = y^(y<<2);y = y^(y<<1);y = y>>31;return !(!y);}/** mul2OK - Determine if can compute 2*x without overflow* Examples: mul2OK(0x30000000) = 1* mul2OK(0x40000000) = 0** Legal ops: ~ & ^ | + << >>* Max ops: 20* Rating: 2*/int mul2OK(int x) {//把x第31位和30位分别和1做按位与,再异或,再和1异或int m;m = ((x>>31)&0x1)^((x>>30)&0x1);return m^0x1;}/** mult3div2 - multiplies by 3/2 rounding toward 0,* Should exactly duplicate effect of C expression (x*3/2),* including overflow behavior.* Examples: mult3div2(11) = 16* mult3div2(-9) = -13* mult3div2(1073741824) = -536870912(overflow)* Legal ops: ! ~ & ^ | + << >>* Max ops: 12* Rating: 2*/int mult3div2(int x) {//左移一位再+x即x*3,右移一位的时候,当y的最高位和最低位都为0时还要+1int y = (x<<1)+x;y = (y>>1)+(((y>>31)&1)&(((y<<31)>>31)&1));return y;}/** subOK - Determine if can compute x-y without overflow* Example: subOK(0x80000000,0x80000000) = 1,* subOK(0x80000000,0x70000000) = 0,* Legal ops: ! ~ & ^ | + << >>* Max ops: 20* Rating: 3*/int subOK(int x, int y) {//x的最高有效位和y的最高有效位不同且x和(x-y)的最高位不同才能判断溢出int m = (x>>31)&1;int n = (y>>31)&1;x = (m^n)&(m^(((x+(~y+1))>>31)&1));return (!x);}/** absVal - absolute value of x* Example: absVal(-1) = 1.* You may assume -TMax <= x <= TMax* Legal ops: ! ~ & ^ | + << >>* Max ops: 10* Rating: 4*/int absVal(int x) {//x最高位为0时就是x,最高位为1时是~x+1int y = x>>31;x = (y&(~x+1))+((~y)&x);return x;}/** float_abs - Return bit-level equivalent of absolute value of f for * floating point argument f.* Both the argument and result are passed as unsigned int's, but* they are to be interpreted as the bit-level representations of* single-precision floating point values.* When argument is NaN, return argument..* Legal ops: Any integer/unsigned operations incl. ||, &&. also if, while* Max ops: 10* Rating: 2*/unsigned float_abs(unsigned uf) {int x=uf&(~(1<<31));if(x>0x7f800000){return uf;}else return x;}/** float_f2i - Return bit-level equivalent of expression (int) f* for floating point argument f.* Argument is passed as unsigned int, but* it is to be interpreted as the bit-level representation of a* single-precision floating point value.* Anything out of range (including NaN and infinity) should return * 0x80000000u.* Legal ops: Any integer/unsigned operations incl. ||, &&. also if, while* Max ops: 30* Rating: 4*/int float_f2i(unsigned uf) {unsigned num=0x80000000;int x=(uf&0x007fffff)^0x00800000;int order=0;order=(uf&0x7f800000)>>23;if(order>158){return num;}if(order<127) return 0;else if(((uf>>31)&1)==1){if(order>150){return ~(x<<(order-150))+1;}else return ~(x>>(150-order))+1;}else{if(order>150) return x<<(order-150); else return x>>(150-order);}}1.4 实验过程编写源码,运行btest,得出实验结果。

计算机原理技术实习报告

计算机原理技术实习报告

实习报告一、实习背景与目的随着信息技术的迅速发展,计算机原理技术在各个领域得到了广泛的应用。

为了提高自己的实际操作能力和理论知识的应用能力,我选择了计算机原理技术实习,以便更好地了解和掌握计算机原理技术的基本知识和应用。

本次实习的主要目的是通过实际操作,巩固和加深对计算机原理技术的基本概念、原理和方法的理解,提高自己的实际动手能力和解决问题的能力,培养自己的团队合作意识和沟通能力。

二、实习内容与过程在实习期间,我主要参与了以下几个方面的内容和过程:1. 学习计算机原理技术的基本概念和原理,包括计算机硬件、软件、网络、数据库等方面的知识。

2. 学习计算机原理技术的实际应用,包括编程语言、开发工具、数据库设计、网络通信等方面的实践操作。

3. 参与团队项目开发,与团队成员共同完成项目的需求分析、设计、编码、测试和部署等工作。

4. 参加实习单位的培训和讲座,了解计算机原理技术的前沿动态和发展趋势。

5. 撰写实习日记和实习报告,总结自己在实习过程中的收获和不足。

三、实习成果与收获通过本次实习,我取得了以下的成果和收获:1. 掌握了计算机原理技术的基本概念和原理,能够理解和运用相关的知识和方法。

2. 提高了自己的实际动手能力,学会了使用编程语言、开发工具、数据库设计等实践操作。

3. 培养了团队合作意识和沟通能力,学会了与团队成员合作共同完成项目。

4. 了解了计算机原理技术的前沿动态和发展趋势,为自己的未来发展提供了参考和启示。

5. 撰写了实习日记和实习报告,总结了自己的实习经历和收获,为今后的学习和工作打下了坚实的基础。

四、实习感想与总结通过本次实习,我对计算机原理技术有了更深入的了解和掌握,提高了自己的实际操作能力和解决问题的能力。

同时,我也意识到了自己在某些方面的不足,比如在团队合作中需要更好地沟通和协调,在实际操作中需要更多地积累经验和熟练技能。

总的来说,本次实习是一次非常宝贵的经历,让我在理论知识和实际操作之间建立了联系,提高了自己的专业素养和综合能力。

华中科技大学计算机网络实验报告

华中科技大学计算机网络实验报告

华中科技⼤学计算机⽹络实验报告计算机⽹络实验报告班级:电信0904姓名:XX学号:U200913693实验四:⽹络协议与Web通信⼀、实验⽬的1.了解⽹络协议数据单元的格式2.分析⽹络协议⼯作基本流程3.深⼊理解Web应⽤的通信过程⼆、实验内容1.⽹络协议数据单元分析通过wireshark抓取局域⽹数据包并分析各个层次的协议数据单元内容(1)以太⽹帧头(2)IP分组⾸部(3)ARP包(4)ICMP包(ping)2.Web原理实验(1)HTTP协议分析(2)通过socket编程模拟HTTP协议通信过程三、实验原理1.Web通信经过四个步骤:(1)建⽴连接(2)客户端发送HTTP REQUEST请求(3)服务器端接收请求,⽣成RESPONSE响应(4)关闭连接2.HTTP协议客户端浏览器或其他程序与Web服务器之间的应⽤层通信协议。

⼀般在Internet 上的Web服务器上存放的都是超⽂本信息,客户机需要通过HTTP协议传输所要访问的超⽂本信息。

四、实验内容及分析1.编译、执⾏参考程序本次实验提供了两个原始程序(NetServer.java和NetClient.java),它们可以实现⼀个服务器/客户端请求响应的完整过程。

Dos环境下先后编译执⾏NetServer.java与NetClient.java,即可得到⼀次完整的客户端向服务器请求并得到响应的完整过程,结果如下:2.修改、编写实验程序参考程序模拟了客户端与服务器之间的对话,但由于其之间交互的数据都是我们设定的⽽不含有http报头信息,因此不能和真正的web服务器与浏览器对话,以下即为实现⾃制web服务器的⽅法(1)利⽤⾃制的服务器获取真正浏览器的HTTP Request 报头信息:运⾏⾃制的服务器,默认监听端⼝8080,在浏览器中输⼊以下⽹址http://127.0.0.1:8080/new/main/UserLoad.jsp,其中127.0.0.1为本机localhost地址,这样浏览器就会向⾃制服务器发出请求,服务器即可获取http request报头信息。

计算机原理实验报告

计算机原理实验报告

计算机原理实验报告
本次实验旨在探究计算机原理的基本概念和操作,包括计算机的基础结构、运算器、控制器、存储器、输入输出设备等。

实验过程中,我们使用了计算机模拟软件进行操作,进行了以下实验项目:
1. 熟悉计算机基础结构:了解计算机的各个组成部分,包括中央处理器、主存储器、输入输出设备等。

2. 掌握二进制数的转换和运算:学习二进制数的表示方法和转换方法,了解二进制数的运算法则和规律。

3. 熟悉逻辑门的基本原理和使用方法:学习逻辑门的工作原理,了解常见的逻辑门类型及其应用。

4. 熟悉计算机指令系统:了解指令系统的组成和运行原理,学习指令的格式和编码方法。

5. 熟悉计算机的数据存储器件:了解计算机内部存储器的类型和结构,学习存储器的读写操作和地址寻址方法。

通过以上实验项目的学习和实践,我们对计算机原理有了更深入的了解和认识,掌握了基本的计算机操作技能和实验方法。

- 1 -。

计算机原理实验室实验报告

计算机原理实验室实验报告

计算机原理实验室实验报告1. 引言计算机原理实验室是计算机科学与工程领域中一个重要的实践环节,旨在帮助学生巩固和拓展计算机原理相关知识,培养实践能力和解决问题的能力。

本实验报告将详细介绍我们在计算机原理实验室中所进行的实验内容、实验目的、实验过程、实验结果和实验总结。

2. 实验目的本次实验的主要目的是通过实际操作,加深对计算机原理的理解,掌握计算机硬件的基本组成和工作原理,熟悉计算机的运行过程,学会使用一些计算机原理实验仪器和软件。

3. 实验内容本次实验的内容主要包括以下几个方面:3.1 计算机硬件组装实验在本实验中,我们需要根据给定的电路图和硬件元件,组装一台完整的计算机。

这个过程中需要注意硬件元件的正确连接和固定,确保计算机能够正常运行。

3.2 计算机启动与关机实验在本实验中,我们需要学习计算机的启动与关机过程。

通过按照正确的步骤操作,我们可以使计算机正常启动和关机,并了解其中的原理和流程。

3.3 计算机性能测试实验在本实验中,我们需要使用一些性能测试软件,对计算机的性能进行测试。

通过测试结果,我们可以了解计算机的处理能力、存储能力和图形处理能力等方面的表现。

3.4 计算机故障排除实验在本实验中,我们需要学习一些常见的计算机故障排除方法。

通过分析故障原因,我们可以找到解决问题的方法,并修复计算机故障。

4. 实验过程4.1 计算机硬件组装实验过程首先,我们需要准备好所需的硬件元件和工具。

然后,根据给定的电路图,按照正确的连接顺序,逐步组装计算机的主板、CPU、内存、硬盘、显卡等硬件元件。

在组装过程中,需要注意连接线的插入方向和插孔的对应关系,确保连接的牢固和正确。

最后,进行电源的连接和固定,检查硬件组装是否正确。

4.2 计算机启动与关机实验过程在计算机硬件组装完成后,我们可以按照正确的步骤启动计算机。

首先,将电源线插入电源插座,并将电源线与计算机主机连接。

然后,按下电源按钮,等待计算机启动。

在启动过程中,我们可以观察计算机屏幕上的提示信息,确认计算机是否正常启动。

华中科技大学计算机学院数字逻辑第一次实验报告

华中科技大学计算机学院数字逻辑第一次实验报告

数字逻辑实验报告姓名:专业班级:学号:指导老师:完成时间:实验一:组合逻辑电路的设计一、实验目的:1. 掌握组合逻辑电路的功能测试。

2. 验证半加器和全加器的逻辑功能 3. 学会二进制的运算规律。

二、实验器材:二输入四与门74LS08,二输入四与非门74LS00,二输入四异或门74LS86,六门反向器74LS04芯片,三输入三与非门74L10,电线若干。

三、实验A 内容:内容A :全加全减器 实验要求:一位全加/全减法器,如图所示:四、实验A 步骤:按照所给定的实验要求填写出F1,F2理论上的真值表。

1.给出该实验的真值表:SCo2.根据真值表给出F1和F2的卡诺图:3. 根据逻辑表达式作出电路的平面图:4.记录实验结果如以下表格五、实验B内容:内容B:舍入与检测电路的设计:实验要求:用所给定的集合电路组件设计一个多输出逻辑电路,该电路的输入为8421码,F1为“四舍五入”输出信号,F2为奇偶检测输出信号。

当电路检测到输入的代码大宇或等于(5)10时,电路的输出F1=1;其他情况F1=0。

当输入代码中含1的个数为奇数时,电路的输出F2=1,其他情况F2=0。

该电路的框图如下所示:(1)按照所设计的电路图接线,注意将电路的输入端接试验台的开关,通过拨动开关输入8421代码,电路输入按至试验台显示灯。

(2)每输入一个代码后观察显示灯,并将结果记录在输入/输出观察表中。

六、实验B步骤:1.按照所给定的逻辑电路画出真值表2.根据真值表给出F1和F2的卡诺图。

3.根据逻辑表达式画出电路的平面图:1.检查导线和芯片是否完好无损坏,根据电路图和逻辑表达式连接电路。

2.波动开关输入8421代码,观察显示灯的状况并填写出实际的F1,F2取值表,并与理论值相对比,确定电路连接是否正确。

4.记录实验结果如以下表格七、回答思考题:1.化简包含无关条件的逻辑函数时应注意什么?答:当采用最小项之和表达式描述一个包含无关条件的逻辑问题时,函数表达式中的无关项是令其值为1还是为0,并不影响函数的实际逻辑功能。

华科_HUST_微机原理_类MIPS单周期微处理器设计_实验报告

华科_HUST_微机原理_类MIPS单周期微处理器设计_实验报告

微机原理实验报告学号姓名华中科技大学专业通信1301指导教师罗杰院(系、所)电信学院类MIPS单周期微处理器设计一.实验目的1.了解微处理器的基本结构。

2.掌握哈佛结构的计算机工作原理。

3.学会设计简单的微处理器。

4.了解软件控制硬件工作的基本原理。

二.实验任务利用HDL语言,基于Xilinx FPGA nexys4实验平台,设计一个能够执行以下MIPS指令集的单周期类MIPS处理器,要求完成所有支持指令的功能仿真,验证指令执行的正确性,要求编写汇编程序将本人学号的ASCII码存入RAM的连续内存区域。

(1)支持基本的算术逻辑运算如add,sub,and,or,slt,andi指令(2)支持基本的内存操作如lw,sw指令(3)支持基本的程序控制如beq,j指令三.各模块实现原理1.指令存储器设计指令存储器为ROM类型的存储器,为单一输出指令的存储器。

设置一个程序计数器指针PC指向指令存储器,当时钟上升沿到来时,取出PC所指的指令,当时钟的下降沿到来时,修改PC的值,使其指向下一条要执行的指令。

因此其对外的接口为clk、存储器地址输入信号(指令指针)以及数据输出信号(指令)。

在本实验中调用ISE提供的IP核进行设计,设定的指令存储器大小为128字。

指令存储器模块在顶层模块中被调用。

输入为指令指针(PC)与时钟信号(clkin),输出为32位的机器指令,并将输出的机器指令送到后续的寄存器组模块、控制器模块、立即数符号扩展模块进行相应的处理。

2.数据存储器设计数据存储器为RAM类型的存储器,并且需要独立的读写信号控制。

因此其对外的接口为clk、we、datain、addr;输出信号为dataout。

当时钟上升沿到来时,如果写信号(we)为真,根据addr所表示的地址找到对应的存储单元,并将输入的数据(datain)写到对应的存储单元中;如果写信号为假,则根据addr所表示的地址,将对应存储单元的数据送到输出端(dataout)。

计算机原理实验报告

计算机原理实验报告

计算机原理实验报告实验目的:1.了解计算机的基本组成部分与功能,熟悉计算机硬件的组装及操作系统软件的安装使用。

2.学习计算机的组装和维护,掌握常用硬件的安装和使用方法。

3.通过实验学习计算机的基本操作,包括系统安装、驱动程序安装、网络设置和基本应用程序的使用等。

实验内容:1.硬件组装与连接2.操作系统安装3.驱动程序安装4.网络设置5.应用程序安装与使用实验步骤:1.硬件组装与连接第一步:将主板、CPU、内存、硬盘、光驱、电源、显卡等各个硬件按照正确的方法安装在机箱内。

第二步:将各个硬件间的连接线插上,包括电源线、SATA数据线、IDE数据线等。

第三步:进行电源线、USB接口、音视频设备等的连接,并确认所有硬件的连接是否正确。

2.操作系统安装第一步:将光盘放入光驱中,并重新启动计算机。

第二步:按照光盘提示,进入安装系统的操作界面。

第三步:根据操作界面提示,在安装过程中进行选择和设置,包括系统和安装位置等。

3.驱动程序安装第一步:下载适合本机型号的主板和显卡驱动程序,并将其存储在硬盘上。

第二步:运行主板驱动程序安装文件,按照提示操作,安装主板驱动程序。

第三步:运行显卡驱动程序安装文件,按照提示操作,安装显卡驱动程序。

4.网络设置第一步:进入系统配置界面,进行网络驱动程序的安装。

第二步:在网络设置界面,按照提示,设置IP地址、子网掩码、网关等参数,完成网络连接。

5.应用程序安装与使用第一步:下载适合本机型号的常用应用程序软件,并将其存储在硬盘上。

第二步:运行所下载的应用程序软件安装文件,按照提示操作,完成安装程序。

第三步:使用已安装的应用程序进行实际操作,包括文字编辑、浏览网站等内容。

实验结果:通过本次计算机原理实验,我了解了计算机的基本组成部分与功能,熟悉了计算机硬件的组装及操作系统软件的安装使用。

我学习了计算机的组装和维护,掌握了常用硬件的安装和使用方法。

通过实验学习了计算机的基本操作,包括系统安装、驱动程序安装、网络设置和基本应用程序的使用等。

计算机原理实验报告

计算机原理实验报告

计算机原理实验报告计算机原理实验报告引言:计算机原理实验是计算机科学与技术专业的一门重要实践课程。

通过实验,学生可以更加深入地了解计算机的工作原理,掌握计算机硬件和软件的基本知识,提高解决实际问题的能力。

本文将对计算机原理实验进行总结和分析,探讨实验中的一些关键问题和解决方法。

一、实验目的计算机原理实验的主要目的是让学生通过实践操作,了解计算机的基本组成部分和工作原理,培养学生的实际动手能力和问题解决能力。

通过实验,学生可以熟悉计算机的硬件结构,理解计算机的运算过程和数据传输方式,掌握计算机的基本操作和调试方法。

二、实验内容计算机原理实验的内容包括计算机硬件的组装和调试,操作系统的安装和配置,以及简单的程序设计和调试。

实验中,学生需要根据实验指导书的要求,按照一定的步骤进行实验操作,并记录实验过程和结果。

实验内容涉及到计算机的内存、CPU、硬盘、显卡等硬件设备,以及操作系统的安装和配置,软件的安装和调试等。

三、实验过程在实验过程中,我们首先需要根据实验指导书提供的材料和工具,组装计算机硬件。

这包括将主板、内存、CPU、硬盘等组件安装到机箱内,并连接好各个设备的电源和数据线。

在组装过程中,需要特别注意硬件的安装顺序和连接方式,以确保硬件能够正常工作。

组装完成后,我们需要按照实验指导书的要求,安装操作系统和相关软件。

这包括将操作系统的安装光盘插入光驱,按照安装向导的提示进行操作,完成操作系统的安装和配置。

安装完成后,我们还需要安装一些常用的软件,如浏览器、办公软件等,以满足日常使用的需要。

实验的最后一部分是程序设计和调试。

在这部分实验中,我们需要根据实验指导书提供的要求,编写简单的程序,并进行调试和运行。

这部分实验涉及到计算机的编程语言、算法和数据结构等知识,需要学生具备一定的编程基础和逻辑思维能力。

四、实验结果与分析通过实验,我们成功地完成了计算机硬件的组装和调试,操作系统的安装和配置,以及程序的编写和调试。

华中科技大学 组成原理实验报告 运算器组成实验

华中科技大学 组成原理实验报告 运算器组成实验

课程实验报告课程名称:计算机组成原理专业班级:信息安全1003班学号:U**********名:***同组成员:张源信报告日期:2012年5月计算机科学与技术学院目录一、实验名称 (3)二、实验目的 (3)三、实验设备 (3)四、实验任务 (3)五、预备知识 (4)1、运算器的相关知识 (4)2、注意事项: (4)六、设计思路、电路实现与电路分析说明 (4)1、任务分析 (4)2、设计思路 (6)3、电路实现与详细分析说明 (7)七、实验结果的记录与分析 (9)八、实验中碰到的问题及解决办法 (10)九、收获与体会 (10)十、参考书目 (11)一、实验名称实验名称:运算器组成实验二、实验目的1、掌握带累加器的运算器实验2、掌握溢出检测的原理及实现方法3、理解有符号数和无符号数运算的区别4、理解基于补码的加\减运算实现原理5、熟悉运算器的数据传输通路6、利用74181和74182以及适当的门电路和多路选择器设计一个运算,要求支持有符号数和无符号数的运算支持补码加减法运算,支持有符号数溢出检测等功能三、实验设备JZYL—Ⅱ型计算机组成原理实验仪一台芯片:74LS181运算器芯片2片74LS373 8D锁存器3片四、实验任务自己设计一个电路和利用实验参考电路进行实验,实验要求先将多个运算数据事先存入存储器中,再由地址选中,选择不同的运算指令,进行运算,并将结果显示,还可以进行连续运算和移位,最后将最终结果写入到存储器中。

五、预备知识 1、运算器的相关知识运算器是对数据进行加工处理的部件,它具体实现数据的算术运算和逻辑运算,所以又称算术逻辑运算部件,简称ALU ,它是中央处理器的重要组成部分。

计算机中的运算器结构一般都包含如下几个部分:加法器、一组通用寄存器、输入数据选择电路和输出数据控制电路等。

74LS181能执行16种算术运算和16种逻辑运算,当工作方式控制端(M )为低电平时执行算术运算,当工作方式控制端(M )为高电平时执行逻辑运算,运算功能由功能选择端(S0-S3)决定。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

-电气学科大类《计算机原理与应用实验》课程实验报告电气与电子工程学院2012级姓名:学号:专业班号:日期:2014年1月7日实验成绩:评阅人:实验评分表目录实验评分表 (I)实验一:EMU8086软件安装与使用 (1)一、实验目的 (1)二、实验设备 (1)三、实验任务 (1)四、实验原理 (1)五、实验内容 (1)六、实验过程及结果 (2)七、实验感想 (6)八、参考文献 (6)实验二:汇编语言实例讲解与程序编写 (7)一、实验目的 (7)二、实验设备 (7)三、实验任务 (7)四、实验原理 (7)五、实验内容 (8)六、实验过程及结果 (9)七、实验感想 (20)八、参考文献 (20)实验三:基于PROTEUS软件的8086最小系统硬件设计 (21)一、实验目的 (21)二、实验设备 (21)三、实验任务 (21)四、实验原理 (21)五、实验内容 (23)六、实验过程及结果 (23)七、实验感想 (27)八、参考文献 (28)实验四:基于8086最小系统的汇编程序设计 (29)一、实验目的 (29)二、实验设备 (29)三、实验任务 (29)四、实验原理 (29)五、实验内容 (30)六、实验过程及结果 (31)七、实验感想 (34)八、参考文献 (35)实验五:8255并行接口实验(演示实验) (36)一、实验目的 (36)二、实验设备 (36)三、实验任务 (36)四、实验原理 (36)五、实验内容 (37)六、实验过程及结果 (38)七、实验感想 (39)八、参考文献 (39)实验六:工频测频接口电路设计与实现 (41)一、实验目的 (41)二、实验设备 (41)三、实验任务 (41)四、实验原理 (41)五、实验内容 (44)六、实验过程及结果 (45)七、实验感想 (46)八、参考文献 (46)实验一:EMU8086软件安装与使用一、实验目的通过本实验学习EMU8086软件的安装与使用。

二、实验设备PC微机一台,Emu8086仿真软件三、实验任务1. 安装Emu8086仿真软件。

2. 利用Emu8086仿真软件编程。

四、实验原理Emu8086仿真软件就是在Windows下的一种仿真软件,它可以仿真模拟8086的程序运行,并且可以直观地观察CPU寄存器的变化情况。

Emu8086 - Microprocessor Emulator结合了一个先进的原始编辑器、组译器、反组译器、具除错功能的软件模拟工具(虚拟PC),还有一个循序渐进的指导工具。

这对刚开始学组合语言的人会是一个很有用的工具。

它会在模拟器中一步一步的编译程序码并执行,视觉化的工作环境让它更容易使用。

你可以在程序执行当中检视暂存器、旗标以及记忆体。

模拟器会在虚拟PC 中执行程序,这可以隔绝你的程序,避免它去存取实际硬体,像硬碟、记忆体,而在虚拟机器上执行组合程序,这可以让除错变得更加容易。

这个软件完全相容於Intel 的下一代处理器,包括了Pentium II、Pentium 4,而相信Pentium 5 也会继续支援8086 的。

这种现象让8086 程序码的可携性相当高,它可以同时在老机器以及现代的电脑是执行,8086 的另一个优势是它的指令比较小且相当容易学习。

五、实验内容安装Emu8086仿真软件,熟悉菜单栏,工具栏的每个选项的作用,按照操作流程完成程序的编译、链接,并对编辑窗口中所编写的简单汇编程序进行仿真调试,最后能够输出正确结果。

六、实验过程及结果1. EMU8086安装。

2. EMU8086使用,安装完毕,得到窗口如下图1-1:图1-1 Emu进入主界面3. 操作流程(1)file->new->empty workplace,编辑程序,如下图1-2:图1-2 Emu程序编辑界面(2) file->save,保存程序(**.asm格式),完成程序的编辑.(3) assmbler->compile,完成程序的编译和链接,如下图1-3:图1-3 Emu程序编译完成界面4. emulator->show emulator,开始仿真调试,如下图1-4:图1-4 Emu程序仿真调试界面5. 左键点击run运行程序,结果如图1-5:图1-5 Emu程序仿真调试结果界面七、实验感想在这次实验中,初步了解了8086仿真软件,对上课的一些知识有了更深刻的认识,知道其是如何工作的。

利用软件完成了几个实验,收获很多。

八、参考文献[1]李继灿,谭浩强.微机原理与接口技术.北京:清华大学出版社[2]王爽.汇编语言.北京:清华大学出版社[3]沈美明,温冬婵.汇编语言程序设计.北京:机械工业出版社[4]许立梓.微型计算机原理及应用.北京:机械工业出版社实验二:汇编语言实例讲解与程序编写一、实验目的学习所给的汇编程序示例,自己能亲自动手编写基本的汇编程序。

二、实验设备PC微机一台,Emu8086仿真软件三、实验任务1. 熟练掌握基本的汇编指令意义。

2. 正确理解所给示例中每行代码的意义及作用。

3. 按要求编写所给的3个题目的代码并正确显示结果。

四、实验原理汇编程序规范编程:使用汇编编程采用下面的编程规范能够极大简化编程过程,提高编程效率,同时能够保证功能的顺利实现,下文是规范化汇编程序的基本框架,一段典型的汇编程序主要包括数据段及其定义,堆栈段及其定义,最后一部分是代码的编写。

DATAS SEGMENT ;此处输入数据段代码DATAS ENDS;-----------------------------------------------STACKS SEGMENT ;此处输入堆栈段代码STACKS ENDS;-----------------------------------------------CODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AX;此处输入代码段代码MOV AH,4CHINT 21HCODES ENDSEND START以下以“hello”为例,介绍简单汇编程序的基本内容:aa SEGMENT ; 数据段1xx DB 'Hello!’ ; 定义源串aa ENDS;-----------------------------------------------bb SEGMENT ;数据段2yy DB 6 dup (?) ; 定义目的缓冲区bb ENDS;-----------------------------------------------cc SEGMENT ;代码段ASSUME CS:cc, DS:aa, ES:bb ;指示指令中标号,变量所在段start : CLD ;设置传送方向MOV AX , aa ;DS:SI ← 源串首地址MOV DS , AXLEA SI , xxMOV AX , SEG yy ;ES:DI ← 目的首地址MOV ES , AXMOV DI , OFFSET yyMOV CX , 6 ;CX ← 串的长度REP MOVSB ;串传送MOV AH , 4CH ;调用4CH系统功能,返回DOSINT 21Hcc ENDSEND start ;指示程序结束和程序入口五、实验内容1:十进制数的显示,就是显示十进制数字number2:编程计算(w1-(w2*w3+w4-25000))/w5=w6(w1 到w5 可以在数据定义时自行赋值,为使程序简单,最好使得最终w6的结果为整数。

)3:将BL寄存器的内容按二进制形式显示出来提示:把要显示的数字存入bl寄存器;最后的输出结果就是3的二进制。

(比如待显示数据为7,则其二进制显示结果为 0000 0111)六、实验过程及结果1:十进制数的显示,就是显示十进制数字number (1)file->new->empty workplace,如下图编辑程序如图(2) file->save,保存程序(**.asm格式),完成程序的编辑.(3) assmbler->compile,完成程序的编译和链接,如下图4. emulator->show emulator,开始仿真调试,如下图5. 左键点击run运行程序,结果如图2:编程计算(w1-(w2*w3+w4-25000))/w5=w6 (1)file->new->empty workplace,如下图2-3编辑程序如图(2) file->save,保存程序(**.asm格式),完成程序的编辑.(3) assmbler->compile,完成程序的编译和链接,如下图4. emulator->show emulator,开始仿真调试,如下图5. 左键点击run运行程序,结果如图3:将BL寄存器的内容按二进制形式显示出来提示:把要显示的数字存入bl寄存器;最后的输出结果就是3的二进制。

(比如待显示数据为7,则其二进制显示结果为 0000 0111)(1)file->new->empty workplace,如下图编辑程序如图(2) file->save,保存程序(**.asm格式),完成程序的编辑.(3) assmbler->compile,完成程序的编译和链接,如下图4. emulator->show emulator,开始仿真调试,如下图5. 左键点击run运行程序,结果如图七、实验感想在这次实验中,收获很多,读懂了程序,同时对其中国内一些程序进行了修改,从而使它更简洁。

比如例三中,修改了一些语句,同时没有影响其运行结果。

在助教的讲解下,学会了如何使用防闪退,这是另一个收获。

八、参考文献[1]李继灿,谭浩强.微机原理与接口技术.北京:清华大学出版社[2]王爽.汇编语言.北京:清华大学出版社[3]沈美明,温冬婵.汇编语言程序设计.北京:机械工业出版社[4]许立梓.微型计算机原理及应用.北京:机械工业出版社实验三:基于Proteus软件的8086最小系统硬件设计一、实验目的1.学习使用Proteus进行8086微机系统仿真设计的方法。

2.学习8086CPU以及外部电路的接法和应用原理。

二、实验设备PC微机一台、Proteus软件、emu8086编码器软件三、实验任务1. 正确安装Proteus软件。

2. 使用Proteus绘制38译码电路,并通过通断开关,观察二极管导通情况。

3. 在Proteus中绘制8086最小系统电路,并加载程序,观察运行结果。

四、实验原理本实验首先学习Proteus软件的安装,并通过绘制简单的38译码器电路掌握该软件的使用方法。

相关文档
最新文档