组成原理课程设计说明书.doc_第1页
组成原理课程设计说明书.doc_第2页
组成原理课程设计说明书.doc_第3页
组成原理课程设计说明书.doc_第4页
组成原理课程设计说明书.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

组组成成原原理理 课课程程设设计计报报告告 ( 2012 - 2013 年度第年度第 2 学期学期) 计算机组成原理算法实现(计算机组成原理算法实现(二二) 专业专业 学生姓名学生姓名 班级班级 学号学号 指导教师指导教师 完成日期完成日期 组成原理课程设计 目目 录录 1 设计目的 .1 2 设计内容 .1 3 实现方法 .1 3.1 系统目标1 3.2 主体功能3 3.3 开发环境3 4 小 结 .5 附 录 .6 附录 1 源程序清单.6 组成原理课程设计 1 计算机组成原理算法实现(计算机组成原理算法实现(一一) 1 设计目的 本课程设计是在学完本课程教学大纲规定的全部内容、完成所有实践环节的 基础上,旨在深化学生学习的计算机组成原理课程基本知识,进一步领会计算机 组成原理的一些算法,并进行具体实现,提高分析问题、解决问题的综合应用能 力。 2 设计内容 计算机组成原理算法实现(二):能够实现定点小数的机器数表示、定点小 数的变形补码加减运算、定点小数的原码乘法运算和浮点数的加减运算。 3 实现方法 3.1 系统目标 (1)系统进入主界面后:菜单需要在输入口令正确后方可激活使用。口令输 入错误时要给出重新输入口令的提示,三次口令输入错误应该禁止使用。 (2)从主界面中点击相应的菜单可以进入对应的算法演示界面。 (3)实现定点小数的机器数表示,对于正数的定点小数,它的原码、补码、 反码为它本身;移码为最高符号位变为1,其他位保持不变。对于负数的原码为最 高符号位为一,数值位保持不变;补码为从低位向高位找,直到找到第一不为零 的位置将第一个不为零的数后(包括第一个不为零的数)的所有数按位取反(包 括符号位);反码为符号位为1,数值位按位取反;移码为符号位为0,然后从低 位向高位找,直到找到第一不为零的位置将第一个不为零的数后(包括第一个不 为零的数)的所有数按位取反(不包括符号位)。 (4)定点小数变形补码加减运算算法:首先获取两个数的变形补码,获取补 码的原则是:首先判断是正数还是负数,如果是正数,则将“+”号去掉,然后将 第一个“0”变成“00”;如果是负数,则将“-“号去掉,然后从低位向高位找,直 到找到第一不为零的位置将第一个不为零的数后(包括第一个不为零的数)的所 有数按位取反(包括符号位)。然后在通过按位加运算计算两个数的值,如果是 减法也转换成加法做。 (5)定点原码乘法:乘数的每一位分别跟被乘数的每一位相乘, 1*1=1,1*0|0*1|0*0=0,其中小数点后面的第一位为两个数的符号运算。乘数以及 被乘数转化为原码形式正数直接操作,负数第一个由零变为1 。浮点加减法根据 阶码相同阶码则后面的尾数做加减运算,阶码不相同先把阶码转化为相同的阶码, 组成原理课程设计 2 同时改变的尾数做加减法运算。按每一个界面的返回的时候就会转变为开始的界 面。 (6)浮点数的加减运算:首先将两个浮点数用变形补码表示。然后进行对阶 运算,若两数的阶码相同,则可直接对两数的尾数进行加减运算,否则必须先使 两数的阶码相同,原则是将阶码小的向阶码大的看起,再对阶码小的浮点数的尾 数进行移位处理。再将两个数的尾数进行求和,并进行规格化处理,规格化处理 的原则是:如果符号位是11并且小数点后的第一位也是1,则将尾数左移,直到小 数点后的第一个数为0;如果符号位是00并且小数点后的第一个数是0,则进行左 移处理,直到小数点后的第一个数为1;如果符号位是10或01,则将尾数右移一位。 最后进行舍入处理且判断溢出。 系统流程图如下: 组成原理课程设计 3 开始 密码正确否 定点小数的 机器表示 定点小数的变形 补码加减运算 定点小数的原 码乘法运算 浮点数的加减 运算 正确 退出 密码连续输入错误三次 密码连续输入错 误三次以内重新 输入 错误 3.2 主体功能 1)详细设计 数据表示方法: 计算机中常用的数据表示格式有两种,一是定点格式,二是浮点格式。 (1)定点表示:约定机器中所有数据的小数点位置是固定的。由于约定在固 定的位置,所以小数点就不再使用记号“.”来表示。 (2)浮点表示:定点数表示的数的范围有限,为了扩展数的表示范围,按照 科学记数法表示数据的方式,任何一个二进制数 N 都可以表示成如下的格式: NM*2e M :尾数,是一个纯小数,决定数据的表示精度 e :指数,又称为阶码,是一个整数,决定数据的表示范围 数的机器码表示: 一般书写所表示的数据称为真值,在计算机中为了表示符号位,通常把符号 位和数字位一起编码来表示相应的数,形成了各种数据的存储和表示方法,这些 组成原理课程设计 4 编码称为机器码。常用的机器码有原码、反码、补码和移码。 (1)原码:原码的数值部分是该数的绝对值,最高位表示符号位,最高位为 0 是正数,最高位为 1 是负数。 (2)反码:正数的反码等于原码,负数的反码等于除符号位外其余二进制数 码 0 变成 1,1 变成 0。 正数: x反 = x原 = x 负数: 符号位不变,其余变反 (3)补码:正数的补码等于原码,负数的补码等于反码加 1。 正数: x补= x原 负数: x补= x反 +1 定点加、减法运算:定点加、减法运算: 结论:任何两数的补码之和等于两数之和的补码 补码加法: 基本公式: x补 + y补 = x+y补 补码减法: 基本公式: x补 - y补x补 + -y补 当负数用补码表示后,符号位作为数据的一部分一起参加运算,运算器不用 考虑参加加法运算的操作数的正负以及结果的正负,任意数的加法就可以化作正 数加法来实现。 溢出:在定点数机器中,数的大小超出了定点数能表示的范围,叫溢出。 a.在定点小数机中数的表示范围是-1Create(MAKEINTRESOURCE(IDD_DIALOG1); dlg-ShowWindow(1); void CWeiyangDlg:OnButton2() / TODO: Add your control notification handler code here CDialog2 *dlg=new CDialog2; dlg-Create(MAKEINTRESOURCE(IDD_DIALOG2); dlg-ShowWindow(1); void CWeiyangDlg:OnButton5() 组成原理课程设计 13 / TODO: Add your control notification handler code here CDialog3 *dlg=new CDialog3; dlg-Create(MAKEINTRESOURCE(IDD_DIALOG3); dlg-ShowWindow(1); void CWeiyangDlg:OnButton6() / TODO: Add your control notification handler code here CDialog4 *dlg=new CDialog4; dlg-Create(MAKEINTRESOURCE(IDD_DIALOG4); dlg-ShowWindow(1); void CWeiyangDlg:OnButton7() / TODO: Add your control notification handler code here CDialog5 *dlg=new CDialog5; dlg-Create(MAKEINTRESOURCE(IDD_DIALOG5); dlg-ShowWindow(1); void CWeiyangDlg:OnQx() / TODO: Add your control notification handler code here CDialog:OnCancel(); void CAboutDlg:OnOK() / TODO: Add extra validation here CDialog:OnOK(); IDD_DIALOG1 BEGIN_MESSAGE_MAP(CTUBINUM1, CDialog) /AFX_MSG_MAP(CTUBINUM1) ON_BN_CLICKED(IDC_BUTTON1, OnButton1) ON_BN_CLICKED(IDC_BUTTON2, OnButton2) ON_BN_CLICKED(IDC_BUTTON3, OnButton3) ON_BN_CLICKED(IDC_BUTTON4, OnButton4) ON_BN_CLICKED(IDC_BUTTON8, OnButton8) /AFX_MSG_MAP END_MESSAGE_MAP() / / CTUBINUM1 message handlers void CTUBINUM1:OnButton1() / TODO: Add your control notification handler code here CEdit *editText1 = (CEdit *)GetDlgItem(IDC_EDIT1); editText1-SetFocus(); 组成原理课程设计 14 void CTUBINUM1:OnButton2() CString str; GetDlgItemText(IDC_EDIT1,str); /用 GetDlgItemText(文本框 ID,字符串),将文本框内容存放 到字符串中. CString symbol = str.Left(1); CString result=str; if(symbol.Compare(“+“)=0) result.Replace(“+0“, “0“); else if(symbol.Compare(“-“)=0) result.Replace(“-0“, “1“); SetDlgItemText(IDC_EDIT2, result); void CTUBINUM1:OnButton3() CString str; GetDlgItemText(IDC_EDIT1,str); /用 GetDlgItemText(文本框 ID,字符串),将文本框内容存放 到字符串中. CString symbol = str.Left(1); CString result=str; if(symbol.Compare(“+“)=0) result.Replace(“+0“, “0“); else if(symbol.Compare(“-“)=0) result.Replace(“-0“, “1“); int length=result.GetLength(); char a=0,b=0; int i=2; for(;iSetFocus(); void CDialog2:OnAdd() / TODO: Add your control notification handler code here CString str1,str2; GetDlgItemText(IDC_EDIT1,str1); GetDlgItemText(IDC_EDIT2,str2);/用 GetDlgItemText(文本框 ID,字符串),将文本框内容存 放到字符串中. CString symbol = str1.Left(1); CString symbol1 = str2.Left(1); str1.Delete(1,2); str2.Delete(1,2); CString result=str1; CString result1=str2; if(symbol.Compare(“+“)=0) result.Replace(“+“, “00“); else if(symbol.Compare(“-“)=0) result.Replace(“-“, “11“); int length=result.GetLength(); char a=0,b=0; int i=2; for(;i=length-1;i+) a=result.GetAt(i); b=1-a; if(b=0) result.SetAt(i,0); else result.SetAt(i,1); a=result.GetAt(length-1); if(a=0) result.SetAt(length-1,1); else for(i=length-1;result.GetAt(i)!=0;i-) result.SetAt(i,0); 组成原理课程设计 17 result.SetAt(i,1); if(symbol1.Compare(“+“)=0) result1.Replace(“+“, “00“); else if(symbol1.Compare(“-“)=0) result1.Replace(“-“, “11“); int length=result1.GetLength(); char a=0,b=0; int i=2; for(;i=length-1;i+) a=result1.GetAt(i); b=1-a; if(b=0) result1.SetAt(i,0); else result1.SetAt(i,1); a=result1.GetAt(length-1); if(a=0) result1.SetAt(length-1,1); else for(i=length-1;result1.GetAt(i)!=0;i-) result1.SetAt(i,0); result1.SetAt(i,1); /对两个操作数求补的过程 IDD_DIALOG3 CDialog3:CDialog3(CWnd* pParent /*=NULL*/) : CDialog(CDialog3:IDD, pParent) /AFX_DATA_INIT(CDialog3) / NOTE: the ClassWizard will add member initialization here /AFX_DATA_INIT void CDialog3:DoDataExchange(CDataExchange* pDX) CDialog:DoDataExchange(pDX); /AFX_DATA_MAP(CDialog3) / NOTE: the ClassWizard will add DDX and DDV calls here /AFX_DATA_MAP BEGIN_MESSAGE_MAP(CDialog3, CDialog) /AFX_MSG_MAP(CDialog3) ON_BN_CLICKED(IDC_BUTTON1, OnButton1) /AFX_MSG_MAP END_MESSAGE_MAP() / 组成原理课程设计 18 / CDialog3 message handlers void CDialog3:OnCancel() / TODO: Add extra cleanup here CDialog:OnCancel(); IDD_DIALOG4 void CDialog4:DoDataExchange(CDataExchange* pDX) CDialog:DoDataExchange(pDX); /AFX_DATA_MAP(CDialog4) / NOTE: the ClassWizard will add DDX and DDV calls here /AFX_DATA_MAP BEGIN_MESSAGE_MAP(CDialog4, CDialog) /AFX_MSG_MAP(CDialog4) ON_BN_CLICKED(IDC_BUTTON1, OnButton1) ON_BN_CLICKED(IDC_BUTTON2, OnButton2) ON_BN_CLICKED(IDC_BUTTON9, OnButton9) /AFX_MSG_MAP END_MESSAGE_MAP() / / CDialog4 message handlers CString sub(CString str1,CString str2) CString symbol = str1.Left(1); CString symbol1 = str2.Left(1); CString result=str1; CString result1=str2; if(symbol.Compare(“+“)=0) result.Replace(“+“, “00“); else if(symbol.Compare(“

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论