《《微机原理》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《微机原理》PPT课件.ppt(65页珍藏版)》请在三一办公上搜索。
1、课程学时:64学时(48理论+16实验),上课时间地点:周二 12节 三教 104(34节 二教101)周五 12节 三教104(34节 二教101)实验地点:第九实验楼 201、213,课程简介,课程名称:微机原理与接口技术课程性质:必修,学习目的:,微型计算机系统(Micro-Computer System and Applications)应用与开发(而非使用)的基础。,学习方法:勤奋、兴趣、练习(作业、实验),与后续课程关系:单片机原理及应用、计算机控制技术、嵌入式系统开发及应用,掌握微机系统的基本组成、工作原理、接口电路及硬件的连接,建立微机系统的概念,具备初步开发微机系统软、硬件的
2、能力。,教材 杨素行,微型计算机系统原理及应用(第3版),清华大学出版社,2009,参考教材1、微机原理与接口技术 第二版 作者:彭虎 电子工业出版社 2009年2、80X86/Pentium微机原理与接口技术 第二版 作者:余春暄 机械工业出版社 2008年3、微机原理及接口技术 第三版 作者:龚尚福 西安电子科技大学出版社 2005年,1.1 计算机中的数制和编码,日常生活中的进制种类:十进制 每年月份:12进制 每天小时数:24进制 时分秒:60进制 英尺(英寸)12进制在计算机中:采用二进制,为书写方便也采用16进制。在计算机中数的表示方法:定点、浮点,1.1 无符号数的表示及运算,无
3、符号数的表示及运算1、无符号数的表示法(1)十进制数的表示法 十进制计数法的特点是:以10为底,逢10进1,借1当10。需要10个数字符号(基数)0,1,2,9。例如:125.6,58,63;十进制的后缀是D,可以省略不写。,(2)二进制数的表示法 二进制计数法的特点是:以2为底,逢2进1,借1当2。需要两个数字符号0,1。二进制的后缀是B 10111100B、1100.11011B,八进制数的特点是“逢8进1,借1当8”,需要用到的数字符号为8个,分别是07。(大型、巨型机使用较多),后缀为O或Q 例如:13Q、734Q(4)十六进制数的表示方法 十六进制数的特点是“逢16进1,借1当16”
4、,需要用到的数字符号为16个,分别是09、AF,后缀为H.例如:E5AD.BFH、1234H,(3)八进制的表示方法,其中 为整数部分,为小数部分,(1)任意进制数转换为十进制数任意进制数的通式表达:,2、数制转换,n为整数位数,m为小数位数,di为位码ri为位权,十进制,二进制,(234.13)10=2102+3101+4100+110-1+310-2(101.11)2=122+021+120+12-1+12-2=5.75(124.36)8=182+281+480+38-1+68-2=84.46875(AC.B5)16=A161+C160+B16-1+516-2=10161+12160+11
5、16-1+516-2=172.70703125,(2)十进制数与二进制数之间的转换 1)十进制整数转换成二进制整数:方法:除2取余法,结果倒排列。具体做法:将十进制数除以2,得到一个商和一个余数;再将商除以2,又得到一个商和一个余数;继续这一过程,直到商等于0为止。每次得到的余数(必定是0或1)就是对应的二进制数的各位数字。注意:第一次得到的余数为二进制数的最低位,最后得到的余数为二进制数的最高位。,【例1-1】将十进制数97转换成二进制数。其过程如下:,最后结果为:(97)10=(A6 A5 A4 A3 A2 A1 A0)2=(110 0001)2,余数为0,结束,2)十进制小数转换成二进制
6、小数 方法:乘2取整,结果顺排列。具体做法:用2乘以十进制小数,得到整数和小数部分;再用2乘以小数部分,又得到一个整数和一个小数部分;继续这一过程,直到余下的小数部分为0或满足精度要求为止;最后将每次得到的整数部分(必定是0或1)按先后顺序从左到右排列,即得到所对应的二进制小数。,【例1-2】将十进制小数0.6875转换成二进制小数。其过程如下:,0.6875 2 1.3750整数部分为1,即A-1=1 0.3750余下的小数部分 2 0.7500整数部分为0,即A-2=0 0.7500余下的小数部分 2 1.5000整数部分为1,即A-3=1 0.5000余下的小数部分 2 1.0000整数
7、部分为1,即A-4=1 0.0000余下的小数部分为0,结束,最后结果为:(0.6875)10=(0.A-1A-2A-3A-4)2=(0.1011)2,为了将一个既有整数又有小数部分的十进制数转换成二进制数,可以将其整数部分和小数部分分别进行转换,然后再组合起来。例如:(97)10=(110 0001)2(0.6875)10=(0.1011)2由此可得:(97.6875)10=(110 0001.1011)2,十进制与N进制之间的转换规则:整数部分:除N取余,结果倒排序小数部分:乘N取整,结果正排序,补充:用降幂法将十进制数转换为二进制数,首先写出要转换的十进制数,其次写出所有小于此数的各位二
8、进制权值,然后用要转换的十进制数减去与它最相近的二进制权值,如够减则减去并在相应位记以1;如不够减则在相应位记以0并跳过此位;如此不断反复,直到该数为0为止。常用二进制权值为:整数部分:212=4096、211=2048、210=1024、29=512、28=256、27=128、26=64、25=32、24=16、23=8、22=4、21=2、20=1 小数部分:2-1=0.5、2-2=0.25、2-3=0.125、2-4=0.0625、2-5=0.03125,整数部分:,小数部分:,117-26=117-64=53(a6=1),56-25=53-32=21(a5=1),21-24=21-1
9、6=5(a4=1),5-23=5-8 不够减(a3=0),5-22=5-4=1(a2=1),1-21=1-2 不够减(a1=0),1-20=1-1=0(a0=1),N=117D=111 0101B,详细计算过程如下:,例1.1(补充)N117D转换为二进制数,解:N=117,已知小于此数的二进制权值分别为:64,32,16,8,4,2,1,例1.2(补充)N=0.8125D,小于此数的二进制权为:0.5 0.25 0.125 0.0625 0.03125,计算过程如下:0.8125-2-1=0.8125-0.5=0.3125(b1=1)0.3125-2-2=0.3125-0.25=0.0625
10、(b2=1)0.0625-2-3=0.0625-0.125 不够减(b3=0)0.0625-2-4=0.0625-0.0625=0(b4=1)N=0.8125D=0.1101B,所以:117.8125=111 0101.1101B,思考:1028 69 4100 等转换成二进制数,体验降幂法的优点,1028=100 0000 0100B,1024,4,69=100 0101B,64,4,1,4100=1 0000 0000 0100B,4096,4,1028?,69?,4100?,表 1-1十、二、八、十六进制数码的对应关系,(3)二进制与八进制、十六进制数之间的转换,表 1-1十、二、八、十
11、六进制数码的对应关系,十进制,二进制,八进制,十六进制,【例1-10】直接将二进制数11110.11转换成八进制数。,1)二进制数转换成八进制数 方法:从小数点所在位置分别向左或向右每三位一组进行划分。若小数点左侧的位数不是3的整数倍,在数的最左侧补零;若小数点右侧的位数不是3的整数倍,在数的最右侧补零。然后参照表1-1,将每三位二进制数转换成对应的一位八进制数,即为二进制数对应的八进制数。,011 110.110 3 6.6,所以:(11110.110)2=(36.6)8,2)八进制数转换二进制数 方法:将每一位八进制数分解成对应的三位二进制数,即为八进制数对应的二进制数。【例1-11】直接
12、将八进制数35.6转换成二进制数。其过程如下:3 5.6011 101.110 所以:(35.6)8=(11101.110)2,3)二进制数转换成十六进制数 方法:从小数点所在位置分别向左向右每四位一组进行划分。若小数点左侧的位数不是4的整数倍,在数的最左侧补零;若小数点右侧的位数不是4的整数倍,在数的最右侧补零。然后参照表1-1,将每四位二进制数转换成对应的一位十六进制数,即为二进制数对应的十六进制数。【例1-12】直接将二进制1 1110.11转换成十六进制数。,1 1110.11001 E.C,所以:(1 1110.11)2=(1E.C)16,11 0101 1011 0110 1101
13、.1100 1110 1B,3,5,B,6,D,C,E,8,=35B6D.CE8H,4)十六进制数转换二进制数 方法:将每一位十六进制数转换成对应的四位二进制数,即为十六进制数对应的二进制数。【例1-13】直接将十六进制数EF.C转换成二进制数。E F.C11101111.1100 所以:(EF.C)16=(11101111.11)2,将9BD6A.4E8H转换成二进制数,1001,1011,1101,0110,1010,.,0100,1110,1000,9,B,D,6,A,4,E,8,所以:9BD6A.4E8B=1001 1011 1101 0110 1010.0100 1110 1H,(1
14、)二进制的算术运算:加法规则:减法运算 乘法运算 0+0=0 0-0=0 1*0=0 0+1=1 1-1=0 0*1=0 1+0=1 1-0=1 1*0=0 1+1=0(进位1)0-1=1(有借位)1*1=1,3、二进制的运算,1)“与”运算(AND)“与”运算又称逻辑乘,用符号或表示。其运算规则为00=001=010=011=1当两个逻辑变量取值均为1时,它们“与”的结果才为1。,(2)二进制数的逻辑运算,2)“或”运算(OR)“或”运算又称逻辑加,用符号+或表示。其运算规则为:0+0=00+1=11+0=11+1=1 当两个逻辑变量的取值只要一个为1,它们“或”的结果就会为1。,参与异或的
15、两个数相同为0,不同为1,下面举例说明逻辑运算方法。例如,X=00F0H,Y=7777H,求XY,XY,XY。其运算结果如下:,0000 0000 0111 0000=0070H,0111 0111 1111 0111=77F7H,0111 0111 1000 0111=7787H,05C3H+3D25H=?05C3 3D25,42E8,3D25H-05C3H=?,3D25,05C3,_,3762,按逢16进1的规则进行加法运算,+,3)十六进制数算术运算:,按借1当16的规则进行减法运算,1.1.2 带符号数的表示及运算,日常生活中遇到的数,除上述的无符号数外,还有大量的带符号数。数的符号在
16、计算机中也用二进制数表示,通常用二进制数的最高位表示数的符号,0代表正数,1代表负数。机器数:把一个数及其符号在机器中的表示加以数值化,这样的数称为机器数,真值:机器数所代表的数称为该机器数的真值。机器数可以用不同方法表示,常用的有原码、反码和补码表示法。,1、带符号数的表示方法,(1)原码,数x的原码记作x原,如机器字长为n,则原码的定义:,原码编码规则:最高位为符号位,正数为0,负数为1,其余n-1位表示数的绝对值。,原码表示数的范围为:-(2n-1-1)+(2n-1-1)n=8:-127+127 n=16:-32767+32767 在原码的表示中,真值0的原码可表示为两种不同的形式,+0
17、和-0。,x原=,例如,n=8时,+0原=0000 0000,-0 原=1000 0000+1原=0000 0001,-1原=1000 0001+127原=0111 1111,-127 原=1111 1111+56原=0011 1000。-56原=1011 1000。,N=16时+1原=0000 0000 0000 0001,-1原=1000 0000 0000 0001+32767原=0111 1111 1111 1111,-32767 原=1111 1111 1111 1111,原码表示法简单直观,但不便于进行加减运算,(2)反码,数x的反码记作X反,如机器字长为n,反码定义为:,x反=,
18、反码编码规则:最高位为符号位,正数为0,负数为1,正数的反码与原码相同,负数的反码只需将其对应的正数的反码(包括符号位)按位求反即可。,反码表示数的范围为:-(2n-1-1)+(2n-1-1)n=8:-127+127 n=16:-32767+32767,例如,n=8时,+0反=0000 0000-0 反=1111 1111+1反=0000 0001-1 反=1111 1110+127反=0111 1111-127反=1000 0000+56反=0011 1000-56反=1100 0111,在反码的表示中,真值0的反码也可表示为两种不同的形式,+0和-0:,(3)补码,数x的补码记作X补,如机
19、器字长为n,补码定义为:,x补=,补码表示数的范围为:-2n-1+(2n-1-1)n=8:-128+127 n=16:-32768+32767,补码编码规则:最高位为符号位,正数为0,负数为1,正数的补码与它的反码与原码均相同,负数的补码等于它的反码加1,即负数的补码等于其对应正数的补码按位求反(包括符号位)再加1即可。,当n=8时,+0补=0000 0000-0 补=0000 0000+1补=0000 0001-1补=1111 1111+127补=0111 1111-127 补=1000 0001+56补=0011 1000-56补=1100 1000,在补码表示法中,0只有一种表 示,即0
20、00000。对于1000 0000这个补码编码,其真值被定义为-128。,负数的补码等于其对应正数的补码按位求反(包括符号位)再加1,【例1】机器字长n=8位,X=+48D,求X补。首先将+48D转换为二进制数:+110000B。因为机器字长是8位,其中符号占了1位,所以数值只占7位。将+11 0000B写成+011 0000B,+48补=0011 0000B,写成十六进制数为30H,即+48补=30H。,【例2】机器字长n=8位,X=-48D,求X补。,+48补=0011 0000B,1100 1111+1 1101 0000,-48补=1101 0000B=D0H,【例3】机器字长n=16
21、位,X=+48D,求X补+48D转换为二进制数:+110000B。因为机器字长是16位,其中符号占了1位,所以数值占15位。将+110000B写成+000 0000 0011 0000B。+48补=0000 0000 0011 0000B,用十六进制数为:+48补=0030H。,+48补=0 011 0000B=30H,用8位数表示时,【例4】机器字长n=16位,X=-48D,求X补。48D转换为二进制数:110000B。因为机器字长是16位,其中符号占了1位,所以数值占15位。将110000B写成000 0000 0011 0000B。+48原码 0000 0000 0110 0000B 连
22、同符号位按位求反:1111 1111 1100 1111B 末位加1+1 所以-48补=1111 1111 1101 0000B 写成十六进制数为0FFD0H,即-48补=0FFD0H。,-48补=1101 0000B=0D0H,用8位数表示时,补码数要扩展时,正数是在符号的前面补0,负数是在符号的前面补1。补码数扩展实际上是符号扩展。,表1.1 原码、反码和补码表,2.真值与补码之间的转换,(1)真值,补码,已知补码求真值的方法:当机器数的最高位(符号位)为0时,表示真值是正数,其值等于其余n-1位的值;当机器数的最高位(符号位)为1时,表示真值是负数,其值等于其余n-1位按位取反后末位加1
23、的值。,【例1】求以下补码的真值x补=0111 1110 求xx补=1000 0010 求x,解:x补=0111 1110 符号位为0,是正数,真值=126,x补=1000 0010 符号位是1,是负数,000 0010,按位取反 111 1101,末位加1+1,111 1110,3.补码的运算,(1)补码的加法:X+Y补=X补+Y补,已知:+51补=0011 0011+66 补=0100 0010,-51补=1100 1101-66 补=1011 1110,+66+)+51+117,+66+)-51+15,-66+)+51-15,已知:+51补=0011 0011+66 补=0100 001
24、0,-51补=1100 1101-66 补=1011 1110,-66+)-51-117,不论被加数、加数是正数还是负数,只要直接用它们的补码(包括符号位)相加,当结果不超出补码表示范围时,运算结果是正确的补码。、中由最高位向更高位的进位由于机器字长的限制而自动丢失,不会影响运算结果的正确性。,(2)补码减法,X-Y补=X补+-Y补,已知:+51补=0011 0011+66 补=0100 0010,-51补=1100 1101-66 补=1011 1110,+66-)+51+15,+66-)-51+117,X-Y补=X补+-Y补,已知:+51补=0011 0011+66 补=0100 0010
25、,-51补=1100 1101-66 补=1011 1110,+51-)+66-15,-51-)-66+15,无论被减数、减数是正数还是负数,上述补码减法的规则是正确的。在计算机中,利用这个规则,通过对减数进行求补运算而将减法变成加法。例和中由最高位向更高位的进位同样会自动消失而不影响运算结果的正确性。,公式成立前提条件:运算结果不能超出机器数所能表示的范围,否则运算结果不正确。设机器字长为8位,则128N+127。计算(+64)+(+65)。,结果是错误的。究其原因是:(+64)+(+65)=+129+127,超出了字长为8位所能表示的最大值,产生了“溢出”,所以结果值出错。,X+Y补=X补
26、+Y补X-Y补=X补+-Y补,计算(-125)+(-10)。,-1251000 0011+)-10+)1111 0110-135 1 0111 1001+121,计算结果错误,其原因是:(-125)+(-10)=-135-128,超出了字长为8位所能表示的最小值,产生了“溢出”,所以结果出错。,在补码运算时,要注意溢出问题,它与进位不同。溢出就是运算的结果超出了所能表示的范围,使得数据侵占了符号位,判断溢出的方法有如下两种:,双进位法:2个进位位分别为次高位向最高位的进位和最高位向进位位的进位。如果两个进位均有或均无则无溢出,如果两个进位中1个有进位而另一个无进位则一定有溢出。符号判断法:同号
27、相减无溢出,同号相加时结果符号与加数符号相反有溢出,相同则无溢出。异号相加无溢出,异号相减时结果符号与减数符号相同时有溢出,相反则无溢出。,-1251000 0011+)-10+)1111 0110-135 10111 1001+121,把数的8位表示扩大为16位表示:,1111 1111 1000 0011,1000 0000 1000 0110,1000 0000 1000 0111=-135,结果正确,溢出的解决办法:扩大数据位数:,结果错误,采用补码运算后,运算结果也是补码,欲得运算结果的真值,还需进行转换。,验证,计算机中的带符号数用补码表示的优点:(1)负数的补码与对应正数的补码之
28、间的转换可以用同一方法求补运算实现,因而可简化硬件。(2)可以将减法变为加法运算,从而省去了减法器。(3)无符号数及带符号数的加法运算可用同一电路完成,结果都是正确的。,例如,计算机中有两个数分别为1111 0001及0000 1100,无论它们代表无符号数还是带符号数,运算结果都是正确的。,1111 0011+)0000 1100 1111 1101,看作无符号数,看作有符号数,241+12 253,-15补+12补-3补,1.1.3 二进制编码,BCD编码的特点是:这4个二进制码之间满足二进制规则,而十进制数位之间是十进制计数规则。因此这种编码实质上是二进制编码的十进制数(Binary C
29、oded Decimal),因此简称BCD码或二十进制码。,1.二进制编码的十进制数(BCD码),(1)压缩BCD码,压缩BCD码的每1位十进制数用4位二进制编码,1个字节表示2位十进制数,例如:96D=1001 0110BCD,(2)非压缩BCD码,非压缩BCD码用1个字节表示1位十进制数,高4位总是0,低4位表示数值(09),例如:8D=0000 1000BCD,表1.2 BCD码表,【例1】将十进制数67.9转换成压缩BCD码。其过程如下:6 7.9 0110 0111.1001所以:(67.9)10=(0110 0111.1001)BCD,【例2】将BCD码1001 0110.0110
30、转换成十进制数 1001 0110.0110 9 6.6所以:(1001 0110.0110)BCD=(96.6)10,2、字母和字符的编码,计算机处理的信息除了数字之外还需要处理字母、符号等,例如键盘输入及打印机、CRT输出的信息大部分是字符。计算机中的字符也必须采用二进制编码的形式。编码有多种,微型计算机中普遍采用的是ASCII(American Standard Code for Information Interchange)码,即美国标准信息交换代码。ASCII码用8位二进制对字符进行编码。,表1-4 ASCII字符编码,ASCII码表有以下几个特点:(1)每个字符用7位二进制码表示
31、,其排列次序为:B6 B5 B4 B3 B2 B1 B0。实际上,在计算机内部,每个字符是用8位(即一个字节)表示的。一般情况下,将最高位置为“0”,即B7为“0”。需要奇偶校验时,最高位用做校验位。,(2)ASCII码共编码了128个字符,它们分别是:*32个控制字符,主要用于通信中的通信控制或对计算机设备的功能控制,编码值为031(十进制)。*间隔字符(也称空格字符)SP,编码值为20H。*删除控制码DEL,编码值为7FH。*94个可印刷字符(或称有形字符)。这94个可印刷字符编码有如下两个规律:,字符09这10个数字符的高3位编码都为011,低4位为00001001,屏蔽掉高3位的值,低
32、4位正好是数据09的二进制形式。这样编码的好处是既满足正常的数值排序关系,又有利于ASCII码与二进制码之间的转换。3+30=33H(数字ASCII)33H0FH=03H(ASCII数字)英文字母的编码值满足AZ或az正常的字母排序关系。另外,大小写英文字母编码仅是B5位值不相同,B5为1是小写字母,这样编码有利于大、小写字母之间的编码转换。Aa的转换:41H+20H=61H(Aa)61H-20H=41H(Aa),1.2.4 计算机中数的定点和浮点数表示,常用的数据一般有三种:纯整数(如二进制数1011)、纯小数(如二进制数0.1011)及既含整数又含小数的数(如二进制数1.011)。在计算机
33、中,表示这三种数有两种方法:定点表示法和浮点表示法。计算机中数的小数点位置固定的表示法称为定点表示法,用定点表示法表示的数称为定点数。计算机中数的小数点位置不固定的表示法称为浮点表示法,用浮点表示法表示的数称为浮点数。小数点在计算机中是不表示出来的,它不占一个二进制位,而是隐含在用户规定的位置上。,1.定点纯整数,b0,bn-2,bn-1,符号位,数据位,小数点儿位置,2.定点纯小数,b0,bn-2,bn-1,符号位,数据位,小数点儿位置,定点纯整数表示数的范围:-2n-12n-1-1n=8:-128127n=16:-3276832767,3.浮点数,b0,bn-1,1011.01=240.1
34、01101=231.01101=2-2101101,任何一个二进制数N都可以表示成下列形式:,N=2jS,S尾数,j阶码,例:尾数5位,阶码3位,数N=231101在计算机中的表示为:,阶码用补码定点整数表示,尾数用补码定点规格化小数表示,(规格化小数:尾码的最高位为1)。N=270.1101,本讲小结,主要内容:1、数制及其相互转换、二进制数的运算 重点:十进制-二进制、二进制数的算术和 逻辑运算(加减、逻辑)2、机器数的表示方法 重点:数的补码表示,补码和真值之间的转换3、二进制编码 BCD 码、ASCII码、数的定点与浮点表示 重点:BCD 码、ASCII码。,习题:P43 1-11、1-12-(3)-(4)、1-13、1-14、1-15,