




已阅读5页,还剩57页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机组成与体系结构实验报告实验项目一一、 实验目的通过了解高级语言源程序和目标机器代码的不同表示及其相互转换,深刻理解 高级语言和机器语言之间的关系,以及机器语言和不同体系结构之间的关系。二、 实验要求:在VC6.0中创建下列源程序#include void main()int i=100;int j=-1;int k;k=i+j;printf(%d,k);然后对该程序进行编译、链接,最终生成可执行目标代码。三、 实验报告1.给出做实验的过程.关键代码如下:2. 给出源程序(文本文件)的内容(用十六进制形式表示)。3. 给出可执行目标文件(二进制文件)的内容(用十六进制形式表示)。4. VC6.0调试环境:设置断点、单步运行、变量的值(十进制、十六进制)、变量的地址、变量的存储。断点设置如下:变量的值十进制:变量的值十六进制:变量的地址:5. VC6.0反汇编:查看源程序对应的汇编程序、可执行目标程序的二进制编码、了解如何给变量分配内存、系统函数程序段的调用。6. 分析或回答下列问题。(1)分析同一个源程序在不同机器上生成的可执行目标代码是否相同。不相同。因为不同的机器硬件的组成不同,因此同一个源程序在不同的机器上生成的目标文件不同。(2)你能在可执行目标文件中找出函数printf()对应的机器代码段吗?能的话,请标示出来。不能。因为源程序中的printf函数在可执行文件中已转换为机器语言。被翻译的机器语言中有printf函数,但是不知道是从哪一段开始翻译的。(3)为什么源程序文件的内容和可执行目标文件的内容完全不同?源程序文件可以直接编写。可执行文件是被言翻译过后的。四、 实验总结和体会:本次实验让我明白了通过vc6.0这个软件编写出来的高级语言源程序与目标机器代码的不同表示及其相互转换,深刻理解了内存的分配与机器码的相关知识,以及机器语言和不同体系结构之间的关系,使得课本上的知识与实验上的知识相结合。实验项目二一、实验目的:1.通过无符号数和带符号整数之间的相互转换来理解无符号数和补码整数的表示。2.了解字符、汉字的机器表示。3.了解IEE754浮点数在机器中的应用,特别是一些特殊值的处理。二、实验要求:1.编写程序分析C语言中不同类型数据在计算机内部的表示。2.验证教材表2.2中的关系表达式的结果,并编程得出第二章习题8的表中结果。3.通过编程得出float和double类型的精度(即十进制有效位的位数):检查“-8.0/0”、“sqrt(-4.0)”的运算结果,并将“-8.0/0”和“-8/0”的运行结果进行比较。三、实验报告:1.分析下列源程序中的变量在机器内是如何表示的,并给出程序的执行结果,要求给出分析过程。#includevoid main()unsigned short i=65535;int j=-2147483648;int k=65536;char c1=n,c2=x;float x=100.25671;double y=567.89;char *str=01as计算机n0 1 a s;printf(%un,j);printf(%fn,x);printf(%1dn,y);printf(%sn,str);printf(%dn,i*i);根据实验结果,回答下列问题:(1)你的机器字长多少位?int类型的位数、最小值和最大值各是多少?答:机器字长:32位;int类型位数:32位;最小值:-2147483648; 最大值:2147483647(2)在你的机器上,-1用int类型和unsiged int类型表示的结果分别是多少?2.编写程序验证教材表2.2中的关系表达式的结果,并编程得出第二章习题8的表中结果。要求给出分析过程。验证2.2:3. 通过编写程序回答下列问题(要求给出分析过程):(1)float类型和double类型的精度各是多少?(即十进制有效位的位数)float精度是8位,double精度是16位。(2)在你的机器上,“负数开方”是如何处理的?(如“-8.0/0”、“sqrt(-4.0)”的运算结果)(3)在你的机器上,整数除0和浮点数除0的运行结果各是什么?为什么会有不同的运行结果?并将“-8.0/0”和“-8/0”的运行结果进行比较。-8/0:-8.0/0:四、实验总结和体会:我了知道了无符号数和带符号整数之间的相互转换来理解无符号数和补码整数的表示,以及一些简单的字符和汉字的机器表示,此外还了解了IEE754浮点数在机器中的应用。实验项目三五、 实验目的1.了解数据在机器中的存放方式(存放顺序、对其方式)。2.了解无符号数和带符号整数是如何进行扩展的。3.不同数据类型之间是如何进行转换的。六、 实验要求:1.设计一个程序以检验你的机器是大端方式还是小端方式。以及检查内存变量(如结构或数组)是否按边界对其。2.通过编程得出无符号数和带符号整数是如何进行扩展的。3.编写程序说明不同数据类型之间进行转换时在表数范围和精度上的变化。(1)给定一个short型数据-12345,分别转化为int、unsigned short、unsigned int、float类型的数据;(2)给定一个int型数据2147483647,分别转化为short、unsigned short、unsigned int、float、double类型的数据;(3)给定一个float型数据123456.789e5,转化成int、double型数据;(4)给定一个double型数据123456.789e5,转化成int、float型数据。七、 实验报告1.给出源程序(文本文件)和执行结果。并回答下列问题。(1)你的机器是大端方式还是小端方式?大端方式(2)内存变量是否按照边界对其?2.分析下列源程序中的变量在机器内是如何表示的,以及各变量对应的十进制真值是多少,并说明无符号数和带符号整数的扩展操作方式是否相同?各是如何进行的?要求给出分析过程。#include void main()short si = -32768;unsigned short usi = si;int i = si;unsigned ui = usi;无符号数和带符号整数的扩展操作方式不相同,无符号数扩展高位补0,有符号整数扩展高位补符号位。3.给出源程序(文本文件)和执行结果,并回答下列问题:(1)补码整数(如int型数)是否总能转换为等值的float类型数据?为什么?int型数总能转换为等值的float型数据。因为float型数据的精度比int型数高。(2)float型数据是否总能转换成等值的double型数据?为什么?当float型数据的范围超出了float本来可以表示的精度范围时,float型数据就不能等值的转换为double型。因为double型数据表示的有效位数有1214位。而float型数据只有57位。(3)长数被截断成短数后可能发生什么现象?为什么?当长数超出了短数的表示范围之后,若是被截断成短数,就会造成溢出。4.分析下列源程序的执行结果,并给出分析过程。#include void main()float x=-1.5e38;float y=1.5e38;float z=1.0;int i=(x+y)+z=z+(y+z);printf(%dn,i);(x+y)+z这个式子的值为1.0,而x+(y+z)的值并不是1.0而是0,因为x+(y+z)中先计算(y+z),而y=1.5e38,z=1.0浮点数相加需要先对阶,当对阶之后(y+z)就约等于y,所以x+(y+z)得值为0,所以这两个式子的结果是不相等的。实验项目四一、实验目的:1.了解数据的校验机制。*2.掌握海明码校验实施过程(选做)。*3.掌握循环冗余码校验实施过程(选做)。二、实验要求:1.设计一个程序模拟奇偶校验实施过程(提示:主函数、发送函数、传输函数、校验函数)。2.设计一个程序模拟海明码校验实施过程(提示:主函数、发送函数、传输函数、校验函数、纠错函数)。3.设计一个程序模拟循环冗余码校验实施过程(提示:主函数、发送函数、传输函数、校验函数、纠错函数)。三、实验报告:1.给出源程序和执行结果。#include stdio.h#include stdlib.h#include time.h/校验函数int checked(int data)int x = data;int count = 0;while (x)count +;x = x & (x-1);if(count%2=1)return data|0x80;else return data;/随机产生出错位int random(int data)int x,p;time_t t;srand(time(&t);x=rand()%9;printf(产生的随机数为:%dn,x);if (x)p=data(1(x-1); elsep=data;return p;/接收方void received(int data)int x=data,p,r;x=x&0x7f;p=checked(x);r=pdata;if (r)printf(错误!n); elseprintf(正确!n);/主函数void main()int data,p_checked,p_random;printf(请输入数据:);scanf(%d,&data);data=data&0x7f;printf(原始信息为:%02xn,data);p_checked=checked(data);printf(发送方求出的校验位:%02xn,p_checked);p_random=random(p_checked);printf(传输出的校验码:%02xn,p_random);received(p_random);实验项目六:cache和程序访问的局部性 一、 实验目的 通过实际程序的执行结果,了解程序访问的局部性对带有cache的计算机系统性能的影响。二、 实验要求在以下程序中,修改或添加必要的语句(如添加计时函数等),以计算和打印主体程序段(即for循环段)的执行时间。分别以M=10、N=100000;M=1000、N=1000;M=100000、N=10;执行程序A和程序B,以比较两种for循环段执行时间的长短。下列程序中给出的数组a是局部临时变量,分配在栈中,也可改用静态全局变量,或在堆中动态申请空间。程序段Aassign-array-rows()int i,j;short aMN;for(i= 0;iM;i+)for(j= 0;jN;j+)aij= 0;程序段Bassign-array-cols()int i,j;short aMN;for(j= 0;jN;j+)for(i= 0;iM;i+)aij= 0; 三、实验报告:源程序:#include #include #define M 10#define N 100000/*#define M 100#define N 10000*/*#define M 1000#define N 1000*/*#define M 10000#define N 100#define M 100000#define N 10*/void assign_array_rows()int i,j;static short aMN;/short aMN;LARGE_INTEGER start,finish,times;QueryPerformanceFrequency(×); QueryPerformanceCounter(&start);for(i = 0; iM; i+)for(j = 0; jN; j+)aij = 0;QueryPerformanceCounter(&finish);printf(行优先:%lfn,(finish.QuadPart - start.QuadPart)*1.0/times.QuadPart);void assign_array_cols()int i,j;static short aMN;/short aMN;LARGE_INTEGER start,finish,times;QueryPerformanceFrequency(×); QueryPerformanceCounter(&start);for(j = 0; jN; j+)for(i = 0; i列.2. 分析说明数组A分配在静态存储区,堆区和栈区,对for循环段的执行效率有没有影响。由上图可以看出,数组A分配在静态存储区的访问速度,无论是行优先还是列优先都快于将数组分配在堆区和栈区。4、 总结体会本次实验本小组成员对程序在内存空间分配上有了进一步的了解,知道了数组的访问是如何进行的,在以后的编写程序中会更加有帮助,使得程序的执行更加的快。实验项目一:算术逻辑运算实验一、实验目的:1.掌握简单运算器的组成以及数据传送通路。2.验证运算功能发生器(74LS181)的组合功能。3.按给定的数据完成几种指定的算术逻辑运算。二、实验重点:1.数据的传送2.运算功能发生器(74LS181)的引脚功能的应用三、实验难点:1.工作过程的理解四、实验任务:1.计算74(加)262.计算74(减)263.计算-74(加)264.计算74(减)-265.计算74(与)266.计算74(或)26*7.完成实验指导书P7表1-2中指定的运算(选做)五、实验原理:实验中所用的运算器数据通路如上图所示。其中运算器由两片74LS181以并/串形式构成8位字长的ALU。运算器的两个数据输入端分别由两个锁存器(74LS273)锁存,锁存器的输入连至数据总线,数据输入开关用来给出参与运算的数据,并经过一三态门(74LS245)和数据总线相连。运算器的输出经过一个三态门(74LS245)和数据总线相连。数据显示灯已和数据总线相连,用来显示数据总线内容。表1-1 74LS181功能表S3S2S1S0M=0(算术运算)M=1(逻辑运算)CN=1无进位CN=0有进位0000F=F=A加1F=0001F=F=()加1F=0010F=F=()加1F=0011F=0减1F=0F=0100F=加F=加加1F=0101F=()加F=()加加1F=0110F=减减1F=减F=0111F=减1F=F=1000F=加F=加加1F=1001F=加F=加加1F=1010F=()加F=()加加1F=1011F=减1F=F=1100F=加F=加加1F=11101F=()加F=()加加1F=1110F=()加F=()加加1F=1111F=减1F=F=六、实验过程描述:(详细实验过程及实验结果)开关复位:检查实验箱的复位开关是否关闭,如果没有,则关闭。打开电源,启动:电源接口在实验箱的后面,接上电源,电源开关在实验箱的右侧,将开关制为1,启动。初始化:D0D1D2D3D4D5D6D7S3S2S1S0MCNLDDR2LDDR1SW_GALU_GCLR0000000011111100111输入数据A:01000110输入数据B:00011010计算:S3S2S1S0M 10010输出结果:01100010任务2:连线:开关复位:检查实验箱的复位开关是否关闭,如果没有,则关闭。打开电源,启动:电源接口在实验箱的后面,接上电源,电源开关在实验箱的右侧,将开关制为1,启动。初始化:D0D1D2D3D4D5D6D7S3S2S1S0MCNLDDR2LDDR1SW_GALU_GCLR0000000011111100111输入数据A:01000110输入数据B:00011010计算:S3S2S1S0M 11110输出结果:0011000任务三:连线:开关复位:检查实验箱的复位开关是否关闭,如果没有,则关闭。打开电源,启动:电源接口在实验箱的后面,接上电源,电源开关在实验箱的右侧,将开关制为1,启动。初始化:D0D1D2D3D4D5D6D7S3S2S1S0MCNLDDR2LDDR1SW_GALU_GCLR0000000011111100111输入数据A:10111010输入数据B:00011010计算:S3S2S1S0M 10010输出结果:11010000任务四:连线:开关复位:检查实验箱的复位开关是否关闭,如果没有,则关闭。打开电源,启动:电源接口在实验箱的后面,接上电源,电源开关在实验箱的右侧,将开关制为1,启动。初始化:D0D1D2D3D4D5D6D7S3S2S1S0MCNLDDR2LDDR1SW_GALU_GCLR0000000011111100111输入数据A:01000110输入数据B:11100110计算:S3S2S1S0M 11110输出结果:01100010任务五:连线:开关复位:检查实验箱的复位开关是否关闭,如果没有,则关闭。打开电源,启动:电源接口在实验箱的后面,接上电源,电源开关在实验箱的右侧,将开关制为1,启动。初始化:D0D1D2D3D4D5D6D7S3S2S1S0MCNLDDR2LDDR1SW_GALU_GCLR0000000011111100111输入数据A:01000110输入数据B:00011010计算:S3S2S1S0M 10111输出结果:000000107、 实验总结: 做实验之前没有好好看书做好准备 ,再加上老师讲的有时候没有认真听,有些细节方面掌握的不是很好,做实验的时候手忙脚乱。后来通过看课件演示以及向同学请教才学会如何操作,后来又操作了几次,完全掌握了。通过这次实验对计算机的硬件方面有了一个更深的了解,很有趣。希望在以后的实验中能够课前做好准备,这样才能在实验时候提高效率。 实验项目二:进位控制实验一、实验目的:1.验证带进位控制的算术运算功能发生器的功能。2.按给定的数据完成几种指定的算术运算。二、实验重点:1.进位锁存器的工作原理三、实验难点:1.进位锁存器的工作原理四、实验任务:1.计算-60(加)1042.计算100(加)403.计算120(减)744.计算54(减)74五、实验原理:CY (进位LED指示灯)最高位有进位时CY灯灭,无进位时CY灯亮进位控制运算器的实验原理如上图所示,在实验一的基础上增加进位控制部分,其中181的进位进入一个锁存器,其写入是由T4和AR信号控制,T4是脉冲信号,实验时将T4连至信号单元的TS4上。AR是电平控制信号(低电平有效),可用于实现带进位控制实验,而T4脉冲是将本次运算的进位结果锁存到进位锁存器中。六、实验过程描述:(详细实验过程及实验结果)任务1:连线:连线图开关复位: 检查实验箱的复位开关是否关闭,如果没有,则关闭。打开电源,启动:电源接口在实验箱的后面,接上电源,电源开关在实验箱的右侧,将开关制为1,启动。初始化:D0D1D2D3D4D5D6D7S3S2S1S0MCNLDDR2LDDR1SW_GALU_GCLRAR0000000011111100111011输入数据A:1 1 0 0 0 1 0 0输入数据B:0 1 1 0 1 0 0 0计算:S3S2S1S0M10010输出结果:1 0 0 1 0 1 1 0 0检验进位 进位是1任务2:连线:连线图开关复位: 检查实验箱的复位开关是否关闭,如果没有,则关闭。打开电源,启动:电源接口在实验箱的后面,接上电源,电源开关在实验箱的右侧,将开关制为1,启动。初始化:D0D1D2D3D4D5D6D7S3S2S1S0MCNLDDR2LDDR1SW_GALU_GCLRAR0000000011111100111011输入数据A:0 1 1 0 0 1 0 0输入数据B:0 0 1 0 1 0 0 0计算:S3S2S1S0M10010输出结果:1 0 0 0 1 1 0 0检验进位 没有进位任务3:连线:连线图开关复位: 检查实验箱的复位开关是否关闭,如果没有,则关闭。打开电源,启动:电源接口在实验箱的后面,接上电源,电源开关在实验箱的右侧,将开关制为1,启动。初始化:D0D1D2D3D4D5D6D7S3S2S1S0MCNLDDR2LDDR1SW_GALU_GCLRAR0000000011111100111011输入数据A:0 1 1 1 1 0 0 0输入数据B:0 1 0 0 1 0 1 0计算:S3S2S1S0M 11110输出结果:1 0 0 1 0 1 1 1 0检验进位 进位是 1任务4:连线:连线图开关复位: 检查实验箱的复位开关是否关闭,如果没有,则关闭。打开电源,启动:电源接口在实验箱的后面,接上电源,电源开关在实验箱的右侧,将开关制为1,启动。初始化:D0D1D2D3D4D5D6D7S3S2S1S0MCNLDDR2LDDR1SW_GALU_GCLRAR0000000011111100111011输入数据A:0 0 1 1 0 1 1 0输入数据B:0 1 0 0 1 0 1 0计算:S3S2S1S0M 11110输出结果:1 1 1 0 1 1 0 0检验进位 没有进位7、 实验总结: 再次做实验相比上次有了很大的进步,操作起来更加熟练,听完老师的讲解后,能够快速的连接好线路。在做实验的过程中出现最多的问题就是进位时候CY亮的问题,一直不能很好的掌握。在操作了几次以及请教同学后才有了一个大致的了解,但不是每次做都能成功,希望以后能够加强练习,更好地掌握。实验项目五:存储器实验一、实验目的:1. 掌握静态随机存储器RAM工作特性。2. 掌握静态随机存储器RAM的数据读写方法。二、实验重点:1.半导体双端口静态存储器7130的读写三、实验难点:1.半导体双端口静态存储器7130的读写工作时序四、实验内容:1、从右端口给存储器的00、01、02地址单元中分别写入数据11H、22H、33H;2、然后从右端口依次读出00、01、02地址单元中的内容,在数据总线单元的指示灯上进行显示,观察上述各单元中的内容是否与前面写入的一致。五、实验原理:实验所用的半导体双端口静态存储器电路原理如上图所示,实验中的双端口静态存储器的左端口和右端口,它们分别具有各自独立的地址线(A0A9)、数据线(I/O0I/O7)和控制线(R/W,CE,OE,BUSY)。在实验系统的大多数实验中,该芯片仅使用了右端口的数据线、地址线、控制线,使用方法与通用的单端口静态存储器相同;在做与流水相关的实验中同时用到了它的左、右端口。本节实验中左、右端口数据线接至数据总线,左、右端口地址由地址锁存器(74LS273)给出。地址灯LI01LI08与地址总线相连,显示地址内容。输入单元的数据开关经一个三态门(74LS245)连至数据总线,分别给出地址和数据。地址总线为8位,接入IDT7130的地址AL7AL0与AR0AR7,将IDT7130的高两位AR8AR9接地,所以其实际容量为256字节。IDT7130两个端口分别有三个独立的控制线,如右边有:CER(右端口片选线)、OER(右端口读线)、R/WR(右端口写线)。本实验中将左、右端口的读线OER常接地,在此情况下,当CER=0、R/WR=0时进行右端口写操作,CER=0、R/WR=1时进行右端口读操作,其写时间与T3脉冲宽度一致。原理图中右端口的地址线AR8AR9接地,其访问实际容量为256字节。同时由于左端口的写信号R/WL常接高电平,所以左端口的写功能被封锁了,故实验时输入数据从右端口写入,从左端口读出。实验时,将T3脉冲接至实验板上时序电路模块的TS3相应插针中,其它电平控制信号由开关单元的二进制开关给出,其中SW_G为低电平有效,LDAR为高电平有效。六、实验过程描述:(详细实验过程及实验结果)任务1:连线:连线图开关复位:检查实验箱的复位开关是否关闭,如果没有,则关闭。打开电源,启动:电源接口在实验箱的后面,接上电源,电源开关在实验箱的右侧,将开关制为1,启动。写第一个数据:初始化:D0D1D2D3D4D5D6D7S3S2S1S0MCNLDDR2LDDR1SW_GALU_GCLR0000000011111100111送地址:0000 0000送数据:0000 1011发写命令:CE0,WE0写第二个数据:初始化:D0D1D2D3D4D5D6D7S3S2S1S0MCNLDDR2LDDR1SW_GALU_GCLR0000000011111100111送地址:0000 0001送数据:0001 0110发写命令:CE0,WE0写第三个数据:初始化:D0D1D2D3D4D5D6D7S3S2S1S0MCNLDDR2LDDR1SW_GALU_GCLR0000000011111100111送地址:0000 0010送数据:0010 0001发写命令:CE0,WE0任务2:读第一个数据:初始化:D0D1D2D3D4D5D6D7S3S2S1S0MCNLDDR2LDDR1SW_GALU_GCLR0000000011111100111送地址:0000 0000发读命令:CE0输出数据:0000 1011读第二个数据:初始化:D0D1D2D3D4D5D6D7S3S2S1S0MCNLDDR2LDDR1SW_GALU_GCLR0000000011111100111送地址:0000 0001发读命令:CE0输出数据:0001 0110读第三个数据:初始化:D0D1D2D3D4D
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 仙侠直播活动方案
- 代写公司策划方案
- 代理品牌活动策划方案
- 代驾公司下午茶活动方案
- 以毒攻毒活动方案
- 价格法宣传月活动方案
- 企业参访活动方案
- 仿古射箭活动方案
- 企业书协送春联活动方案
- 企业元宵喜乐会活动方案
- 2025届河南省洛阳市等两地高三下学期三模历史试题(含答案)
- 智能口罩设计优化-洞察阐释
- 2025浙江宁波市余姚市市属企业面向社会招聘企业员工68人笔试参考题库附带答案详解
- 2025年4月八大员-劳务员练习题库与参考答案解析
- 2025-2030肺癌手术行业市场现状供需分析及投资评估规划分析研究报告
- 农村饮水安全工程可行性研究报告
- 一级注册建筑师真题含答案2025年
- 上海教育版数学八年级上册《直角三角形》导学案
- DL∕T 1094-2018 电力变压器用绝缘油选用导则
- (正式版)SH∕T 3541-2024 石油化工泵组施工及验收规范
- 不停车称重系统
评论
0/150
提交评论