计算机原理课程设计(4)

计算机原理课程设计(4)
计算机原理课程设计(4)

课程设计说明书

计算机组成原理算法实现(四)

专业 计算机科学与技术

学生姓名 王亚飞 班级 D 计算机132 学

1320704223 指导教师 花小朋 完成日期

2016年1月22日

1 课程设计目的

本课程设计是在学完本课程教学大纲规定的全部内容、完成所有实践环节的基础上,旨在深化学生学习的计算机组成原理课程基本知识,进一步领会计算机组成原理的一些算法,并进行具体实现,提高分析问题、解决问题的综合应用能力。

2 课程设计内容与要求

2.1 题目

计算机组成原理算法实现(四)

2.2 功能

能够实现机器数的真值还原(定点小数)、定点小数的单符号位补码加减运算、定点小数的补码乘法运算和浮点数的加减运算。

(1)系统进入(主)窗体的设计:菜单需要在输入口令正确后方可激活使用。口令输入错误时要给出重新输入口令的提示。

(2)选择主窗体中“定点小数真值还原”时进入下图所示的窗体:

在上面的窗体中按“输入”按扭时,将输入焦点设置为最上面的一个文本框上。输入一个定点小数形式的机器数(如:1.1001)后,按“原—〉真值”、“反—〉真值”、“补—〉真值”或“移—〉真值”按钮中的任一个后,将在第二个文本框中显示对应的真值。选择“返回”按钮时回到主窗体。

(3)选择主窗体中的“定点小数单符号位补码加减运算”时进入如下图所示的窗体:操作时首先选择“输入”按钮输入参与运算的数据,然后再选操作按钮。当单击“加法”、“减法”第三、四个文本框显示对应的结果。选择“返回”按钮时回到主窗体。

(4)选择主窗体中的“定点小数原码乘法”时进入如下图所示的窗体:操作时首先选择“输入”按钮输入参与运算的数据,然后再选操作按钮。当单击“乘法”时第三个文本框显示对应的结果。选择“返回”按钮时回到主窗体。

(5)选择主窗体中的“浮点数的加减运算”时进入下图所示的窗体:先选择“输入”按钮输入参与运算的数据,再选操作按钮。当单击“加法”和“减法”时下列文本框显示对应的结果:加法的阶码和尾数、减法的阶码和尾数。选择“返回”按钮时回到主窗体。

(6)选择主窗体中的“帮助”进入下图所示的窗体:阅读完文字后,可使用“关闭”按钮返回主窗口。

3 功能模块详细设计3.1 功能介绍

3.2实现方法

(1)登录界面

设计思路

界面:整个布局使用了LinearLayout,设置 android:orientation="vertical"就可以让所有控件以水平方式来排列,LinearLayout作为容器来承载控件,布局中第一个控件是TextView,值为“计算机组成原理算法实现(4)”,第二个控件是EditText,EditText是文本输入框,最后一个控件是Button控件,用于确定来绑定事件。

功能:Buttton绑定了一个监听点击的一个事件,在这个方法体中,主要写了,获得EditText的字符串消息和Intnet跳转,Intent是Android中的一个类,用于控件不同地Activity跳转,从而实现可以在手机上看到不同的画面,这里的Intent 跳转到主界面,这也是程序的唯一入口地址。当口令正确,就可以进入主界面,如果连续三次错误程序将被锁死,无法打开。

(2)主界面

设计思路

界面:在主界面中使用了NavigationView,NavigationView采用最Google最新的Material Design,它是一个很新并且重要的Material Design组件。在Material Design中,Navigation drawer导航抽屉,被设计用于应用导航,提供了一种通用的导航方式,体现了设计的一致性。

而NavigationView的典型用途就是配合之前v4包的DrawerLayout,作为其中的Drawer部分,即导航菜单的本体部分。NavigationView是一个导航菜单框架,使用menu资源填充数据,使我们可以更简单高效的实现导航菜单。它提供了不错的默认样式、选中项高亮、分组单选、分组子标题、以及可选的Header。

功能:这里的导航菜单设置了四个ITEM,分别是“机器数的真值还原”,“定点小数符号位的补码加减运算”,“定点小数原码的乘法运算”和“浮点数的加减运算”,点击对应的ITEM分别会跳到相应的界面,从而实现了界面的跳转,具体的操作将会在别人Activity处理。

(3)机器数的真值还原

设计思路

界面:在这个UI中,设置了较多的控件,首先第一个是EditText,用于输入信息,第二个和第三个控件都是TextView,不同的是第一个只是用来提示用户下面是真值,所以这里的Text属性就被设置了“真值是”,第三个真正用来显示所求的结果的,然后依次放了几个Button,用来触发事件。

功能:第一个Button是原码求真值的,我们所输入的是定点小数所以是符合原码的不用再做处理,第二个Button是“反码-->真值”,当得到所输入的数据后,对这个定点小数小数点以后的数据进行取反,取反的数据再与符号位连接起来就得到“反码-->真值”的值了。第三个Button是用来“补码-->真值”,因为补码是在反码基础上取反加1就好,所以可以复用求反码的方法,在此基础上加1,便取到补码到真值的值了。第四个Button是“移码”复用第三个Button的方法,只要对符号位替换掉就好了。

(4)定点小数的单符号位的补码加减运算

设计思路

界面:UI布居中,有两个EditText,分别输入两个定点小数,两个TextView用来显示求和的结果,和相减的结果,四个Button按钮用来触发事件。

功能:

点击“减法”会获得两个输入框中补码相加的结果,在TextView中显示,点击“加法”会对两个输入框的值进行相加,加的结果会显示在TextView中,以供用户观察。点击“返回”会直接退出这个界面,回到主界面,点击“清除”会清除输入框中的值。代码处理首先是取得两个ExitText中的值,程序得到的值会进行判断是正是负,如果是正的直接处理,如果是负的会把它写成加一个负数的形式,调用相

加的方法,最后加上符号位,最后返回一个字符串。

(5)定点小数原码乘法运算

设计思路

界面:UI中有两个EditText,一个TextView以及三个Button。

功能:点击输入会获得第一个EditText的焦点,点击乘法会对两个输入框的值进行相乘,乘的结果会显示在TextView中,以供用户观察。点击“返回”会直接退出这个界面,回到主界面。定点小数原码乘法的原理是,符号位相同得正,不同为负,然后对后边字符串中的内容进行遍历,第一个数的最后一位依次与第二个数的个个位置的数相乘,保存在一个字符串数组中,最后对这个数组进行二进制加法运算,返回这个结果。

(6)浮点数的加减运算

设计思路

界面:UI布居中,有四个EditText,分别输入两个浮点小数,四个TextView用来显示求和的结果,和相减的结果,四个Button按钮用来触发事件。

功能:点击“输入”会获得第一个EditText的焦点,点击乘法会对四个输入框的值进行浮点数加减,乘的结果会显示在TextView中,以供用户观察。点击“返回”会直接退出这个界面,回到主界面。

4 设计小结

为期一周的课程设计就这样结束了。在程序设计的时也遇到了很多的问题,刚刚看到这个题目时觉得挺简单,后来慢慢的发现并非如此。当你真正要去做一个东西的时候,会面临比平常多的问题。

经过本次课程设计,发现做软件真的需要做很多工作,不仅仅是敲代码。

通过此次课程设计,使我更加扎实的掌握了有关Android方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。过而能改,善莫大焉。在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。最终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。这次课程设计终于顺利完成了,在设计中遇到了很多问题。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,

然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可!课程设计诚然是一门专业课,给我很多专业知识以及专业技能上的提升,同时又是一门讲道课,一门辩思课,给了我许多道,给了我很多思,给了我莫大的空间。同时,设计让我感触很深。使我对抽象的理论有了具体的认识。

参考文献

[1] 白中英. 计算机组成原理(第五版)[M]. 北京: 科学出版社, 2010.

[2]耿祥义《Java2实用教程》[M].北京:清华大学出版社2006.08

部分代码

Util.java

package com.wyf.king.myapplication;

public class Util {

/*****

* 求补码

* @param str String

*

* @return String

*/

public String getBuMa(String str)

{

String buMa;

if(NotRight(str))

{

return "数据不会法!!!";

}

else if(str.charAt(0)=='0')

{

System.out.println("我是正数");

return str;

}

else {

buMa=str.substring(0,

2)+QuFan(str.substring(2,str.length()));

System.out.println("前两个是"+str.substring(0, 2));

System.out.println("我是负数");

return buMa;

}

}

/**

* 对字符串取反

* @param str String

* @return String

*/

public String QuFan(String str)

{

System.out.println("取反的字符串是"+str);

str=str.replace("1","*");

str=str.replace("0","1");

str=str.replace("*","0");

System.out.println("取反后是:"+str);

return str;

}

public boolean NotRight(String str) {

// Pattern pattern = https://www.360docs.net/doc/105196114.html,pile("[0-1]"); // Matcher matcher = pattern.matcher(str);

// if (matcher.find()) {

// return true;

// }

return false;

}

/**

* 定点小数加法运算

* @param one String

* @param two String

* @return String

*/

public String DingJiaJian(String one,String two) {

one=getBuMa(one);

two=getBuMa(two);

String result="";

int len;

String temp=null;

if(one.length()

{

temp=one;

one=two;

two=temp;

}

boolean jinwei[]=new boolean[one.length()];

{

len=two.length();

result=one.substring(len);

System.out.println("len是从这里开始的"+result);

for(int i=len-1;i>=0;i--)

{

if(one.charAt(i)=='.')

{

jinwei[i]=true;

result="."+result;

continue;

}

int

sum=(int)(one.charAt(i)+two.charAt(i));

System.out.println(sum);

System.out.println("one的值是"+one.charAt(i)+"two的值是"+two.charAt(i)+"sum是"+sum);

System.out.println('2');

if(sum==98)

{

jinwei[i]=true;

if

((i+1)

temp="1"+result;

result=temp;

}

else {

temp="0"+result;

result=temp;

}

}

else if (sum==97)

{

if

((i+1)

temp="0"+result;

result=temp;

jinwei[i]=true;

}

else {

temp="1"+result;

result=temp;

jinwei[i]=false;

}

}

else if (sum==96) {

if(jinwei[i+1])

{

temp="1"+result;

result=temp;

}

else {

temp="0"+result;

result=temp;

}

jinwei[i]=false;

}

else {

}

if(i==0)

{

if(jinwei[0]&&jinwei[2]||!jinwei[0]&&!jinwei[2])

{

return result;

}

}

}

}

return "内存溢出";

}

public String DingJianFa(String one,String two) {

System.out.println("two is"+two);

if(two.charAt(0)=='0')

{

two="1"+two.substring(1);

}

else {

two="0"+two.substring(1);

}

return DingJiaJian(one, two);

}

/**

* 原码乘法运算

* @param one String

* @param two String

* @return String

*/

public String YuanCheng(String one,String two) {

String result;

String temp="";

//保留正负号

if(one.charAt(0)==two.charAt(0))

result="0.";

else {

result="1.";

}

String a=result;

result="0";

one=one.substring(2);

two=two.substring(2);

char first[]=one.toCharArray();

char second[]=two.toCharArray();

int len1=first.length;

int len2=second.length;

char aa[]=new char[100];

if(len1

{

aa=first;

first=second;

second=aa;

}

String meiHang[]=new String[second.length*second.length];

int len=first.length;

for(int i=0;i

{

for(int j=0;j

{

if(first[i]=='1'&&second[i]=='1')

{

temp="1"+temp;

}

else

{

temp="0"+temp;

}

}

for(int j=1;j<=i;j++)

temp=temp+"0";

meiHang[i]=temp;

temp="";

System.out.println("每行的数据:"+meiHang[i]);

result=ErJiaFa(meiHang[i],result);

}

return a+result;

}

/******************二进制加法器************************/

public String ErJiaFa(String one,String two)

{

String result="";

int len=0;

String temp=null;

if(one.length()

{

temp=one;

one=two;

two=temp;

}

boolean jinwei[]=new boolean[one.length()+2];

int len1=one.length();

int len2=two.length();

for (int i = 0; i < len1-len2; i++)

{

two="0"+two;

}

for (int i = len1-1;i>=0; i--)

{

char a=one.charAt(i);

char b=two.charAt(i);

if((a=='1'&&b=='1'&&(jinwei[i+1]==true)))

{

result="1"+result;

jinwei[i]=true;

}

else

if((a=='1'&&b=='1'&&jinwei[i+1]==false))

{

result="0"+result;

jinwei[i]=true;

}

else

if((a=='0'&&b=='0'&&jinwei[i+1]==true))

{

result="1"+result;

}

else

if((a=='0'&&b=='0'&&jinwei[i+1]==false))

{

result="0"+result;

}

else

if(jinwei[i+1]==true&&(a=='1'&&b=='0'||a=='0'&&b==' 1'))

{

result="0"+result;

jinwei[i]=true;

}

else

if(jinwei[i+1]==false&&((a=='1'&&b=='0')||(a=='0'&&b =='1')))

{

result="1"+result;

jinwei[i]=false;

System.out.println("我错了"+result);

}

System.out.println("result

"+result);

}

if (jinwei[0])

{

result="1"+result;

}

return result;

}

}

FuDianShuUtil.java

package com.wyf.king.myapplication;

/**

* Created by King on 2016/1/20.

*/

public class FuDianShuUtil {

public String FuDianShuJia(String j1 ,String j2,String t1,String t2)

{

String result1=null,result2=null;

String s2_=t1;

char b1_[]=new char[s2_.length()-1];

s2_.getChars(0,2,b1_,0);

s2_.getChars(3,s2_.length(),b1_,2);

C.原_补(b1_);

String s2=new String(b1_);

String s4_=t2;

char b2_[]=new char[s4_.length()-1];

s4_.getChars(0,2,b2_,0);

s4_.getChars(3,s4_.length(),b2_,2);

C.原_补(b2_);

String s4=new String(b2_);

String s1=j1;

char a1[]=s1.toCharArray();

C.原_补(a1);

String s3=j2;

char a2[]=s3.toCharArray();

C.原_补(a2);

B.减(a1,a2,a1); //对阶

C.原_补(a1);

int p=C.二_十(new String(a1,2,3));

char b1[]=new char[p+s2.length()];

for(int i=0;i

char b2[]=new char[p+s4.length()];

for(int i=0;i

if(a1[0]=='0')

{

s1.getChars(0, s1.length(), a1, 0);

s2.getChars(0, s2.length(), b1, 0);

s4.getChars(0, s4.length(), b2, p);

}

else

{

s3.getChars(0, s3.length(), a1, 0);

s2.getChars(0, s2.length(), b1, p);

s4.getChars(0, s4.length(), b2, 0);

}

B.加(b1, b2, b1); //尾数相加

String s=new String(b1);

if(s.startsWith("01")||s.startsWith("10")) //右规

{

for(int i=b1.length-1;i>=1;i--) b1[i]=b1[i-1];

C.加一(a1);

}

else if(s.startsWith("00")) //左规

{

int t=s.indexOf("1")-2 ;

for(int i=0;i

for(int i=b1.length-t;i

String t_=Long.toBinaryString(t);

char a1_[]=new char[5];

for(int i=0;i<5;i++) a1_[i]='0';

t_.getChars(0,t_.length(),a1_,a1.length-t_.length());

B.减(a1, a1_, a1);

}

else if(s.startsWith("11"))

{

int t=s.indexOf("0")-2 ;

for(int i=0;i

for(int i=b1.length-t;i

String t_=Long.toBinaryString(t);

char a1_[]=new char[5];

for(int i=0;i<5;i++) a1_[i]='0';

t_.getChars(0,t_.length(),a1_,a1.length-t_.length());

B.减(a1, a1_, a1);

}

if(b1[b1.length-p]=='1') //舍入

{

String code=new String(b1,0,b1.length-p);

char c[]=code.toCharArray();

C.加一(c);

b1=c;

String code_=new String(b1);

if(code_.startsWith("01")||code_.startsWith("10")) //右规

{

for(int i=c.length-1;i>=1;i--) c[i]=c[i-1];

C.加一(a1);

}

}

if(a1[0]=='0'&&a1[1]=='1'||a1[0]=='1'&&a1[1]=='0')

{

return "结果溢出@结果溢出";

}

else

{

C.原_补(a1);

if(a1[0]=='0') { a1[0]=' '; a1[1]=(char)('+');}

else {a1[0]=' '; a1[0]=(char)('-');}

String code1=new String(a1);

// result1=code1;

C.原_补(b1);

if(b1[0]=='0') { b1[1]='0'; b1[0]=(char)('+');}

else {b1[1]='0'; b1[0]=(char)('-');}

StringBuffer code2_=new StringBuffer(new String(b1));

code2_.insert(2,".");

String code2=new String(code2_);

// result=code2;

return code1+"@"+code2;

}

}

public String FuDianShuJian(String j1 ,String j2,String t1,String t2)

{

String result=null;

String s2_=t1;

char b1_[]=new char[s2_.length()-1];

s2_.getChars(0,2,b1_,0);

s2_.getChars(3,s2_.length(),b1_,2);

C.原_补(b1_);

String s2=new String(b1_);

String s4_=t2;

char b2_[]=new char[s4_.length()-1];

s4_.getChars(0,2,b2_,0);

s4_.getChars(3,s4_.length(),b2_,2);

C.原_补(b2_);

String s4=new String(b2_);

String s1=j1;

char a1[]=s1.toCharArray();

C.原_补(a1);

String s3=j2;

char a2[]=s3.toCharArray();

C.原_补(a2);

B.减(a1,a2,a1); //对阶

C.原_补(a1);

int p=C.二_十(new String(a1,2,3));

char b1[]=new char[p+s2.length()];

for(int i=0;i

char b2[]=new char[p+s4.length()];

for(int i=0;i

if(a1[0]=='0')

{

s1.getChars(0, s1.length(), a1, 0);

s2.getChars(0, s2.length(), b1, 0);

s4.getChars(0, s4.length(), b2, p);

}

else

{

s3.getChars(0, s3.length(), a1, 0);

s2.getChars(0, s2.length(), b1, p);

s4.getChars(0, s4.length(), b2, 0);

}

B.减(b1, b2, b1); //尾数相

String s=new String(b1);

if(s.startsWith("01")||s.startsWith("10")) //右规

{

for(int i=b1.length-1;i>=1;i--) b1[i]=b1[i-1];

C.加一(a1);

}

else if(s.startsWith("000")) //左规

{

int t=s.indexOf("1")-2 ;

for(int i=0;i

for(int i=b1.length-t;i

String t_=Long.toBinaryString(t);

char a1_[]=new char[5];

for(int i=0;i<5;i++) a1_[i]='0';

t_.getChars(0,t_.length(),a1_,a1.length-t_.length());

B.减(a1, a1_, a1);

}

else if(s.startsWith("111"))

{

int t=s.indexOf("0")-2 ;

for(int i=0;i

for(int i=b1.length-t;i

String t_=Long.toBinaryString(t);

char a1_[]=new char[5];

for(int i=0;i<5;i++) a1_[i]='0';

t_.getChars(0,t_.length(),a1_,a1.length-t_.length());

B.减(a1, a1_, a1);

}

if(b1[b1.length-p]=='1') //舍入

{

String code=new String(b1,0,b1.length-p);

char c[]=code.toCharArray();

C.加一(c);

b1=c;

String code_=new String(b1);

if(code_.startsWith("01")||code_.startsWith("10")) //右规

{

for(int i=c.length-1;i>=1;i--) c[i]=c[i-1];

C.加一(a1);

}

}

计算机组成原理实验报告

福建农林大学计算机与信息学院信息工程类实验报告系:计算机科学与技术专业:计算机科学与技术年级: 09级 姓名:张文绮学号: 091150022 实验课程:计算机组成原理 实验室号:___田405 实验设备号: 43 实验时间:2010.12.19 指导教师签字:成绩: 实验一算术逻辑运算实验 1.实验目的和要求 1. 熟悉简单运算器的数据传送通路; 2. 验证4位运算功能发生器功能(74LS181)的组合功能。 2.实验原理 实验中所用到的运算器数据通路如图1-1所示。其中运算器由两片74181

以并/串形式构成8位字长的ALU。运算器的输出经过一个三态门(74245)和数据总线相连,运算器的两个数据输入端分别由两个锁存器(74373)锁存,锁存器的输入连接至数据总线,数据开关INPUT DEVICE用来给出参与运算的数据,并经过一个三态门(74245)和数据总线相连,数据显示灯“BUS UNIT”已和数据总线相连,用来显示数据总线内容。 图1-2中已将用户需要连接的控制信号用圆圈标明(其他实验相同,不再说明),其中除T4为脉冲信号,其它均为电平信号。由于实验电路中的时序信号均已连至W/R UNIT的相应时序信号引出端,因此,在进行实验时,只需将W/R UNIT 的T4接至STATE UNIT的微动开关KK2的输出端,按动微动开关,即可获得实验所需的单脉冲,而S3,S2,S1,S0,Cn,LDDR1,LDDR2,ALU-B,SW-B各电平控制信号用SWITCH UNIT中的二进制数据开关来模拟,其中Cn,ALU-B,SW-B为低电平控制有效,LDDR1,LDDR2为高电平有效。 3.主要仪器设备(实验用的软硬件环境) ZYE1603B计算机组成原理教学实验系统一台,排线若干。 4.操作方法与实验步骤

计算机组成原理知识点总结——详细版

计算机组成原理2009年12月期末考试复习大纲 第一章 1.计算机软件的分类。 P11 计算机软件一般分为两大类:一类叫系统程序,一类叫应用程序。 2.源程序转换到目标程序的方法。 P12 源程序是用算法语言编写的程序。 目标程序(目的程序)是用机器语言书写的程序。 源程序转换到目标程序的方法一种是通过编译程序把源程序翻译成目的程序,另一种是通过解释程序解释执行。 3.怎样理解软件和硬件的逻辑等价性。 P14 因为任何操作可以有软件来实现,也可以由硬件来实现;任何指令的执行可以由硬件完成,也可以由软件来完成。对于某一机器功能采用硬件方案还是软件方案,取决于器件价格,速度,可靠性,存储容量等因素。因此,软件和硬件之间具有逻辑等价性。 第二章 1.定点数和浮点数的表示方法。 P16 定点数通常为纯小数或纯整数。 X=XnXn-1…..X1X0 Xn为符号位,0表示正数,1表示负数。其余位数代表它的量值。 纯小数表示范围0≤|X|≤1-2-n 纯整数表示范围0≤|X|≤2n -1

浮点数:一个十进制浮点数N=10E.M。一个任意进制浮点数N=R E.M 其中M称为浮点数的尾数,是一个纯小数。E称为浮点数的指数,是一个整数。 比例因子的基数R=2对二进制计数的机器是一个常数。 做题时请注意题目的要求是否是采用IEEE754标准来表示的浮点数。 32位浮点数S(31)E(30-23)M(22-0) 64位浮点数S(63)E(62-52)M(51-0) S是浮点数的符号位0正1负。E是阶码,采用移码方法来表示正负指数。 M为尾数。P18 P18

2.数据的原码、反码和补码之间的转换。数据零的三种机器码的表示方法。 P21 一个正整数,当用原码、反码、补码表示时,符号位都固定为0,用二进制表示的数位值都相同,既三种表示方法完全一样。 一个负整数,当用原码、反码、补码表示时,符号位都固定为1,用二进制表示的数位值都不相同,表示方法。 1.原码符号位为1不变,整数的每一位二进制数位求反得到反码; 2.反码符号位为1不变,反码数值位最低位加1,得到补码。 例:x= (+122)10=(+1111010)2原码、反码、补码均为01111010 Y=(-122)10=(-1111010)2原码11111010、反码10000101、补码10000110 +0 原码00000000、反码00000000、补码00000000 -0 原码10000000、反码11111111、补码10000000 3.定点数和浮点数的加、减法运算:公式的运用、溢出的判断。 P63 已知x和y,用变形补码计算x+y,同时指出结果是否溢出。 (1)x=11011 y=00011 (2)x=11011 y=-10101 (3)x=-10110 y=-00001

计算机组成原理第四章作业答案

第四章作业答案 解释概念:主存、辅存,Cache, RAM, SRAM, DRAM, ROM, PROM ,EPROM ,EEPROM CDROM, Flash Memory. 解:1主存:主存又称为内存,直接与CPU交换信息。 2辅存:辅存可作为主存的后备存储器,不直接与CPU交换信息,容量比主存大,速度比主存慢。 3 Cache: Cache缓存是为了解决主存和CPU的速度匹配、提高访存速度的一种存储器。它设在主存和CPU之间,速度比主存快,容量比主存小,存放CPU最近期要用的信息。 4 RAM; RAM是随机存取存储器,在程序的执行过程中既可读出信息又可写入信息。 5 SRAM: 是静态RAM,属于随机存取存储器,在程序的执行过程中既可读出信息又可写入信息。靠触发器原理存储信息,只要不掉电,信息就不会丢失。 6 DRAM 是动态RAM,属于随机存取存储器,在程序的执行过程中既可读出信息又可写入信息。靠电容存储电荷原理存储信息,即使电源不掉电,由于电容要放电,信息就会丢失,故需再生。 7 ROM: 是只读存储器,在程序执行过程中只能读出信息,不能写入信息。 8 PROM: 是可一次性编程的只读存储器。 9 EPROM 是可擦洗的只读存储器,可多次编程。 10 EEPROM: 即电可改写型只读存储器,可多次编程。 11 CDROM 即只读型光盘存储器。 12 Flash Memory 即可擦写、非易失性的存储器。 存储器的层次结构主要体现在什么地方?为什么要分这些层次?计算机如何管理这些层次? 答:存储器的层次结构主要体现在Cache—主存和主存—辅存这两个存储层次上。 Cache—主存层次在存储系统中主要对CPU访存起加速作用,即从整体运行的效果分析,CPU访存速度加快,接近于Cache的速度,而寻址空间和位价却接近于主存。 主存—辅存层次在存储系统中主要起扩容作用,即从程序员的角度看,他所使用的存储器其容量和位价接近于辅存,而速度接近于主存。 综合上述两个存储层次的作用,从整个存储系统来看,就达到了速度快、容量大、位价低的优化效果。 主存与Cache之间的信息调度功能全部由硬件自动完成。而主存—辅存层次的调度目前广泛采用虚拟存储技术实现,即将主存与辅存的一部份通过软硬结合的技术组成虚拟存储器,程序员可使用这个比主存实际空间(物理地址空间)大得多的虚拟地址空间(逻辑地址空间)编程,当程序运行时,再由软、硬件自动配合完成虚拟地址空间与主存实际物理空间的转换。因此,这两个层次上的调度或转换操作对于程序员来说都是透明的。

(整理)微型计算机原理与接口技术

4.9练习题 10、写一个宏定义,要求能把任意一个寄存器的最低位移至另一个存储器的最高位中。 DATA SEGMENT VAR1 DB 4,6 VAR2 DD 200 DUP(?) DATA ENDS STACKS SEGMENT STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATA,SS:STACKS START: MOV AX,DATA MOV DS,AX XTY MACRO X,Y MOV AX,X AND AX,1 ROR AX,1 MOV Y,AX ENDM MOV DX,1 MOV AX,0 XTY DX,AX, MOV AH,4CH INT 21H CODES ENDS END START 11、利用DOS功能调用从键盘输入60个字符到缓冲区BUF中,在按下ENTER键后在屏幕上显示这些字符。请写出程序段。 DATA SEGMENT ST1 DB 'Please input 60 characters from keyboard.',0DH,0AH,'$' BUF DB 61 DUP(?) DATA ENDS COD SEGMENT ASSUME CS:COD,DS:DATA START: MOV AX,DATA MOV DS,AX MOV DL,07H MOV AH,2 INT 21H MOV DX,OFFSET ST1 MOV AH,9 INT 21H LEA SI, BUF MOV CX,60 LP: MOV AH,7 INT 21H MOV [SI],AL CMP AL,0DH JZ EXIT INC SI LOOP LP EXIT: MOV BX,60 SUB BX,CX MOV CX,BX LEA SI, BUF LP2: MOV DL,[SI] MOV AH,6 INT 21H INC SI LOOP LP2 MOV AH,4CH INT 21H COD ENDS END START

(完整版)计算机组成原理知识点总结

第2章数据的表示和运算 主要内容: (一)数据信息的表示 1.数据的表示 2.真值和机器数 (二)定点数的表示和运算 1.定点数的表示:无符号数的表示;有符号数的表示。 2.定点数的运算:定点数的位移运算;原码定点数的加/减运算;补码定点数的加/减运算;定点数的乘/除运算;溢出概念和判别方法。 (三)浮点数的表示和运算 1.浮点数的表示:浮点数的表示范围;IEEE754标准 2.浮点数的加/减运算 (四)算术逻辑单元ALU 1.串行加法器和并行加法器 2.算术逻辑单元ALU的功能和机构 2.3 浮点数的表示和运算 2.3.1 浮点数的表示 (1)浮点数的表示范围 ?浮点数是指小数点位置可浮动的数据,通常以下式表示: N=M·RE 其中,N为浮点数,M为尾数,E为阶码,R称为“阶的基数(底)”,而且R

为一常数,一般为2、8或16。在一台计算机中,所有数据的R都是相同的,于是不需要在每个数据中表示出来。 浮点数的机内表示 浮点数真值:N=M ×2E 浮点数的一般机器格式: 数符阶符阶码值 . 尾数值 1位1位n位m位 ?Ms是尾数的符号位,设置在最高位上。 ?E为阶码,有n+1位,一般为整数,其中有一位符号位EJ,设置在E的最高位上,用来表示正阶或负阶。 ?M为尾数,有m位,为一个定点小数。Ms=0,表示正号,Ms=1,表示负。 ?为了保证数据精度,尾数通常用规格化形式表示:当R=2,且尾数值不为0时,其绝对值大于或等于0.5。对非规格化浮点数,通过将尾数左移或右移,并修改阶码值使之满足规格化要求。 浮点数的机内表示 阶码通常为定点整数,补码或移码表示。其位数决定数值范围。阶符表示数的大小。 尾数通常为定点小数,原码或补码表示。其位数决定数的精度。数符表示数的正负。

计算机组成原理考研知识点汇总

计算机组成原理考研知 识点汇总 一, 计算机系统概述 (一) 计算机发展历程 第一台电子计算机ENIAC诞生于1946年美国宾夕法尼亚大学.ENIAC用了18000电子管,1500继电器,重30吨,占地170m2,耗电140kw,每秒计算5000次加法.冯?诺依曼(VanNeumann)首次提出存储程序概念,将数据和程序一起放在存储器,使编程更加方便.50年来,虽然对冯?诺依曼机进行很多改革,但结构变化不大,仍称冯?诺依曼机. 发展阶段时间硬件技术速度/(次/秒) 第一代1946-1957 电子管计算机时代40 000 第二代1958-1964 晶体管计算机时代200 000 第三代1965-1971 中小规模集成电路计算机时代 1 000 000 第四代1972-1977 大规模集成电路计算机时代10 000 000 第五代1978-现在超大规模集成电路计算机时代100 000 000 EDVAC(Electronic Discrete Variable Automatic Computer)电子离散变量计算机 组成原理是讲硬件结构的系统结构是讲结构设计的 摩尔定律微芯片上的集成管数目每3年翻两番.处理器的处理速度每18个月增长一倍. 每代芯片的成本大约为前一代芯片成本的两倍 新摩尔定律全球入网量每6个月翻一番. 数学家冯·诺依曼(von Neumann)在研究EDVAC机时提出了“储存程序”的概念.以此为基础的各类计算机通称为冯·诺依曼机.它有如下特点: ①计算机由运算器,控制器,存储器,输入和输出五部分组成 ②指令和数据以同等的地位存放于存储器内,并可按地址寻访 ③指令和数据均用二进制数表示 ④指令由操作码和地址码组成,操作码用来表示操作的性质,地址码用来表示操作数在存储器中的位置 ⑤指令在存储器内按顺序存放 ⑥机器以运算器为中心,输入输出设备与存储器间的数据传送通过运算器完成 图中各部件的功能 ·运算器用来完成算术运算和逻辑运算并将的中间结 果暂存在运算器内 ·存储器用来存放数据和程序 ·控制器用来控制,指挥程序和数据的输入,运行以及 处理运行结果 ·输入设备用来将人们熟悉的信息转换为机器识别的 信息 ·输出设备将机器运算结果转为人熟悉的信息形式

微机原理知识点总结

第一章概述 1.IP核分为3类,软核、硬核、固核。特点对比 p12 第二章计算机系统的结构组成与工作原理 1. 计算机体系结构、计算机组成、计算机实现的概念与区别。P31 2. 冯·诺依曼体系结构: p32 硬件组成五大部分 运算器、存储器、控制器、输入设备、输出设备,以存储器为中心 信息表示:二进制计算机内部的控制信息和数据信息均采用二进制表示,并存放在同一个存储器中。 工作原理:存储程序/指令(控制)驱动编制好的程序(包括指令和数据)预先经由输入设备输入并保存在存储器中 3.接口电路的意义 p34 第二段 接口一方面应该负责接收、转换、解释并执行总线主设备发来的命令,另一方面应能将总线从设备的状态或数据传送给总线主设备,从而完成数据交换。 4.CPU组成:运算器、控制器、寄存器。P34 运算器的组成:算术逻辑单元、累加器、标志寄存器、暂存器 5.寄存器阵列p35 程序计数器PC,也称为指令指针寄存器。存放下一条要执行指令的存放地址。 堆栈的操作原理应用场合:中断处理和子程序调用 p35最后一段 6. 计算机的本质就是执行程序的过程p36 7. 汇编语言源程序——汇编——>机器语言程序 p36 8. 指令包含操作码、操作数两部分。执行指令基本过程:取指令、分析指令、执行指令。简答题(简述各部分流程)p37 9. 数字硬件逻辑角度,CPU分为控制器与数据通路。P38 数据通路又包括寄存器阵列、ALU、片上总线。 10. 冯·诺依曼计算机的串行特点p38 串行性是冯·诺依曼计算机的本质特点。表现在指令执行的串行性和存储器读取的串行性。也是性能瓶颈的主要原因。 单指令单数据 11. CISC与RISC的概念、原则、特点。对比着看 p39、40

计算机组成原理第四章存储系统(一)(含答案)

第四章、存储系统(一) 4.1 存储系统层次结构随堂测验 1、哈弗结构(Harvard Architecture)是指()(单选) A、数据和指令分别存放 B、数据和指令统一存放 C、指令和数据分时存放 D、指令和数据串行存放 2、如果一个被访问的存储单元,很快会再次被访问,这种局部性是()(单选) A、时间局部性 B、空间局部性 C、数据局部性 D、程序局部性 3、下列关于存储系统层次结构的描述中正确的是()(多选) A、存储系统层次结构由Cache 、主存、辅助存储器三级体系构成 B、存储系统层次结构缓解了主存容量不足和速度不快的问题 C、构建存储系统层次结构的的原理是局部性原理 D、构建存储系统层次结构还有利于降低存储系统的价格 4、下列属于加剧CPU和主存之间速度差异的原因的是()(多选) A、由于技术与工作原理不同,CPU增速度明显高于主存增速率 B、指令执行过程中CPU需要多次访问主存 C、辅存容量不断增加 D、辅存速度太慢 5、下列关于局部性的描述中正确的是()(多选) A、局部性包括时间局部行和空间局部性 B、局部性是保证存储系统层次结构高效的基础 C、顺序程序结构具有空间局部性 D、循环程序结构具有时间局部性 4.2 主存中的数据组织随堂测验 1、设存储字长为64位,对short 变量长度为16位,数据存储按整数边界对齐,关于short 变量j 在主存中地址的下列描述中正确的是()(此题为多选题) A、j的物理地址mod 8 = 0 B、j的物理地址mod 8 = 1 C、j的物理地址mod 8 = 2 D、j的物理地址mod 8 = 3

2、设存储字长为64位,对char 变量长度为8位,数据存储按整数边界对齐,关于char 变量j 在主存中地址的下列描述中正确的是()(此题为多选题) A、j的物理地址mod 8 = 0 B、j的物理地址mod 8 = 1 C、j的物理地址mod 8 = 2 D、j的物理地址mod 8 = 3 3、下列关于大端与小端模式的描述中,正确的是()(此题为多选题) A、大端模式(Big-endian)是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中 B、小端模式(Little-endian)是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中 C、0x12345678 按大端模式存放时,其所在存储单元最低字节单元存放的数据是0x12 D、0x12345678 按小端模式存放时,其所在存储单元最高字节单元存放的数据是0x12 4、下列关于存储字长的描述中正确的是()(此题为多选题) A、主存一个单元能存储的二进制位数的最大值 B、存储字长与所存放的数据类型有关 C、存储字长等于存储在主存中数据类型包含的二进制位数 D、存储字长一般应是字节的整数倍 5、某计算机按字节编址,数据按整数边界存放,可通过设置使其采用小端方式或大端方式,有一个float 型变量的地址为FFFF C000H ,数据X = 12345678H,无论采用大端还是小段方式,在内存单元FFFF C001H,一定不会存放的数是()(此题为多选题) A、12H B、34H C、56H D、78H 4.3 静态存储器工作原理随堂测验 1、某计算机字长16位,其存储器容量为64KB,按字编址时,其寻址范围是()(单选) A、64K B、32KB C、32K D、64KB 2、一个16K*32位的SRAM存储芯片,其数据线和地址线之和为()(单选) A、48 B、46 C、36 D、39

计算机组成原理实验

实验一基础汇编语言程序设计 一、实验目的: 1、学习和了解TEC-XP16教学实验系统监控命令的用法。 2、学习和了解TEC-XP16教学实验系统的指令系统。 3、学习简单的TEC-XP16教学实验系统汇编程序设计。 二、预习要求: 1、学习TEC-XP16机监控命令的用法。 2、学习TEC-XP16机的指令系统、汇编程序设计及监控程序中子程序调用。 3、学习TEC-XP16机的使用,包括开关、指示灯、按键等。 4、了解实验内容、实验步骤和要求。 三、实验步骤: 在教学计算机硬件系统上建立与调试汇编程序有几种操作办法。 第一种办法,是使用监控程序的A命令,逐行输入并直接汇编单条的汇编语句,之后使用G命令运行这个程序。缺点是不支持汇编伪指令,修改已有程序源代码相对麻烦一些,适用于建立与运行短小的汇编程序。 第二种办法,是使用增强型的监控程序中的W命令建立完整的汇编程序,然后用M命令对建立起来的汇编程序执行汇编操作,接下来用G命令运行这个程序。适用于比较短小的程序。此时可以支持汇编伪指令,修改已经在内存中的汇编程序源代码的操作更方便一些。 第三种办法,是使用交叉汇编程序ASEC,首先在PC机上,用PC机的编辑程序建立完整的汇编程序,然后用ASEC对建立起来的汇编程序执行汇编操作,接下来把汇编操作产生的二进制的机器指令代码文件内容传送到教学机的内存中,就可以运行这个程序了。适用于规模任意大小的程序。

在这里我们只采用第一种方法。 在TEC-XP16机终端上调试汇编程序要经过以下几步: 1、使教学计算机处于正常运行状态(具体步骤见附录联机通讯指南)。 2、使用监控命令输入程序并调试。 ⑴用监控命令A输入汇编程序 >A 或>A 主存地址 如:在命令行提示符状态下输入: A 2000↙;表示该程序从2000H(内存RAM区的起始地址)地址开始 屏幕将显示: 2000: 输入如下形式的程序: 2000: MVRD R0,AAAA ;MVRD 与R0 之间有且只有一个空格,其他指令相同 2002: MVRD R1,5555 2004: ADD R0,R1 2005: AND R0,R1 2006: RET ;程序的最后一个语句,必须为RET 指令 2007:(直接敲回车键,结束A 命令输入程序的操作过程) 若输入有误,系统会给出提示并显示出错地址,用户只需在该地址重新输入正确的指令即可。 ⑵用监控命令U调出输入过的程序并显示在屏幕上 >U 或>U 主存地址

微型计算机原理与接口技术_(张荣标_著)_机械工业出版社_课后答案

第一章 1.选择题 (1)C (2) D A (3) C 3填空 (1)CPU,微型计算机,系统软件,外围设备,微型计算机系统 (2)10,3,12 (3)阶数 (4)10010010B,01000100B,11010110B,FF4EH (5)3F7H,1C3H,243H,277H, 4简答题 (1)微处理器,微型计算机和微型计算机系统三者有何联系与区别? 微处理器是把原来的中央处理单元CPU的复杂电路(包括运算器和控制器)做在一片或几片大规模集成电路的芯片上。把这种微缩的CPU大规模集成电路称为微处理器。 微型计算机是以微处理器为核心,再配备上用大规模集成电路工艺制成的存储器和I/O接口就构成了微型计算机。 以微计算机为核心,再配备上系统软件、I/O设备、辅助电路和电源就构成了微机系统。微型计算机系统包括硬件和软件了两大部分。 (2)试述在计算机中常采用二进制的缘由? (3)简述如何从补码判断真值的符号? (4)BCD码与纯二进制数有何区别? 主要区别是二者对应的二进制位所表示的二进制真值不同, (5)试述机器数的定点和浮点数表示形式。 第2章 2填空题 (1)递增,A7,A5,A3,A1. (2)地址总线的宽度,00000H~0FFFFFH (3)寄存器,运算器,控制器;运算和控制 (4)SS,SP (5)MN/MX (6)主频,总线宽度 (7)20,16 3简答题 (1)什么是指令周期?什么是总线周期?一个总线周期至少包括几个时钟周期?指令周期是一条指令执行所需的时钟周期,cpu在执行指令过程中,凡需执行访问存储器或访问I/O端口的操作都统一交给BIU的外部总线完成,进行一次访问所需的时间称为一个总线周期。一般一个基本的总线周期由4个时钟周期组成。 (2)8086CPU在最小模式下构成计算机系统至少应该包括哪几个基本的部分?(3)8086CPU中,标志寄存器包含哪些标志位?各标志位为‘0’,‘1’分别表示什么含义? (4)8086CPU中有哪些通用寄存器和专用寄存器?说明他们的作用。 (5)在8086CPU中,已知CS寄存器和IP寄存器的内容分别如下所示,请确定其物

计算机组成原理知识点(word文档物超所值)

1.各种进制之间的转换 2.冯诺依曼机器特点,基本思想P8 1)计算机由五大部件组成:运算器,存储器,控制器,输入设备,输出设备 2)指令和数据以同等地位存于存储器,可按地址寻访 3)指令和数据用二进制表示 4)指令由操作码和地址码组成 5)指令在存储器内顺序存放 6)以运算器为中心 3.总线分类P43 总线是连接各个部件的信息传输线,是各个部件共享的传输介质。 1)片内总线:芯片内部的总线(CPU内部,寄存器与寄存器之间,寄存器与逻辑单元) 2)系统总线(CPU、主存I/O设备等各大部件间信息传输线) A.数据总线双向数据信息传输,与机器字长,存储字长有关 B.地址总线单向由CPU输出 C.控制总线双向发出各种控制信号 3)通信总线 A.串行数据在单条1位宽的传输线上,适用于远距离 B.并行数据在多条1位宽的传输线上,适用于近距离 4.总线带宽,宽度P46 ◆带宽:总线的数据传输速率,通常用每秒传输的字节数来衡量,单位MBps (即为:频率*字节数) ◆宽度:数据总线的根数 5.总线的判优控制方式P57 ◆主设备(模块) 对总线有控制权 ◆从设备(模块) 响应从主设备发来的总线命令 ◆总线判优控制 A.集中式:将逻辑集中在一处(1.链式查询2.计数式定时查询3.独立请求方式) B.分布式:将逻辑分散在各个部件中 6.总线通信控制P59 ◆四种方式 A.同步通信:通信双方统一时标控制数据传送 B.异步通信:采用应答方式,没有公共时钟标准 C.半同步通信:同步异步结合 D.分离式通信:各模块有权申请占用总线;采用同步方式通信,不等对方回答;各 模块准备数据时,不占用总线;总线被占用时,无空闲; 7.总线接口的功能 使外部设备或用户电路与微型计算机成为一体,控制数据缓存状态设置,数据转换整理程序中断 8.存取周期=存取时间+恢复时间 9.存储器分类及其特点P69 ◆按存储介质分类 1)半导体存储器 2)磁表面存储器 3)磁芯存储器

计算机组成原理实验完整版

河南农业大学 计算机组成原理实验报告 题目简单机模型实验 学院信息与管理科学学院 专业班级计算机科学与技术2010级1班 学生姓名张子坡(1010101029) 指导教师郭玉峰 撰写日期:二○一二年六月五日

一、实验目的: 1.在掌握各部件的功能基础上,组成一个简单的计算机系统模型机; 2.了解微程序控制器是如何控制模型机运行的,掌握整机动态工作过程; 3定义五条机器指令,编写相应微程序并具体上机调试。 二、实验要求: 1.复习计算机组成的基本原理; 2.预习本实验的相关知识和内容 三、实验设备: EL-JY-II型计算机组成原理试验系统一套,排线若干。 四、模型机结构及工作原理: 模型机结构框图见实验书56页图6-1. 输出设备由底板上上的四个LED数码管及其译码、驱动电路构成,当D-G和W/R均为低电平时将数据结构的数据送入数据管显示注:本系统的数据总线为16位,指令、地址和程序计数器均为8位。当数据总线上的数据打入指令寄存器、地址寄存器和程序寄存器时,只有低8位有效。 在本实验我们学习读、写机器指令和运行机器指令的完整过程。在机器指令的执行过程中,CPU从内存中取出一条机器指令到执行结束为一个指令周期,指令由微指令组成的序列来完成,一条机器指令对应一段微程序。另外,读、写机器指令分别由相应的微程序段来完成。

为了向RAM中装入程序和数据,检查写入是否正确,并能启动程序执行,必须设计三个控制操作微程序。 存储器读操作(MRD):拨动清零开关CLR对地址、指令寄存器清零后,指令译码器输入CA1、CA2为“00”时,按“单步”键,可对RAM连续读操作。 存储器写操作(MWE):拨动清零开关CLR对地址、指令寄存器清零后,指令译码器输入CA1、CA2为“10”时,按“单步”键,可对RAM连续写操作。 启动程序(RUN):拨动开关CLR对地址、指令寄存器清零后,指令译码器输入CA1、CA2为“11”时,按“单步”键,即可转入第01号“取指”微指令,启动程序运行。 注:CA1、CA2由控制总线的E4、E5给出。键盘操作方式有监控程序直接对E4、E5赋值,无需接线。开关方式时可将E4、E5接至控制开关CA1、CA2,由开关控制。 五、实验内容、分析及参考代码: 生成的下一条微地址 UA5 UA0 MS5 MS0 微地址

微型计算机原理与接口技术课后答案资料

15. 已知:在内存BUF开始的单元中,存在一串数据:58,75,36,42,89。编程找出其中的最小值存入MIN单元中,并将这个数显示在屏幕上。 解: STACK SEGMENT STACK DB 100 DUP(?) STACK ENDS DATA SEGMENT BUF DB 58H, 75H, 36H, 42H, 89H MIN DB 0 DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACK START: PUSH DS MOV AX, DATA MOV DS, AX MOV CX, 4 MOV BX, OFFSET BUF MOV AL, [BX] ST1: INC BX CMP AL, [BX] JBE NEXT MOV AL, [BX] NEXT:LOOP ST1 MOV MIN, AL AND AL, 0F0H MOV CL,4 ROR AL, CL ADD AL, 30H MOV DL, AL MOV AH, 02H INT 21H MOV AL, MIN AND AL, 0FH ADD AL, 30H MOV DL, AL MOV AH, 02H INT 21H POP DS MOV AH, 4CH INT 21H HLT CODE ENDS

END START 18. 某班有20个同学的微机原理成绩存放在LIST开始的单元中,要求编程先从高到低的次序排列好,再求出总分和平均值,分别存放在SUM和AVER开始的单元中。 解: STACK ENDS DATA SEGMENT LIST DB 65H,76H,78H,54H,90H,85H,68H,66H,77H,88H DB 99H, 89H, 79H, 69H,75H,85H,63H,73H,83H,93H SUM DW 0 AVER DB 0 BUF DB 100 DUP (?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: PUSH DS MOV AX,DATA MOV DS,AX MOV DI, OFFSET LIST MOV BX, 19 LP0: MOV SI, DI MOV CX, BX LP1: MOV AL, [SI] INC SI CMP AL, [SI] JNC LP2 MOV DL, [SI] MOV [SI-1], DL MOV [SI], AL LP2: LOOP LP1 DEC BX JNZ LP0 LP3: MOV CX, 20 MOV BX, OFFSET LIST MOV SUM, 0 XOR AX, AX LP4: ADD AL, [BX] DAA ADC AH, 0 INC BX LOOP LP4 MOV SUM, AX MOV BL, 20H DIV BL ADD AL,0

计算机组成原理知识点总结

《计算机组成原理》(白中英)复习 第一章计算机系统概论 电子数字计算机的分类(P1) 通用计算机(超级计算机、大型机、服务器、工作站、微型机和单片机)和专用计算机。计算机的性能指标(P5) 数字计算机的五大部件及各自主要功能(P6) 五大部件:存储器、运算器、控制器、输入设备、输出设备。 存储器主要功能:保存原始数据和解题步骤。 运算器主要功能:进行算术、逻辑运算。 控制器主要功能:从内存中取出解题步骤(程序)分析,执行操作。 输入设备主要功能:把人们所熟悉的某种信息形式变换为机器内部所能接收和识别的二进制信息形式。 输出设备主要功能:把计算机处理的结果变换为人或其他机器所能接收和识别的信息形式。 计算机软件(P11) 系统程序——用来管理整个计算机系统 应用程序——按任务需要编制成的各种程序 第二章运算方法和运算器 课件+作业 第三章内部存储器 存储器的分类(P65) 按存储介质分类: 易失性:半导体存储器 非易失性:磁表面存储器、磁芯存储器、光盘存储器 按存取方式分类: 存取时间与物理地址无关(随机访问): 随机存储器RAM——在程序的执行过程中可读可写 只读存储器ROM——在程序的执行过程中只读 存取时间与物理地址有关(串行访问): 顺序存取存储器磁带 直接存取存储器磁盘 按在计算机中的作用分类: 主存储器:随机存储器RAM——静态RAM、动态RAM 只读存储器ROM——MROM、PROM、EPROM、EEPROM Flash Memory 高速缓冲存储器(Cache) 辅助存储器——磁盘、磁带、光盘 存储器的分级(P66) 存储器三个主要特性的关系:速度、容量、价格/位 多级存储器体系结构:高速缓冲存储器(cache)、主存储器、外存储器。 主存储器的技术指标(P67) 存储容量:存储单元个数M×每单元位数N 存取时间:从启动读(写)操作到操作完成的时间 存取周期:两次独立的存储器操作所需间隔的最小时间,时间单位为ns。

计算机组成原理第四章作业答案(终板)学习资料

计算机组成原理第四章作业答案(终板)

第四章作业答案 4.1 解释概念:主存、辅存,Cache, RAM, SRAM, DRAM, ROM, PROM ,EPROM ,EEPROM CDROM, Flash Memory. 解:1主存:主存又称为内存,直接与CPU交换信息。 2辅存:辅存可作为主存的后备存储器,不直接与CPU交换信息,容量比主存大,速度比主存慢。 3 Cache: Cache缓存是为了解决主存和CPU的速度匹配、提高访存速度的一种存储器。它设在主存和CPU之间,速度比主存快,容量比主存小,存放CPU最近期要用的信息。 4 RAM; RAM是随机存取存储器,在程序的执行过程中既可读出信息又可 写入信息。 5 SRAM: 是静态RAM,属于随机存取存储器,在程序的执行过程中既可读出信息又可写入信息。靠触发器原理存储信息,只要不掉电,信息就不会丢失。 6 DRAM 是动态RAM,属于随机存取存储器,在程序的执行过程中既可读出信息又可写入信息。靠电容存储电荷原理存储信息,即使电源不掉电,由于电容要放电,信息就会丢失,故需再生。 7 ROM: 是只读存储器,在程序执行过程中只能读出信息,不能写入信息。 8 PROM: 是可一次性编程的只读存储器。 9 EPROM 是可擦洗的只读存储器,可多次编程。 10 EEPROM: 即电可改写型只读存储器,可多次编程。 11 CDROM 即只读型光盘存储器。 12 Flash Memory 即可擦写、非易失性的存储器。

4.3 存储器的层次结构主要体现在什么地方?为什么要分这些层次?计算机如何管理这些层次? 答:存储器的层次结构主要体现在Cache—主存和主存—辅存这两个存储层次上。 Cache—主存层次在存储系统中主要对CPU访存起加速作用,即从整体运行的效果分析,CPU访存速度加快,接近于Cache的速度,而寻址空间和位价却接近于主存。 主存—辅存层次在存储系统中主要起扩容作用,即从程序员的角度看,他所使用的存储器其容量和位价接近于辅存,而速度接近于主存。 综合上述两个存储层次的作用,从整个存储系统来看,就达到了速度快、容量大、位价低的优化效果。 主存与Cache之间的信息调度功能全部由硬件自动完成。而主存—辅存层次的调度目前广泛采用虚拟存储技术实现,即将主存与辅存的一部份通过软硬结合的技术组成虚拟存储器,程序员可使用这个比主存实际空间(物理地址空间)大得多的虚拟地址空间(逻辑地址空间)编程,当程序运行时,再由软、硬件自动配合完成虚拟地址空间与主存实际物理空间的转换。因此,这两个层次上的调度或转换操作对于程序员来说都是透明的。

《微型计算机原理与接口技术》 第三版 习题答案

《微机原理与接口技术》习题解答 习题1 冯·诺依曼型计算机的设计方案有哪些特点 【解答】冯·诺依曼型计算机的设计方案是“存储程序”和“程序控制”,有以下5方面特点:(1)用二进制数表示数据和指令; (2)指令和数据存储在内部存储器中,按顺序自动依次执行指令; (3)由运算器、控制器、存储器、输入设备和输出设备组成基本硬件系统; (4)由控制器来控制程序和数据的存取及程序的执行; (5)以运算器为核心。 微处理器和微型计算机的发展经历了哪些阶段各典型芯片具备哪些特点 【解答】经历了6代演变,各典型芯片的特点如表1-1所示。 表1-1 微处理器的发展及典型芯片的特点 微型计算机的特点和主要性能指标有那些 【解答】除具有运算速度快、计算精度高、有记忆能力和逻辑判断能力、可自动连续工作等基本特点以外,还具有功能强、可靠性高、价格低廉、结构灵活、适应性强、体积小、重量轻、功耗低、使用和维护方便等。 微型计算机的性能指标与系统结构、指令系统、硬件组成、外部设备以及软件配备等有关。常用的微型计算机性能指标主要有:字长、主频、内存容量、指令数、基本指令执行时间、可靠性、兼容性、性能价格比等。 常见的微型计算机硬件结构由哪些部分组成各部分的主要功能和特点是什么

【解答】微型计算机硬件一般由微处理器、内存储器、外存储器、系统总线、接口电路、输入/输出设备等部件组成。 主要组成部件的功能和特点分析如下: (1)微处理器:是微型计算机的核心部件,由运算单元ALU、控制单元、寄存器组以及总线接口部件等组成,其功能是负责统一协调、管理和控制系统中的各个部件有机地工作。 (2)内存储器:用来存放计算机工作过程中需要的操作数据和程序。可分为随机存储器RAM 和只读存储器ROM。RAM存放当前参与运行的各种程序和数据,特点是信息可读可写,存取方便,但信息断电后会丢失;ROM用于存放各种固定的程序和数据,特点是信息固定不变,关机后原存储的信息不会丢失。 (3)系统总线:是CPU与其它部件之间传送数据、地址和控制信息的公共通道。可分成数据总线DB、地址总线AB、控制总线CB。 (4)输入/输出接口电路:完成微型计算机与外部设备之间的信息交换。由寄存器组、专用存储器和控制电路等组成。 (5)主机板:由CPU插座、芯片组、内存插槽、系统BIOS、CMOS、总线扩展槽、串行/并行接口、各种跳线和一些辅助电路等硬件组成。 (6)外存储器:使用最多的是磁盘存储器(软盘、硬盘)和光盘存储器。外存储器容量大,保存的信息不会丢失。 (7)输入/输入设备:是微型计算机系统与外部进行通信联系的主要装置。常用的有键盘、鼠标、显示器、打印机和扫描仪等。 什么是微型计算机的系统总线说明数据总线、地址总线、控制总线各自的作用。 【解答】系统总线是CPU与其它部件之间传送数据、地址和控制信息的公共通道。 (1)数据总线:用来传送数据,主要实现CPU与内存储器或I/O设备之间、内存储器与I/O设备或外存储器之间的数据传送。 (2)地址总线:用来传送地址。主要实现从CPU送地址至内存储器和I/O设备,或从外存储器传送地址至内存储器等。 (3)控制总线:用于传送控制信号、时序信号和状态信息等。 什么是系统的主机板由哪些部件组成 【解答】CPU、RAM、ROM、I/O接口电路以及系统总线组成的计算机装置称为“主机”,主机的主体则是主机板。主机板上主要有CPU插座、芯片组、内存插槽、系统BIOS、CMOS、总线扩展槽、串行/并行接口、各种跳线和一些辅助电路等硬件。 计算机中有哪些常用的数制和码制如何进行数制之间的转换 【解答】数值数据经常用二进制、十进制、八进制和十六进制;字符数据使用ASCII码;表示十进制数字用BCD码。 (1)十进制到二进制:整数部分连续除以2后“倒取余”,小数部分连续乘以2后“正取整”; (2)二进制到十进制:将二进制数按权展开即可。 (3)二进制到八进制:将3位二进制一组对应1位八进制数码。 (4)八进制到二进制:将1位八进制数码对应3位二进制数码。 十六进制与二进制间转换与八进制与二进制间转换类似,只是比例关系为1位十六进制数码对应4位二进制数码。 将下列十进制数分别转化为二进制数、十六进制数和压缩BCD码。 (1)(2)(3)(4) 【解答】:

计算机组成原理知识点总结

一.计算机硬件系统组成的基本概念 1.要求考生理解计算机系统的层次结构 第一级微程序机器级(微指令系统):微指令由硬件直接执行 第二级传统机器级(机器语言):它用微程序解释机器指令系统 第三级操作系统级:用机器语言程序解释作业控制语句 第四级汇编语言机器级:用汇编程序翻译成机器语言程序 第五级高级语言机器级:用汇编程序翻译成汇编程序或直接翻译成机器语言 2.要求考生掌握计算机硬件系统的组成 1.CPU:CPU的主要功能室读取并执行指令,在执行指令过程中,它向系统中各个部件发出控制信息,收集各部件的状态信息,与各部件交换数据信息。 CPU由运算部件,寄存器组,控制器组成。 2.存储器:存储器用来存储信息,包括程序、数据、文档。 分为主存(内存)、外存、高速缓存(Cache)三级存储器。 3.输入/输出设备 4.总线:总线是一组能为多个不见分时共享的信息传送线。 系统总线可分为地址总线、数据总线、控制总线。 5.接口:为了将标准的系统总线与各具特色的I/O设备连接起来,需要在总线与I/O设备之间设置一些部件,它们具有缓冲,转换,连接等功能,这些部件称为I/O接口。 3.冯诺依曼机的要素 冯诺依曼体制的主要思想包括: 1.采用二进制代码形式表示信息(数据和指令); 2.采用存储程序的工作方式(诺依曼思想核心概念); 3.计算机硬件系统由五大部件(存储器、运算器、控制器,输入设备和输出设备)组成。 传统的诺依曼机采用串行处理的工作机制,即逐条执行指令序列。要想提高计算机的性能,其根本方向之一是采用并行处理机制。 4.存储程序的工作原理 存储程序包含三点:事先编制程序,先存储程序,自动、连续地执行程序。 1.根据求解问题事先编制程序 2.事先将程序存入计算机中 3.计算机自纵、连续地执行程序 5.要求考生了解信息的数字化表示所需的主要步骤及优点 1.在物理上容易实现信息的表示与存储 2.考干扰能力强,可靠性高 3.数值的表示范围大,表示精度高 4.可表示的信息类型极广 5.能用数字逻辑技术进行信息处理 6.要求考生了解计算机系统的主要性能指标 1.基本字长:指参加一次定点运算的操作数的位数。基本字长影响计算精度,硬件成本,甚至指令系统的功能。

计算机组成原理第四章

1.证明在全加器里,进位传递函数。 解:并行加法器中的每一个全加器都有一个从低位送来的进位和一个传送给较高位的进位。进位表达式为欲证明,也就是要证明 用卡诺图法,图4-10(a)和4-10(b)分别是两个逻辑表达式的卡诺图。两个卡诺图相同,两个逻辑表达式就相等,则进位传递函数的两种形式相等。 2.某加法器采用组内并行、组间并行的进位链,4位一组,写出进位信号C6的逻辑表达式。 3.设计一个9位先行进位加法器,每3位为一组,采用两级先行进位线路。 4.已知X 和Y ,试用它们的变形补码计算出X + Y ,并指出结果是否溢出。 (1) X =0.11011,Y =0.11111 (2) X =0.11011,Y =-0.10101 (3) X =-0.10110,Y =-0.00001(4) X =-0.11011,Y =0.11110

5.已知X 和Y ,试用它们的变形补码计算出X - Y ,并指出结果是否溢出。 (1) X =0.11011,Y =-0.11111 (2) X =0.10111,Y =0.11011 (3) X =0.11011,Y =-0.10011 (4) X =-0.10110,Y =-0.00001 7.设下列数据长8位,包括1位符号位,采用补码表示,分别写出每个数据右移或左移2位之后的结果。 (1)0.1100100 (2)1.0011001 (3)1.1100110 (4)1.0000111 8.分别用原码乘法和补码乘法计算X × Y 。 (1) X =0.11011,Y =-0.11111 (2) X =-0.11010,Y =-0.01110 (2) X × Y =0.0101101100,过程略。 9.根据补码两位乘法规则推导出补码3位乘法的规则。

相关文档
最新文档