《组成原理课程设计说明书.doc》由会员分享,可在线阅读,更多相关《组成原理课程设计说明书.doc(21页珍藏版)》请在金锄头文库上搜索。
1、组成原理课程设计组成原理课程设计报告( 2012 - 2013 年度第 2 学期)计算机组成原理算法实现(二)专业学生姓名班级学号指导教师完成日期1目 录1 设计目的12 设计内容13 实现方法13.1 系统目标13.2 主体功能33.3 开发环境34 小 结5附 录6附录1 源程序清单63计算机组成原理算法实现(一)1 设计目的 本课程设计是在学完本课程教学大纲规定的全部内容、完成所有实践环节的基础上,旨在深化学生学习的计算机组成原理课程基本知识,进一步领会计算机组成原理的一些算法,并进行具体实现,提高分析问题、解决问题的综合应用能力。2 设计内容计算机组成原理算法实现(二):能够实现定点小
2、数的机器数表示、定点小数的变形补码加减运算、定点小数的原码乘法运算和浮点数的加减运算。3 实现方法3.1 系统目标(1)系统进入主界面后:菜单需要在输入口令正确后方可激活使用。口令输入错误时要给出重新输入口令的提示,三次口令输入错误应该禁止使用。(2)从主界面中点击相应的菜单可以进入对应的算法演示界面。(3)实现定点小数的机器数表示,对于正数的定点小数,它的原码、补码、反码为它本身;移码为最高符号位变为1,其他位保持不变。对于负数的原码为最高符号位为一,数值位保持不变;补码为从低位向高位找,直到找到第一不为零的位置将第一个不为零的数后(包括第一个不为零的数)的所有数按位取反(包括符号位);反码
3、为符号位为1,数值位按位取反;移码为符号位为0,然后从低位向高位找,直到找到第一不为零的位置将第一个不为零的数后(包括第一个不为零的数)的所有数按位取反(不包括符号位)。(4)定点小数变形补码加减运算算法:首先获取两个数的变形补码,获取补码的原则是:首先判断是正数还是负数,如果是正数,则将“+”号去掉,然后将第一个“0”变成“00”;如果是负数,则将“-号去掉,然后从低位向高位找,直到找到第一不为零的位置将第一个不为零的数后(包括第一个不为零的数)的所有数按位取反(包括符号位)。然后在通过按位加运算计算两个数的值,如果是减法也转换成加法做。(5)定点原码乘法:乘数的每一位分别跟被乘数的每一位相
4、乘,1*1=1,1*0|0*1|0*0=0,其中小数点后面的第一位为两个数的符号运算。乘数以及被乘数转化为原码形式正数直接操作,负数第一个由零变为1 。浮点加减法根据阶码相同阶码则后面的尾数做加减运算,阶码不相同先把阶码转化为相同的阶码,同时改变的尾数做加减法运算。按每一个界面的返回的时候就会转变为开始的界面。(6)浮点数的加减运算:首先将两个浮点数用变形补码表示。然后进行对阶运算,若两数的阶码相同,则可直接对两数的尾数进行加减运算,否则必须先使两数的阶码相同,原则是将阶码小的向阶码大的看起,再对阶码小的浮点数的尾数进行移位处理。再将两个数的尾数进行求和,并进行规格化处理,规格化处理的原则是:
5、如果符号位是11并且小数点后的第一位也是1,则将尾数左移,直到小数点后的第一个数为0;如果符号位是00并且小数点后的第一个数是0,则进行左移处理,直到小数点后的第一个数为1;如果符号位是10或01,则将尾数右移一位。最后进行舍入处理且判断溢出。系统流程图如下:开始密码正确否定点小数的机器表示定点小数的变形补码加减运算定点小数的原码乘法运算浮点数的加减运算正确退出密码连续输入错误三次密码连续输入错误三次以内重新输入错误3.2 主体功能1)详细设计数据表示方法:计算机中常用的数据表示格式有两种,一是定点格式,二是浮点格式。(1)定点表示:约定机器中所有数据的小数点位置是固定的。由于约定在固定的位置
6、,所以小数点就不再使用记号“.”来表示。(2)浮点表示:定点数表示的数的范围有限,为了扩展数的表示范围,按照科学记数法表示数据的方式,任何一个二进制数N都可以表示成如下的格式:NM*2eM :尾数,是一个纯小数,决定数据的表示精度e :指数,又称为阶码,是一个整数,决定数据的表示范围数的机器码表示:一般书写所表示的数据称为真值,在计算机中为了表示符号位,通常把符号位和数字位一起编码来表示相应的数,形成了各种数据的存储和表示方法,这些编码称为机器码。常用的机器码有原码、反码、补码和移码。(1)原码:原码的数值部分是该数的绝对值,最高位表示符号位,最高位为0是正数,最高位为1是负数。(2)反码:正
7、数的反码等于原码,负数的反码等于除符号位外其余二进制数码0变成1,1变成0。正数: x反 = x原 = x负数: 符号位不变,其余变反(3)补码:正数的补码等于原码,负数的补码等于反码加1。正数: x补= x原负数: x补= x反 +1定点加、减法运算:结论:任何两数的补码之和等于两数之和的补码补码加法:基本公式: x补 + y补 = x+y补补码减法:基本公式: x补 - y补x补 + -y补当负数用补码表示后,符号位作为数据的一部分一起参加运算,运算器不用考虑参加加法运算的操作数的正负以及结果的正负,任意数的加法就可以化作正数加法来实现。溢出:在定点数机器中,数的大小超出了定点数能表示的范
8、围,叫溢出。a.在定点小数机中数的表示范围是-1x1,如果运算过程中出现了大于1或者小于1的情况。b.在定点整数机(8位)中数的表示范围是-128x127,如果运算过程中出现了大于127或者小于128的情况。双符号位法:将符号位扩展为2位,具体说就是对于正数两个符号位是“00”,对于负数两个符号位是“11”。两个符号位都看作数码一样参加运算。两个数相加后,其结果的符号位出现“01”或“10”两种组合时,表示发生溢出。符号位“01”,上溢出符号位“10”,下溢出符号位“00”或者“11”,未溢出从补求补的法则是:对补“包括符号位求反且最末位加1”,即可得到补定点乘法运算 :在定点计算机中,两个原
9、码表示的数相乘的运算规则是:乘积的符号位由两数的符号位按异或运算得到,而乘积的数值部分则是两个正数相乘之积。设n位被乘数和乘数用定点小数表示(定点整数也同样适用)被乘数 原f .n110乘数 原f .n110则乘积原(ff)(0.n110)(0.n110)式中,f为被乘数符号,f为乘数符号。机器算法: 机器中一种方法是多次采用“加法移位”的方法来完成,称为串行乘法器,它的硬件结构简单,但是速度慢,目前广泛使用的是流水式阵列乘法器,称为并行乘法器。无符号数m乘以n会产生m*n个位积,出现m+n个列和,并行乘法器的关键是快速产生m*n个位积,对位积进行相加运算产生m+n个列和。第一步:位积的产生观
10、察乘法运算:0*00,0*10,1*00,1*11,相当于:ab所以m*n个位积可以由m*n个与门并行产生。第二步:列和的产生:利用全加器浮点数的加减法运算:浮点数的加减法运算分为六个步骤:(1)0操作数检查浮点加减运算过程比定点运算过程复杂。如果判知两个操作数或中有一个数为0,即可得知运算结果而没有必要再进行后续的一系列操作以节省运算时间。0操作数检查步骤则用来完成这一功能。参加加法运算的数据都是非零,进入下一步。(2)比较价码大小并完成对阶为了便于直观理解,假设两数均以补码表示,阶码采用双符号位,尾数采用单符号位。 两浮点数进行加减,首先要看两数的阶码是否相同,若二数阶码不同,表示小数点位
11、置没有对齐,此时必须使两个数阶码相同,这个过程叫作对阶。对阶操作规定使尾数右移,尾数右移后阶码作相应增加,因此对阶时,总是使小阶向大阶看齐。(3)尾数进行加减运算对阶结束后,即可进行尾数的求和运算。不论加法运算还是减法运算,都按加法进行操作(减法利用补码减法转换成补码的加法来做),其方法与定点加减法运算完全一样。(4)结果规格化a. 采用双符号位表示尾数时,如果两符号位为01或10时,应将结果尾数右移一位,阶码加1(叫“右规”)。b. 如果尾数最高数值位与符号位相同,应将尾数左移,阶码减,直至数值位最高位与符号位相反(叫“左规”)。(5)舍入运算在对阶向右规格化,尾数向右移位,这样被右移的尾数
12、的低位部分会被丢掉,从而造成一定误差,要进行舍入处理。简单的舍入方法有两种:一种是“0舍1入”法,即如果右移时被丢掉数位的最高位为0则舍去,为1则将尾数的末位做加加1运算。另一种是“恒置1”法,即只要数位被移掉,就在尾数的末尾恒置1。(6)判断结果是否溢出根据补码的双符号检测溢出的方法确定阶码是否溢出。2)具体设计(1)判定用户登录合法性。用户在使用算法演示系统前需要输入正确的密码,若密码正确将提示“密码输入正确,欢迎使用组成原理算法演示系统!”,此时菜单项变为可用。若用户输入的密码错误,系统将提示“密码输入错误,请重新输入!”。若用户连续三次输错密码,系统将提示“密码输入错误三次,程序将自动
13、关闭!”密码输入正确、错误和错误三次以上的情况如图1、2、3所示:图1 密码输入正确图2 密码输入错误图3 密码输入错误三次以上(2)定点小数机器表示用户在主界面上点击“定点小数机器表示”菜单,进入定点小数机器表示演示模块。用户点击“输入”按钮,输入一个二进制定点小数,按“原码”、“反码”、“补码”、“移码”按钮后,会输入相应的机器数值,如图4所示。图4 定点小数的机器表示(3)定点小数的变形补码运算用户在主界面点击“定点小数的变形补码运算”菜单,进入定点小数的变形补码运算模块。用户点击输入按钮,输入两个参与运算的二进制定点小数,按“加法”按钮,程序会在对应的输出框中输出变形补码加运算的值,按
14、“减法”按钮,程序会在对应的输出框中输出变形补码减运算的值,如图5所示。所计算过程中发生溢出,程序将给出正溢出或负溢出提示,如图6所示。图5 定点小数的变形补码加减运算图6 发生溢出(4)定点小数的原码乘法用户在主界面点击“定点小数的原码乘法”菜单,进入定点小数的原码乘法演示模块。用户点击输入按钮,输入两个参与运算的二进制定点小数,按“乘法”按钮,程序会在对应的输出框中输出原码乘法运算的值,结果如图7所示。图7 定点小数的原码乘法(5)浮点数的加减运算用户在主界面点击“浮点数的加减运算”菜单,进入浮点数的加减运算模块。用户点击输入按钮,输入参与运算的两个浮点数的阶码和尾数值(阶码形如+010、-011等,尾数形如+0.1010101、-0.11110101等),按“加法”按钮,程序会在对应的输出框中输出浮点数加运算的阶码和尾数值,按“减法”按钮,程序会在对应的输出框中输出浮点数减运算的阶码和尾数值,如图8所示。图8 浮点数的加减运算(6)帮助对于不熟悉系统的用户,在输入密码前便可以点击帮助按钮,获取相关的使用说明。如图9所示。图9 帮助3.3 开发环境Microsoft Visual C+ 6.0集成环境。4 小 结通过这次课程设计,使我对于计算机组成原理中有关于定点小数的相关计算和浮点数的计算有了更深层次的了解,从原理上了解了定点小数的机器表示,定点小数变形补码