微机原理复习概要.docx
《微机原理复习概要.docx》由会员分享,可在线阅读,更多相关《微机原理复习概要.docx(15页珍藏版)》请在冰豆网上搜索。
![微机原理复习概要.docx](https://file1.bdocx.com/fileroot1/2023-1/5/5fef0027-1f7a-4a66-bca3-2cebbbb0f670/5fef0027-1f7a-4a66-bca3-2cebbbb0f6701.gif)
微机原理复习概要
微机原理
1、原码、补码表示范围
举例:
某机字长8位,采用定点表示法,可表示的纯小数或整数的表示范围是多少?
若采用浮点表示法,
阶码3位,尾数5位,表示的数值范围是多少?
定点小数:
-0.1111111~+0.1111111,即-127/128~+127/128定点整数:
-1111111.~+1111111.,即-127~+127
浮点数:
正数:
+0.0001×2-11~+0.1111×2+11即+1/128~+15/2负数:
-0.1111×2+11~-0.0001×2-11即-15/2~-1/128
定点小数的表示范围:
-.1111….1≤X≤+.1111……1
即:
-(1-2-n)≤X≤+(1-2-n)
定点整数的表示范围:
-1111….1≤X≤+1111….1
即-(2n-1)≤X≤+(2n-1)
机器字长p+m+2位,其中尾数占m+1位,阶码占p+1位
浮点数所能表示的数值范围应分成正、负数。
分别表示如下:
正数:
+2-m•2-(2p-1)≤X≤+(1-2-m)•2+(2p-1)
负数:
-(1-2-m)•2+(2p-1)≤X≤-2-m•2-(2p-1)
某机字长32位,浮点表示时,阶码占8位,尾数占24位,各包含一个符号位。
问:
(1)带符号定点小数的最大表示范围是多少?
(2)带符号定点整数的最大表示范围是多少?
(3)浮点表示时,最大的正数是多少?
(4)浮点表示时,最大的负数是多少?
(5)浮点表示时,最小的规格化正数是多少?
答案:
(1)-1~+(1-2-31)
(2)-2+31~+(2+31-1)
(3)(1-2-23)*2+127
(4)-2-23*2-128
(5)+2-1*2-128
③注意事项
浮点数基值的选择rm=2、8、16
尾数的基值,增大数的表示范围,不降低数的表示精度
浮点数的规格化
尾数≥1/rm,即尾数小数点后的第一位数是非0
2、原码表示法
将带符号数的符号位数值化(习惯上用“0”表示“+”,用“1”表示“-”),数码位保持不变,即原码表示法。
例如:
X=+0.101101Y=-0.010110
则[X]原=0.101101[Y]原=1.010110
3、补码表示法
举例:
若X=+0.10110010
根据定义:
[X]补=0.10110010
若X=-0.10110010
根据定义:
[X]补=2+(-0.10110010)
=10.00000000-0.10110010
=1.01001110
求补码的简易方法:
正数的补码同原码;
负数的补码,保持原码符号位不变(“1”),数码位各位变反,末位加1。
无论正数还是负数,都必须先求原码。
③已知[X]补,求[X]原方法
对于正数:
[X]原=[X]补
对于负数:
[X]原=[[X]补]补
例:
若[X]补=1.10110001
[X]原=1.01001111
④已知[X]补,求[-X]补的方法
将[X]补连同符号位一起,各位变反,末位加1;
例:
若[X]补=1.10110001
[-X]补=0.01001111
⑤已知[X]补,求[X/2]补、[X/4]补的方法
将[X]补连同符号位一起右移1位,左边补1位与符号位相同的数码,则得到[X/2]补;同理,若右移2位,则得到[X/4]补;
例:
若[X]补=1.01101111
[X/2]补=1.10110111
[X/4]补=1.11011011
⑥已知[X]补,求[2X]补、[4X]补的方法
将[X]补左移1位,得到[2X]补,右边补“0”;若左移2位,则得到[4X]补。
例:
若[X]补=0.00101101
[2X]补=0.01011010
[4X]补=0.10110100
4、反码表示法
求负数的反码也有简便方法:
即将原码的符号位保持不变,数码位各位变反。
举例:
若X=-0.11011001
[X]原=1.11011001
[X]反=1.00100110
5、浮点数的原码、补码和反码表示法
浮点数由两个定点数组成,阶码是定点整数,尾数是定点小数,其三种编码的具体格式以下面的例子说明。
例1:
若X=+0.11011001×2-110,该浮点数在机内采用如下格式:
X=-110,+0.11011001
[X]原=1110,0.11011001
[X]反=1001,0.11011001
[X]补=1010,0.11011001
例2:
若X=-0.10010111×2+110,该浮点数在机内采用如下格式:
X=+110,-0.10010111
[X]原=0110,1.10010111
[X]反=0110,1.01101000
[X]补=0110,1.01101001
6、常用的错误检测码有两类:
检错码和纠错码。
奇偶校验码-常用的检错码
海明码-常用的纠错码
数据校验码实现的原理就是在所传输的信息中加入一些冗余码,使合法数据编码出现某些错误时,就成为非法编码。
这样,就可以通过检测编码的合法性来达到发现错误的目的。
数据校验位的多少与码距紧密相关。
码距的概念是什么呢?
即根据任意两个合法码之间至少有几个二进制位不相同而确定的。
仅有一位不同,称其码距为1。
一般来说,码距越大,纠错能力越强,但数据冗余也越大,即编码效率低了。
所以,选择码距要取决于特定系统的参数。
数字系统的设计者必须考虑信息发生差错的概率和该系统能容许的最小差错率等因素。
利用校验码实现对数据信息的校验,目的是提高计算机的可靠性。
检错与纠错的方法很多,这里只介绍常用的三种数据校验方法:
奇偶校验、海明校验和循环冗余校验(CRC)。
奇偶校验码是一种开销最小,能发现数据代码中一位出错情况的编码,常用于存储器读写检查,或ASCII字符传送过程中的检查。
它的实现原理是使码距由1增加到2。
构成规则:
奇偶校验通常用来检验单个字符的错误。
即发送端在每个字符的最高位之后附加一位奇偶校验位。
这个校验位可为“1”或“0”,以保证整个字符中“1”的个数是奇数(称奇校验)或偶数(称偶校验)。
奇偶校验只能发现一位错或奇数个位错,但不能确定是那一位错,也不能发现偶数个错,更无法识别错误信息的位置。
考虑到一位出错的几率比多位出错的几率高得多,该方案还是有很好的使用价值。
纠错码(码距为3)
大、中型计算机在存储器校验时,主要采用海明校验。
海明校验是由R.Hamming于1950年提出的,是目前仍广泛被采用的一种很有效的校验方法。
海明校验实现原理
海明校验码以奇偶校验为基础,但校验位不是一位,而是多位。
它实质上就是一种多重奇偶校验码。
它的实现原理是:
在数据中加入几个校验位,并把数据的每一个二进制位分配在几个奇偶校验组中,当某一位出错后,就会引起有关的几个校验组的值发生变化,这不但可以发现出错,还能指出是哪一位出错,为自动纠错提供了依据。
7、补码加减法运算方法
对于补码加减法运算需要证明如下公式:
[X+Y]补=[X]补+[Y]补
[X-Y]补=[X]补+[-Y]补
例1:
已知:
X=-0.0625,Y=-0.75。
求:
X+Y,X-Y
解:
X=-0.0001Y=-0.1100
[X]原=1.0001[Y]原=1.1100
[X]补=1.1111[Y]补=1.0100
[-Y]补=0.1100
[X]补=1.1111[X]补=1.1111
+[Y]补=1.0100+[-Y]补=0.1100
---------------------------------------------
[X+Y]补=1.0011[X-Y]补=0.1011
[X+Y]原=1.1101[X-Y]原=0.1011
X+Y=-0.1101X-Y=+0.1011
=-0.8125=+0.6875
例2:
已知:
X=-20,Y=+9。
求:
X+Y,X-Y
解:
X=-10100Y=+01001
[X]原=110100[Y]原=001001
[X]补=101100[Y]补=001001
[-Y]补=110111
[X]补=101100[X]补=101100
+[Y]补=001001+[-Y]补=110111
---------------------------------------------
[X+Y]补=110101[X-Y]补=100011
[X+Y]原=101011[X-Y]原=111101
X+Y=-01011X-Y=-11101
=-11=-29
结论:
补码运算能将减法变为加法,是的运算器中只需一个加法器;
补码加减法运算时,符号位与数码位一样参加运算,能自然得到结果的正确符号;
补码小数的加减法运算以“2”为模,补码整数运算以“2n+1”为模,即符号位向更高位的进位自然丢失,不影响运算结果的正确性。
2、定点加减法运算中的溢出问题
“运算溢出”是指运算结果大于机器所能表示的最大正数或小于所能表示的最小负数。
“运算溢出”只对带符号数的运算有效。
下面举例说明什么情况下会产生溢出。
[X]补=0.1010[X]补=1.0001
+[Y]补=0.1001+[Y]补=1.0111
---------------------------------------------
[X+Y]补=1.0011[X+Y]补=0.1000
从上述例子可以看出,两个正数相加,结果为负数;而两个负数相加,结果为正数,显然是错误的,其原因是由于运算产生了溢出;除此之外,正数减负数或负数减正数,也可能产生运算溢出。
溢出是一种错误,计算机在运算过程中必须能发现这种错误,并进行必要的处理,否则将产生严重的后果。
常用的判溢出的方法有以下两种:
采用变形补码判溢出;利用符号位进位信号判溢出。
①采用变形补码判溢出
“变形补码”是采用2个符号位的补码,记作[X]’补。
上面的两个例子,若采用变形补码运算,结果为:
例1:
[X]’补=00.1010例2:
[X]’补=11.0001
+[Y]’补=00.1001+[Y]’补=11.0111
-----------------------------------------------
[X+Y]’补=01.0011[X+Y]’补=10.1000
例1中,运算结果的两位符号位为“01”,表示产生了正溢出。
例2中,运算结果的两位符号位为“10”,表示产生了负溢出。
不溢出时,两个符号位应相同,为“00”或“11”。
一、已知X=-0.1000101×2-111
Y=+0.0001010×2-100
(1)用补码运算求X+Y=?
,并判断是否有溢出。
(2)用补码运算求X+Y=?
,并判断是否有溢出。
解:
(1)对阶
X=-0.0001000×2-100
(2)运算
[X]补=11100,11.1111000[X]补=11100,11.1111000
+[Y]补=11100,00.0001010+[-Y]补=11100,11.1110110
------------------------------------------------------------------------------------
[X+Y]补=11100,00.0000010[X-Y]补=11100,11.1101110
(3)结果规格化
[X+Y]补=11100,00.0000010=10111,00.1000000溢出
[X-Y]补=11100,11.1101110=11010,11.0111000
X-Y=-0.1001000×2-110
、已知X=-7.25,Y=+28.5625
(1)将X和Y分辨转换成二进制浮点数(阶码4位,尾数10位,各包含一个符号位;
(2)用变形补码求X-Y=?
解:
X=-111.01=-0.11101×2+011
Y=+11100.1001=+0.111001001×2+101
[X]原=00011,11.111010000[Y]原=00101,00.111001001
[X]补=00011,11.000110000[Y]补=00101,00.111001001
[-Y]补=00101,11.000110111
(1)对阶
[X]补=00101,11.110001100
[-Y]补=00101,11.000110111
(2)尾数运算
11.110001100
+11.000110111
--------------------------
10.111000011
(3)结果规格化
[X-Y]补=00110,11.0111000011
[X-Y]原=00110,11.1000111101
X-Y=-0.1000111101×2+110
结论:
采用变形补码进行加减运算时,运算结果的两位符号位应相同;若两个符号位为“00”,表示结果是一个正数,反之,若为“11”,表示结果是负数;
若两个符号位不同,则表示运算产生了溢出,且左边一位表示结果的正确符号,即若结果的两位符号位为“01”,表示结果的正确符号应为正,即产生了正溢出。
否则若结果的两位符号位为“10”,表示结果的正确符号应为负,即产生了负溢出;
这种方法简单,容易实现,只要在两个符号位上增设一个半加器即可,但运算器要增加一位字长,或要降低一位运算精度。
3、计算机中的逻辑运算
1、逻辑非2、逻辑与3、逻辑或4、逻辑异或
4、计算机系统层次结构
5、存储系统
计算机中由存放程序和数据的各种存储设备、控制部件和管理信息调度的设备(硬件)和算法(软件)所组成的系统。
(1)基本概念
存储器是计算机系统的重要组成部分。
存储器有主存储器与辅助存储器之分。
主存储器,又称内存储器,即内存,用来存放程序和数据。
CPU在工作过程中,要频繁地与主存储器交换信息,因此主存储器的性能在很大程度上影响整个计算机系统的性能。
目前,广泛采用的主存储器是按地址访问的,即一维线性存储器。
它由许多存储元构成。
存储元是存储器的最小单位,一个存储元可存放一位二进制信息,若干存储元构成一个存储字。
通常存储字与机器字长相同。
(2)主存储器的主要技术指标
(1)存储容量
(2)存取速度
(3)存储器的分类
可根据存储器的不同特性,对存储器进行分类:
根据使用的存储元:
半导体存储器和磁性存储器;
根据存储器的读写方式:
RAM和ROM;
根据对存储器的访问方式:
按地址访问存储器和按内容访问存储器;
根据信息的可保存性:
永久性存储器,非永久性存储器;
根据读出方式:
破坏性读出存储器和非破坏性读出存储器;
根据存取方式:
随机存储器,顺序存储器和半顺序存储器。
(4)提高主存储器性能的措施
由于CPU工作过程中要频繁地与主存储器交换信息,因此主存的访问速度成为计算机系统速度的“瓶颈”,因此如何加快主存储器的速度是计算机设计者追求的目标。
在各种计算机系统中,为加快主存储器速度,大都采取以下几种措施:
①采用高速器件以尽可能缩短存储器的访问周期TM。
②加长存储器的字长。
③采用并行主存系统以提高存储器的等效速度。
④在CPU与主存储器间增设一级高速缓冲存储器。
6、三级存储层次结构
在三级存储层次中,高速缓冲存储器的访问速度可与CPU相匹配,但是其容量比主存储器更小,任何时候Cache中的信息是主存储器中一部分信息的副本。
当CPU需要访问主存储器时,根据给定的主存储器地址迅速判定该地址中的信息是否已进入Cache中,如果已进入Cache中,则经地址变换后立即访问Cache,如果Cache不命中,则直接访问主存储器,显然,Cache命中率越高越好。
为提高访问Cache的速度,需要在Cache与主存储器之间设置一块辅助硬件,由它来完成主存与Cache之间的地址变换功能,而暂时不执行的程序或暂时不用的数据则存放在辅助存储器,需要时,将程序和数据以信息块为单位从辅助存储器中调入主存储器,这样就构成了“Cache—主存—辅存”三级存储层次。
在理想情况下,访问主存储器的速度决定于Cache,而其容量成本则决定于辅存,它能更好地满足“高速度、大容量、低成本”三方面的要求。
一般来说,存储器速度很高,存储容量就不可能很大,成本也不会很低;若存储容量很大,存取速度就不可能很高,成本也不可能很低。
7、三种Cache替换算法
(1)随机算法;
(2)先进先出算法-FIFO;(3)近期最少使用算法-LRU(LeastRecentlyUsed)(可用堆栈实现,所以又被称为堆栈型算法)
8、局部性原理:
也就是说,通常情况下程序的90%执行时间花费在执行10%的代码上。
程序执行过程中满足时间局部性和空间局部性,所以存储系统分层结构高性能的依据就是程序的局部性原理,程序倾向于访问它刚刚访问过的的指令和数据。
9、地址线是多少K化成2的多少次方,即为地址线;数据线是多少位就为多少条。
11、赫夫曼压缩:
在概率密度分布不均匀的代码系统中,若对出现概率高的事件用较短的代码来表示,而对出现概率低的事件则用较长的代码来表示,那么代码的平均长度可有效缩短,这就是Huffman压缩法的基本结论。
12、扩展操作码法
扩展操作码法是一种比较简单的操作码优化方式。
常用的有等长扩展和不等长扩展两种方法。
等长扩展法
每次扩展同样位数的操作码,如4-8-12位扩展,3-6-9位扩展等
不等长扩展法
每次扩展不同位数的操作码,如4-6-10位扩展,4-8-10位扩展等
具体机器中采用那种方法,取决于指令系统中所包含的各类指令的数量。
例题:
某机字长16位的指令系统中,使用频度最高的指令少于15条,使用频度低的指令只有15条,使用频度最低的指令也不多,则可以采用4-8-12位等长扩展实现15/15/16条指令的扩展方案。
若该指令系统中使用频度高的指令不超过8条,则可采用4-6-10的不等长扩展法,实现8/31/16条的扩展方案:
13、寻址方式
操作数寻址方式是指根据指令中的地址码寻找操作数的实际地址的方式,也可称作“编址方式”或“变址方式”;
寻址方式有寄存器寻址,存储器寻址和立即数寻址三大类;
1、直接寻址方式
2、寄存器寻址方式
3、间接寻址方式:
(1)通过寄存器间接寻址;
(2)通过存储器的间接寻址;
4、基址寻址方式
5、变址寻址方式
6、块寻址方式
7、隐含寻址方式
8、立即寻址方式
9、相对寻址方式
14、堆栈结构及其寻址方式
堆栈是一种重要的数据结构;堆栈操作只在栈顶进行;堆栈的特点是“后进先出”;堆栈分硬堆栈和软堆栈。
硬堆栈是由在CPU内部设置的专用寄存器组构成;软堆栈是指在主存储器中划出的专门用作堆栈的一片区域,即堆栈区。
作用:
暂存各种信息;保护现场
(1)硬堆栈的缺点是容量小;硬堆栈的优点是速度快。
(2)软堆栈容量可以很大,唯一的限制是存储器的容量;软堆栈的缺点是速度较慢;
(3)可以构成软硬结合的堆栈。
15、指令分类:
(1)数据传送指令;
(2)算术运算指令
(3)逻辑运算指令
(4)转移类指令
(5)堆栈操作指令
(6)数据块运算指令
(7)控制类指令
16、指令周期、机器周期和节拍的关系
(1)“指令周期”是指一条指令从取出到执行完毕所需要的时间,通常将其分成两个阶段-取指令、分析指令阶段和执行指令阶段。
取指令阶段对所有指令都相同,可称作“公操作阶段”。
执行指令阶段的不同操作才反映出不同的指令功能。
对于采用混合控制方式的现代计算机,一般的做法是定义几个基本的机器周期,例如:
取指令机器周期,读存储器机器周期,写存储器机器周期和执行运算机器周期等。
(2关系:
一个指令周期中,可包含不同数量、不同种类的一个或几个机器周期。
但任何指令的第一个机器周期必须是取指令机器周期,由它完成取指令和分析指令的功能。
机器周期又称作CPU周期,通常是存储器的一个访问周期。
一个机器周期内部又可分为几个节拍。
节拍是计算机操作的最小单位,又称作时钟周期或T周期。
17、微程序:
解释一条机器指令的微指令的集合
18、机器周期(又称CPU周期):
指主存储器的一个访问周期(TM),完成一个基本操作所需要的时间。
19、中断向量:
中断源的识别标志,可用来存放中断服务程序的入口地址或跳转到中断服务程序的入口地址。
20、保护现场:
通过利用一系列PUSH指令保护CPU现场,即将相关寄存器的内容入栈保护起来。
21、中断屏蔽:
是指在一定的情况下,将中断屏蔽掉,禁止这个中断请求进入系统。
22、总线:
是指传送信息的通路
23、Cache:
高速缓冲存储器,一种特殊的存储器子系统,其中复制了频繁使用的数据以利于快速访问。
24、程序计数器:
是指用于存放下一条指令所在单元的地址的地方。
25、DMA:
是指DirectMemoryAccess,即直接存储器访问,它允许不同速度的硬件装置来沟通,而不需要依于CPU的大量中断负载。
26、存储系统:
是指计算机中由存放程序和数据的各种存储设备、控制部件及管理信息调度的设备(硬件)和算法(软件)所组成的系统。
27、计算机病毒的实质
实质上是计算机程序,是指编制或者在计算机程序中插入的破坏计算机功能或者破坏数据,影响计算机使用并且能够自我复制的一组计算机指令或者程序代码,具有破坏性,复制性和传染性。
病毒不是来源于突发或偶然的原因。
一次突发的停电和偶然的错误,会在计算机的磁盘和内存中产生一些乱码和随机指令,但这些代码是无序和混乱的,病毒则是一种比较完美的,精巧严谨的代码,按照严格的秩序组织起来,与所在的系统网络环境相适应和配合起来,病毒不会通过偶然形成,并且需要有一定的长度,这个基本的长度从概率上来讲是不可能通过随机代码产生的。
28、中断时为什么要保护现场?
所谓保护现场一般就是保护一些共用的寄存器,由于这些寄存器是共用的,所以可能会被其它的程序修改,因此需要保存起来,返回的时候再恢复回来,从而保护了程序运行的状态。
一般可在进入中断服务程序保护现场的时候关掉中断,保护完现场后再开中断。
如果没有保护现场或者保护现场的时候被高优先级的中断所中断,这时候当前程序里面的有些寄存器没有被保护下来,而高优先级的中断运行的过程中可能会改写这些寄存器,这样再返回低优级中断的时候,不可能恢复这些器存器的值,低优先级的程序运行的时候会因为错误的寄存器值造成不可预料的结果。
29、存储程序原理:
又称“冯诺依曼原理”,是指将程序像数据一样存储到计算机内部存储器中的一种设计原理,这样计算机就能在程序的控制下,有条不紊的工作。
30、软硬件在逻辑功能上的等效性?
计算机系统中的硬件和软件密切相关,它们之间的界面模糊不清,可以动态的改变。
软件的功能由硬件来完成,称为软件的硬化;硬件的功能由软件来完成,称为硬件的软化。
但是它们也有彼此的优缺点——硬件:
速度