版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第4 4章章 机器数的运算方法及运算器机器数的运算方法及运算器目目 录录 4.1 机器数的加减运算及其实现4.2 定点乘法及其实现4.4 浮点数的算术运算4.5 运算器的组成和结构4.1 4.1 机器数的加减运算及其实现机器数的加减运算及其实现4.1.1 原码加法4.1.2 补码加法4.1.3 减法运算4.1.4 补码加减运算线路的实现 4.1.1 4.1.1 原码加法原码加法例例4.1 设设X=+10001,Y=+01011,求求Z=X+Y解:解: 即,即,Z=+11100。1.1.符号相同的两个原码相加:符号相同的两个原码相加,只符号相同的两个原码相加:符号相同的两个原码相加,只要两个数
2、的数值相加即可,其符号不变。要两个数的数值相加即可,其符号不变。解:解:即,即,Z=-11100。例例4.2 4.2 设设X=-10001X=-10001,Y=-01011Y=-01011,求求Z=X+YZ=X+Y【例【例4.3】设】设X=+10101,Y=-01010,求求Z=X+Y解:解:先比较先比较X与与Y的绝对值,本题的绝对值,本题 X |Y|,所以做减法所以做减法|X -|Y|,结果是结果是Z=+010114.1.1 4.1.1 原码加法原码加法2.2.符号相异的两个原码相加:先比较两数的绝对值符号相异的两个原码相加:先比较两数的绝对值大小,用绝对值大的数减去绝对值小的数,结果的大小
3、,用绝对值大的数减去绝对值小的数,结果的符号是绝对值大的数的符号。符号是绝对值大的数的符号。例例4.2 设设X=+01010,Y=-10111,求求Z=X+Y解:解:先 比 较先 比 较 X 与与 Y 的 绝 对 值 , 本 题的 绝 对 值 , 本 题 Y |X| ,所以做减法所以做减法|Y -|X|, 结果是结果是Z=-01101用原码进行符号不同的两个数相加时有用原码进行符号不同的两个数相加时有以下三步运算:以下三步运算: 比较两个数的绝对值的大小;比较两个数的绝对值的大小; 绝对值大的数的绝对值减去绝对值小绝对值大的数的绝对值减去绝对值小的数的绝对值;的数的绝对值; 结果赋以绝对值大的
4、那个数的符号。结果赋以绝对值大的那个数的符号。4.1.1 4.1.1 原码加法原码加法4.1.2 4.1.2 补码加法补码加法1.1.定点补码运算性质定点补码运算性质 性质性质1 1 两数之和的补码等于两数补码之和。两数之和的补码等于两数补码之和。X+Y补=X补+Y补 补码运算特点:补码运算特点:补码运算时,不用判断符号位,补码运算时,不用判断符号位,符号位与数值一块参与运算;符号位与数值一块参与运算;两数相加之后,进位的最高位超出字长部分自两数相加之后,进位的最高位超出字长部分自动丢失。动丢失。例例4.5 4.5 设设X=X=+ +1101011010,Y=Y=- -1010110101,用
5、补码的加法求用补码的加法求Z=X+YZ=X+Y解:加数和被加数的数值位都是解:加数和被加数的数值位都是5 5位,在数值位位,在数值位之前加之前加1 1位符号位。这样,位符号位。这样, XX补补=011010=011010, YY补补=101011=101011 X+YX+Y补补= = XX补补+YY补补= 011010+101011=000101= 011010+101011=000101所以,所以,X+Y=+00101X+Y=+00101。注意:在运算中,数值位和符号位有进位,本例采注意:在运算中,数值位和符号位有进位,本例采用单符号位,以用单符号位,以2 2为模,进位的为模,进位的1 1就
6、丢掉了。就丢掉了。例例4.64.6 设设X=X=+ +1010110101,Y=Y=- -1101011010,用补码加法求用补码加法求Z=X+YZ=X+Y解:解: XX补补= 010101= 010101, YY补补=100110=100110 X+YX+Y补补=XX补补+YY补补= 010101+100110=111011= 010101+100110=111011所以,所以,X+Y=X+Y=- -0010100101。性质性质2 2 一个负数的补码的补码就是这个负数的原一个负数的补码的补码就是这个负数的原码。码。X补补X原例例4.7 4.7 设有两个定点小数 X=-0.10011,Y=-
7、0.11001,求这两个负数补码的补码。解: X原1.10011 Y原1.11001 X补1.01101 Y补1.00111 X补补1.10011X原 Y补补1.11001Y原补码这一性质,计算机中计算结果的补码均可补码这一性质,计算机中计算结果的补码均可化成该数的原码。化成该数的原码。例例4.8 4.8 设有两个定点小数设有两个定点小数 X=-0.1101X=-0.1101,Y=0.0111Y=0.0111,(-1X+Y0)(-1X+Y0),求这两数之和。求这两数之和。 解:解: XX补补1.0011 1.0011 YY补补0.01110.0111 XX补补+YY补补1.0011+0.011
8、11.0011+0.01111.10101.1010 X+YX+Y原原XX补补+YY补补 补补1.10101.1010补补1.01101.0110 所以,所以,X X+Y+Y- -0.01100.0110 用真值进行运算:用真值进行运算:X X+Y+Y- -0.0.11110101+ +0.01110.0111- -0.01100.0110 结果相同。结果相同。用用补码做加法是补码做加法是数值位连数值位连同符号位一起参加运算的。但同符号位一起参加运算的。但是在有溢出的情况下,用一般的补码加法就得不到正确是在有溢出的情况下,用一般的补码加法就得不到正确的结果,再看下面的例子。的结果,再看下面的例
9、子。例例4.9 4.9 设有两个定点小数设有两个定点小数X=X=+0.+0.1011110111,Y=+0.10001Y=+0.10001,用用补码的加法求补码的加法求Z=X+YZ=X+Y解:解: XX补补= 0.10111= 0.10111, YY补补=0.10001=0.10001 X+YX+Y补补= = XX补补+YY补补=0.10111+0.10001=1.01000=0.10111+0.10001=1.01000 Z=X+YZ=X+Y= =-0-0.11000.11000两个大于两个大于0.50.5的正数相加,结果就为负值,结果显的正数相加,结果就为负值,结果显然是错误的。然是错误的
10、。例例4.10 4.10 设设X=X=-0.-0.1011110111,Y=Y=-0.-0.1000110001,用补码的加法求用补码的加法求Z=X+YZ=X+Y解:解: XX补补=1.01001=1.01001, YY补补=1.01111=1.01111 X+YX+Y补补= = XX补补+YY补补=1.01001+1.01111=0.11000 =1.01001+1.01111=0.11000 Z=X+Y=Z=X+Y=+0+0.11000.11000两个绝对值大于两个绝对值大于0.50.5的负数相加,结果为正值,这也的负数相加,结果为正值,这也是错误的。是错误的。它们的和超出了机器数所能表示
11、的最大范围,即产它们的和超出了机器数所能表示的最大范围,即产生了溢出,在有溢出的情况下,用一般补码加法就无法生了溢出,在有溢出的情况下,用一般补码加法就无法得到正确结果。得到正确结果。 例例4.11 4.11 设有两个定点小数设有两个定点小数X=X=+0.+0.1011110111,Y=-0.10001Y=-0.10001,用补码的加法求用补码的加法求Z=X+YZ=X+Y解:解: XX补补= 0.10111= 0.10111, YY补补=1.01111=1.01111 X+YX+Y补补= = XX补补+YY补补 =0.10111+1.01111=0.00110 =0.10111+1.01111
12、=0.00110 所以,所以,Z=+0.00110Z=+0.00110,没有发生溢出,结果是没有发生溢出,结果是正确的。正确的。例例4.12 4.12 设有两个定点小数设有两个定点小数X=X=-0.-0.1011110111,Y=Y=+0.+0.1000110001,用补用补码的加法求码的加法求Z=X+YZ=X+Y解:解: XX补补=1.01001=1.01001, YY补补=0.10001=0.10001 X+YX+Y补补= = XX补补+YY补补=1.01001+0.10001=1.01001+0.10001 =1.11010 =1.11010 X+YX+Y补补 补补=1.00110=1.
13、00110 Z=X+Y= Z=X+Y=- -0.001100.00110所以,所以,Z=Z=- -0.001100.00110,没有发生溢出,结果也是正确的。没有发生溢出,结果也是正确的。2.变形补码加法变形补码加法变形补码是符号位用两位来表示的补码。变形补码的定义为 :对于变形补码,补码的加法性质公式同样适用,即:X+Y变形补= X变形补+Y变形补X 变形补 变形补X原 用双符号位进行判断,若和的两个符号位相同(00或11),不发生溢出;若和的两个符号位相异(01或10),就说明发生了溢出。遇到溢出,就要停机进行如下处理:选取一个合理的比例因子H=2i,对每个加数都除以H,然后相加,其结果再
14、乘以H,即得所求。下面我们对例4.9和例4.10用变形补码加法来求结果。【例4.13】设X=+10111,Y=+10001,用变形补码的加法求Z=X+Y解:设比例因子H=2,则有所以,X+Y=+101000【例4.14】设X=-10111,Y=-10001,用变形补码的加法求Z=X+Y解:设比例因子H=2,则有:所以:X+Y=-101000说说 明明 舍入处理 在变形补码运算中,加数除以H=2i,是通过把X补右移I位得到的。在移位时,末几位可能超出机器的最末位而丢失,造成误差。为了减少误差,通常要进行舍入处理,一般有两种方法: 恒置1。即移位后机器末位总是1。上面的例子就是用的恒置1的方法。
15、0舍1入。即移出去的数是0则抹去,移出去的数是1则进1到末位。 符号位扩展 补码在右移时,要注意符号位要一起移,且最左边一位要补上原符号位的值,这就叫做符号位扩展,即把符号位扩展到为3位。总结以上,得出补码相加的规则: 若两数符号不同,相加的结果即为和的补码。 若两数符号相同,相加后若其和的符号不变,则结果是和的补码。 若两数符号相同,相加后若其和的符号改变,则表示发生了溢出。两个正数相加,结果的符号为“01”,表示发生正溢出;两个负数相加,结果的符号为“10”,表示发生负溢出。说说 明明4.1.3 4.1.3 减法运算减法运算 性质性质3 3 两数之差的补码等于被减数的补码与两数之差的补码等
16、于被减数的补码与负的减数补码之和。负的减数补码之和。X-Y补=X补+-Y补 由性质1推导得:X-Y补=X+(-Y)补=X补+-Y补例例4.15 4.15 两个正数相减,被减数大于减数的例子。两个正数相减,被减数大于减数的例子。设X=+11001,Y=+10001,求Z=X-Y。解:X补= 00.11001,-Y补=11.01111 X-Y补= X补+-Y补= 00.11001+11.01111=00.01000 X-Y=+01000所以,Z=+01000例例4.16 4.16 两个正数相减,被减数小于减数的两个正数相减,被减数小于减数的例子。设例子。设X=X=+ +1001110011,Y=+
17、11001Y=+11001,求求Z=XZ=X- -Y Y。解:解:X补补= 00.10011,-Y补补=11.00111 X-Y补补= X补补+-Y补补= 00.10011+11.00111 =11.11010 X-Y =-00110 所以,所以,Z =-00110【例例4.174.17】两负数相减,被减数大于减数的例子。】两负数相减,被减数大于减数的例子。设X=-10011,Y=-11001,求Z=X-Y。 解:X补= 11.01101,-Y补=00.11001 X-Y补 = X补+-Y补 =11.01101+00.11001 =00.00110 X-Y =+00110 所以,Z= +001
18、10【例4.18】两负数相减,被减数小于减数的例子。两负数相减,被减数小于减数的例子。设X=-11001,Y=-10011,求Z=X-Y。 解:X补= 11.00111,-Y补=00.10011 X-Y补=X补+-Y补=11.00111+00.10011 =11.11010 X-Y=-00110 所以,Z=-001104.1.4 4.1.4 补码加减运算线路的实现补码加减运算线路的实现 在线路实现上,若已有Y补,求-Y补可用把Y补每一位(包括符号位和数值位)取反,再在最低位加1来实现。 实现补码加减运算的逻辑电路如右图所示。4.1.4 4.1.4 补码加减运算线路的实现补码加减运算线路的实现图
19、中各个部件的名称和功能是:F 表示多位并行加法器,它的功能是接收参加运算的两个数X和Y,实现加法运算,并在输出端给出本次运算结果。加法器的最低一位可以接收一个进位信号1F。 X和Y临时存放参加运算数据的两个寄存器,X还用来保存运算的结果。A “与”门,功能是控制寄存器X输出的内容是否送到加法器F的左输入端,用XF信号控制。C “与”门,功能是控制加法器F的运算结果是否写回寄存器X,用FX信号控制。B “与或”门,功能是通过控制信号YF和F分别把Y寄存器中的内容是原数据送加法器F还是各位取反后送加法器F。运算原理如下: 参加运算的两个数被送到寄存器X和Y,以补码的形式保存。要实现X+Y补X,需给
20、出XF、YF两个控制信号,就可以把X补和Y补送入加法器F的两个输入端,加法器再完成两个补码X补和Y补的相加。加法完成之后,再通过FX命令,把相加结果送入寄存器X。 若要完成X-Y补X,“与”门A送出的还是X补,但“与或”门B送出的应是Y每一位的取反值,并在加法器的最低位加进位信号1F,这样就得到-Y补,通过加法器F相加,就实现了X补+-Y补,也就是X-Y补。再通过FX命令,把X-Y补送入寄存器X。4.2 4.2 定点乘法及其实现定点乘法及其实现4.2.1 原码一位乘法及其实现4.2.2 定点补码一位乘法及其实现4.2.3 原码两位乘法4.2.4 补码两位乘法(了解) 4.2.1 4.2.1 原
21、码一位乘法及其实现原码一位乘法及其实现 在定点计算机中,用两个原码表示的数相乘,其乘积的符号由两数的符号位异或得到,乘积的数值部分是两数的绝对值相乘之积。 例如,有两个数X和Y,X原=XsX1X2 Xn Y原=YsY1Y2 Yn 则 X*Y原=X原*Y原。 乘积的符号位为:Xs Ys 乘积的数值部分为:(X1X2 Xn)*(Y1Y2 Yn)。n例如:X=0.1001,Y=0.1101 求Z=X*Y 解: 0.1001 X 0.1101 1001 0000 1001 1001 0.01110101得到相乘结果X*Y= 0.01110101 在计算机中其运算规则是:根据乘数Y绝对值每个数位上的值Y
22、i是“1”还是“0”(从最低位Y0开始),决定本次部分积是加上被乘数X的绝对值,还是加上全“0”,得到的新部分积右移一位,再重复上面的动作,直到乘法做完为止。 【例例4.4.2020】X=+11010X=+11010,Y=+10110Y=+10110,求求Z=XZ=X* *Y Y 解:解: XX原原=0=0.1101.11010 0, YY原原= =0.10110.10110 0 乘积的符号位乘积的符号位Z Z0 0=0=0 0=00=0 乘积的数值部分是两数的绝对值乘积的数值部分是两数的绝对值相乘。开始时,部分积为全相乘。开始时,部分积为全“0 0”。所得结果Z=+0.1000111100。
23、有时部分积的符号位出现“1”,并不是出现了负数,而是部分积的值超出了“1”,右移时符号位应补“0”。 要实现原码一位乘法,乘积的符号可以用异或门实现,异或门的两个输入为相乘两数的符号,输出即为乘积的符号。 下图给出了实现原码一位乘法的逻辑电路框图,以实现对相乘两数的数值位相乘。 实现原码一位乘法的逻辑电路框图实现原码一位乘法的逻辑电路框图 主要组成部件有:寄存器A,存放计算的部分积Z,具有自动移位功能;寄存器B,存放被乘数X;寄存器C,存放乘数Y,具有自动移位功能;加法器F,进行部分积和被乘数相加;计数器i,用来控制逐位相乘的次数。控制信号AF、BF分别通过与门控制部分积、被乘数送入加法器F进
24、行相加;控制信号A/2A、C/2C分别控制寄存器A、C自行右移一位。 4.2.2 4.2.2 定点补码一位乘法及其实现定点补码一位乘法及其实现( (重点重点) )假设两个数X和Y相乘,X=x0.x1x2x3xn;Y=y0.y1y2y3y两个正数补码数相乘,其结果应直接得到乘积的补码:X补*Y补=X*Y补因为: X*Y补=X*Y=X原*Y原=X补*Y补那么:X、Y为任意符号呢? 当被乘数X的符号为任意,乘数Y的符号为正。因为Y0,Y补=Y,则X补*Y补=X补*Y=X*Y补由于:X补*Y补 =X补*Y =X补*(0.y1y2y3yn) =X*Y补 当被乘数X的符号为任意,乘数Y的符号为负。因为Y0
25、,则补补补). 0(*. 012*12102101XyyyyXYXyyyyYYnnniii(3)综上所述:0321*. 0*yXyyyyXYXn补补补)( BOOTH法 假设两个数X和Y相乘,X=x0.x1x2x3xn;Y=y0.y1y2y3y当被乘数X和乘数Y的符号都任意时侯。X*Y补=X补*(0. y1y2y3yn)-X补*y0 =X补*(- y0+0. y1y2y3yn) =X补*(-y0+y1*2-1+y2*2-2+y3*2-3yn*2-n) =X补*(y1-y0)+(y2-y1)*2-1+(y3-y2)*2-2+(y4-y3)*2-3(yn-yn-1)*2-(n-1)+(0-yn)*
26、2-n写成递推公式: Z0补=0 Z1补=2-1*Z0补+(Yn+1-Yn)*X补 Yn+1=0 Z2补=2-1*(Z1补+(Yn-Yn-1)*X补) Z3补=2-1*(Z2补+(Yn-1-Yn-2)*X补) Zi补=2-1*(Zi-1补+(Yn-i+2-Yn-i+1)*X补) Zn+1补=(Zn补+(Y1-Y0)*X补)最后乘积为Zn+1补式中,Yn+1为附加位,在Yn+1以后,Yn+1=0。 由此,可以总结出比较法补码乘法的规则: 在作补码一位乘法时,在乘数的最末位后面再加一位附加位yn+1。开始时,yn+1=0,第一步运算是根据yn+1 yn这两位的值判断后决定,然后再根据yn yn-1
27、这两位的值判断第二步该作什么运算,再根据yn-2 yn-3这两位的值判断第三步该作什么运算,如此等等。因为每进行一步,乘数都要右移一位,yn-1 yn 就移到yn yn+1位置上。作第三步时,原来的yn-2 yn-1移到了yn-1 yn位置上。所以每次只要判断yn yn+1这两位的值就行。判断规则如表4-1所示。补码一位比较乘法规则补码一位比较乘法规则 比较法计算用流程图表示比较法计算用流程图表示 【例4.20】利用补码一位乘法计算Z=X*Y ,其中X=-0.1101,Y=0.1011。解:X补=11.0011,Y补=0.1011,-X补=00.1101 乘积的数值部分是两数的绝对值相乘。开始
28、时,部分积为全“0”。n所以X*Y补=11.01110001,n结果Z=X*Y=-0.10001111。 n 部分积 乘数/判别位 说明 00.0000 01011 0 yn+1=0 判别位10n+-x补 00.1101 部分积加+-x补 n 00.1101n 00.0110 10101 1 右移1位,判别位11n 00.0011 01010 1 右移1位,判别位01n+x补 11.0011 +x补 n 11.0110 n 11.1011 00101 0 右移1位,判别位10n+-x补 00.1101 +-x补 n 00.1000n 00.0100 00010 1 右移1位,判别位01n+x补
29、 11.0011 +x补 n 11.0111 0001 最后一步不移位 实现一位补码乘法的逻辑原理图如图4-4所示。它与一位原码乘法的逻辑原理图有些相似,不同的地方有以下几点: 被乘数和乘数的符号位参加运算; 乘数寄存器C有附加位Yn+1,其初始状态为“0”。当乘数和部分积每次右移时,部分积最低位移入寄存器C的首位位置,所以寄存器C必须是具有右移功能的寄存器。 被乘数寄存器B的每一位用原码或反码(可用触发器的Q端或端输出)经多路开关传送到加法器对应位的一个输入端,而多路开关的控制信号由Yn-1、Yn的输出译码器产生。当Yn-1Yn=01时,送X补;当Yn-1Yn=10时,送-X补,即送寄存器B
30、内容的反码且在加法器末位加1。 寄存器A用来保存部分积,该寄存器也应具有右移的功能,其符号位与加法器的符号位始终一致。 当计数器i=n+1时,封锁A/2A,C/2C控制信号,使最后一步不移位。补码一位乘法逻辑原理图补码一位乘法逻辑原理图4.2.3 4.2.3 原码两位乘法原码两位乘法 定点原码两位乘法是根据乘数中相邻两位数码的值来确定乘法的每一步作什么运算。 两位乘法的判别位是2位,即yn yn-1,共有4种可能,即00,01,10,11,其操作方法如下表所列。【例4.22】设X=1101,Y=1001,用原码两位乘法求Z=X*Y 解:以X为被乘数,Y为乘数,其判别位Y1Y0=01,Y3Y2=
31、10,其两位乘法的运算过程如下:所得结果所得结果Z=Z= 1110101 1110101。【例4.22】用原码两位乘法求Z=X*Y,其中X=101011,Y=001001, 解:以X为被乘数,Y为乘数,其判别位Y1Y0=01,Y3Y2=10,Y5Y4=00,其两位乘法的运算过程如下:所得结果Z=110000011。说明:部分积减去被乘数X,是用补码进行运算,即用+-X补的方法实现。部分积减去被乘数所得结果一般为负数,这是因为部分积要右移2位,所以总是小于被乘数的缘故。当判别位为11时,要用上次部分积减被乘数,右移2位,再在下一个判别位上加1。其原因是判别位为11(即3),应加上3倍的被乘数。两
32、种方法是等效的。符号位扩展的实质是采用几位加法器的问题。若采用n+2位加法器,符号位扩展2位;若采用n+3位加法器,则符号位应扩展3位。 4.2.4 4.2.4 补码两位乘法(了解)补码两位乘法(了解) 进行定点补码两位乘法,要有3位判别位,3位判别位的组合关系为:-2Yi+Yi-1+Yi-2 它们的组合值与相应的加法操作,如下表所示。判别位。在乘数的最低位后增加一位附加位。乘数的符号位要视数值部分的位数来决定。若数值部分的位数为偶数,则必须采用2位符号位;否则,就采用1位符号位。加法操作的次数。定点补码两位乘法运算所做加法操作的次数为乘数的位数(包括符号位)除以2的值,即n/2。被乘数的符号
33、位。可采用2位符号位或3位符号位,视情况而定。进行定点补码两位乘法运算需注意如下问题进行定点补码两位乘法运算需注意如下问题符号位扩展。在进行定点补码两位乘法运算中,在进行右移2位操作时,要注意符号位的扩展,即右移时符号要一起移,空出的符号位以符号的原值填充。最后一步的移位。视乘数的符号位而定。若符号位为2位,则不用移位;若符号位为1位,则要进行右移1位的操作。进行定点补码两位乘法运算需注意如下问题进行定点补码两位乘法运算需注意如下问题【例4.23】设X=-1101,Y=-0101,用补码的两位乘法求Z=X*Y 解:X补=11.0011,-X补=00.1101,Y补=11.1011采用2位符号位
34、,X*Y补的补码两位乘法运算过程如下:故运算结果为:X*Y补=00.01000001,所以 Z=X*Y=+10000014.4 4.4 浮点数的算术运算浮点数的算术运算 4.4.1 浮点数的补码加法运算4.4.2 浮点数的乘法运算4.4.3 浮点数的除法运算 4.4.1 4.4.1 浮点数的补码加法运算浮点数的补码加法运算 完成浮点数加减运算的步骤:对阶。方法是,小阶向大阶看齐,阶码较小的数的尾数每向右移1位,该数阶码便加1,直到两数的阶码相同为止。对阶时要进行舍入处理。尾数求和。尾数连同符号相加。规格化。若进行右规,还需要进行舍入处理。 例4.29 有两个浮点数 A=210(-0.11010
35、0),B=2100(+0.101011),求A+B=?解:对阶。先把A、B两数用补码表示:A补=00.010;11.001100 B补=00.100;00.101011 可以看出,A补的阶码小,应向B补阶码看齐,A补阶码增2,尾数向右移2位:A补=00.100;11.110011 B补=00.100;00.101011 尾数求和。 11 110011 00 101011 100.011110 规格化 上述结果为: A+B=2100(+0.011110) 这是一个非规格化的数,对上述结果规格化,即进行左规:尾数向左移1位,阶码减1。得到最后结果: A+B=2011(+0.111100) 舍入处理
36、 舍入处理不是对每一个题目都是必须的,主要看在对阶和右规格化尾数向右移位时,尾数的低位部分有否被丢掉。常用的舍入方法有两种:一种是“0舍1入”法,即如果右移时被丢掉的数位的最高位为0,则舍去;反之则将尾数的末位加“1”。另一种是“恒置1”法,即只要有数位被移掉,就在尾数的末位恒置“1”。4.4.2 4.4.2 浮点数的乘法运算浮点数的乘法运算 浮点数乘法的运算规则是:乘积的尾数是相乘两数的尾数之积,乘积的阶码是相乘两数的阶码之和。结果也要进行规格化和舍入处理。 如有两个浮点数 X 和 Y: X=2exSx Y=2eySy 则 Z=XY=2(ex+ey)(SxSy) 在具体实现中,两数阶码的求和
37、运算可在阶码加法器中进行,两个尾数的乘法运算,就是定点数的乘法运算。 4.4.3 4.4.3 浮点数的除法运算浮点数的除法运算 浮点数除法的运算规则是:商的尾数是相除两数的尾数之商,商的阶码是相除两数的阶码之差。结果也要进行规格化和舍入处理。 如有两个浮点数 X 和 Y: X=2exSx Y=2eySy 则 Z=XY=2(exey)(SxSy) 综上所述,浮点数的算术运算比定点数的算术运算要复杂许多,从运算器的结构来说,不但要有尾数运算器,而且还要有阶码运算器。阶码运算器用来求阶差,修改阶码等等,一般只进行加减运算。而尾数运算器不但要有加法器用以求和,还应有左移和右移的功能,以实现对阶操作和规
38、格化操作。4.5 4.5 运算器的组成和结构运算器的组成和结构4.5.1 算术逻辑单元ALU4.5.2 通用寄存器组4.5.3 状态寄存器4.5.4 数据通路4.5.5 运算器的基本结构4.5.6 运算器组成实例 中央处理器由运算器、控制器、总线和时钟发生器等部件组成,它是计算机的核心部件。在微型机中,中央处理器也称为微处理器,集成在一个芯片上称为CPU芯片。 运算器是计算机对数据的进行加工处理的中心,它主要有算术逻辑单元ALU、通用寄存器组、状态寄存器、数据多路选择器MUX1等组成。4.5 运算器的组成和结构运算器的组成和结构4.5.1 4.5.1 算术逻辑单元算术逻辑单元ALUALU AL
39、U的主要功能是对二进制数据进行算术运算、逻辑运算和各种移位操作。 算术运算包括定点加、减、乘和除的运算; 逻辑运算主要有逻辑与、逻辑或、逻辑异或和逻辑非操作; 移位操作主要完成逻辑左移、逻辑右移、算术左移、算术右移及其它一些移位操作。 74181是一种典型的4位ALU器件。下页图是74181的电路图,及用正逻辑和负逻辑表示的4位ALU74181的方框图。和74181的运算功能表。 74181 74181 ALUALU的方框图的方框图74181 ALU的方框图7418174181的运算功能表的运算功能表 4.5.2 4.5.2 通用寄存器组通用寄存器组 通用寄存器用来保存参加运算的操作数和运算的
40、结果。寄存器是计算机中存取速度最快的存储器件,同时还可以兼作某些指令的专用寄存器。例如,IBM PC系列微型计算机中,其CPU有8个16位的通用寄存器,其结构如下图所示。 4.5.3 4.5.3 状态寄存器状态寄存器记录运算结果状态 ,一般设置下面几种标志状态位:nZ (零标志位):当运算结果为零时,Z位置1;结果非零时,Z位清0。nN (符号标志位):当运算结果为负时,N位置1;结果为正时,N位清0。nV (溢出标志位):当运算结果有溢出发生时,V位置1;无溢出时,V位清0。nC (进位或借位标志位):当作加法时,如果运算中最高有效位向前有进位,C位置1;否则C位清0。当作减法运算时,如果不
41、够减,最高位向前有借位时,C位置1;否则C位清0。4.5.4 4.5.4 数据通路数据通路 通常把从一个功能部件向另一个功能部件传送数据所经过的功能部件、总线等称为数据通路。数据通路是个很重要的概念,正确理解数据通路,能帮助我们理解指令执行过程,理解计算机总体运行过程 。 在上面图所示的右半部分运算器中,MUX1、MUX2分别是两个多路数据选择器,用它们来选择当前哪两组数据送到ALU中。MUX1数据有三个来源:通用寄存器的输出、指令中的相对位移量和常数“0”; MUX2数据也有三个来源:通用寄存器的输出、程序计数器的输出和数据寄存器的输出。ALU的输出信息通过内部数据总线送到通用寄存器中。 假
42、设这个通用寄存器组有两个输出端口RA和RB,有一个输入端口RI。寄存器中的数据以补码表示。并假设寄存器组中的寄存器1用R1表示,寄存器2用R2表示,寄存器3用R3表示。运算之前,R1=0110,R2=1100,Z、N、C、V标志位全为0。 第一种操作:R1加R2,结果送R3 其操作过程如下: R1的内容通过端口RA输出,MUX1选择RA的内容送到ALU的A输入端;R2的内容通过端口RB输出,MUX2选择RB的内容送入ALU的B输入端。令ALU作A+B算术加法操作,从Y输出端输出加的结果,并存入R3寄存器中。 第二种操作:0减R1,结果送R3,即求与R1相补的数。 其操作过程如下: R1的内容从
43、RB输出,经过MUX2选择,送到ALU的B输入端,在MUX1处选择常数“0”送入ALU的A输入端,在ALU中选择A-B的算术运算功能。由于运算器要进行的是补码运算,A-B功能是通过A补+-B补来完成的。 第三种操作:利用运算器计算操作数地址或转移地址 假设当前执行转移指令,转移地址由程序计数器的值加上相对位移量得出。运算器计算转移地址的过程是:MUX2选择程序计数器PC的内容送往ALU的B输入端,MUX1选择指令字中的相对位移量到ALU的A输入端,令ALU做A+B算术加运算,从Y输出的内容送往程序计数器PC中,这时PC中就为转移地址了。下次执行指令就从转移地址开始执行。 第四种操作:关于移位操
44、作 为简单起见,我们以4位二进制数(最左边一位为符号位)为例,来说明移位操作的规则和操作结果。4.5.5 4.5.5 运算器的基本结构运算器的基本结构 运算器包括算术逻辑部件ALU,通用寄存器组、累加器、状态寄存器、多路开关、数据总线等。 运算器的设计主要是围绕ALU和寄存器同数据总线之间如何传送操作数和运算结果而进行的;在决定方案时,需考虑数据传送的方便性和操作速度,微型机中,考虑总线在硅片上的制作工艺。4.5.5 4.5.5 运算器的基本结构运算器的基本结构 单总线结构的运算器 运算器所有部件都接到同一条总线上的运算器结构是单总线结构的运算器。 例如要执行一次加法操作,需要先把第一个操作数
45、放入例如要执行一次加法操作,需要先把第一个操作数放入A A缓冲器,然缓冲器,然后再把第二个操作数放入后再把第二个操作数放入B B缓冲器,只有当这两个操作数同时出现在缓冲器,只有当这两个操作数同时出现在ALUALU的的两个输入端,两个输入端,ALUALU才能执行加法操作。这种结构的运算器主要缺点是操作才能执行加法操作。这种结构的运算器主要缺点是操作速度较慢。速度较慢。双总线结构的运算器双总线结构的运算器 双总线结构的运算器如下图所示。在这种结构中,两个操作数同时加到ALU进行运算,只需要一次操作控制,而且马上可以得到运算结果。 ALU的输出不能直接加到总线上,必须在ALU的输出端设置一个缓冲寄存
46、器。整个操作分两步完成:第一步,在ALU 的两个输入端输入操作数,形成结果并送入缓冲寄存器;第二步,把结果送入目的寄存器。三总线结构的运算器三总线结构的运算器 三总线结构的运算器如下图所示。在三总线结构运算器中,ALU的两个输入端分别由两条总线供给,而ALU的输出则与第三条总线相连。三总线结构的运算器的特点是操作时间快。4.5.6 4.5.6 运算器组成实例运算器组成实例最简单的运算器 下图示出的一个运算器只有三个逻辑部件:算术逻辑运算单元ALU、累加寄存器AC和数据缓冲寄存器DR。是最简单的运算器。 一台小型机的运算器一台小型机的运算器 下页图示出了一台小型机的运算器逻辑方框图。该运算器的基
47、本功能包括:两数的加减运算、一个数的加1运算、两数的逻辑加运算、一个数的变补、变反传送,以及数码的左移、右移、直送和字节交换等操作。 该运算器由以下几部分组成: 算术逻辑运算单元ALU:由4片74181 ALU芯片和1片74182 CLA(先行进位加法器)芯片组成16位字长的运算部件,因而具有两级先行进位。 锁存器: 在ALU的两个输入端上有两个锁存器A和B,用来暂存来自外部设备或存储器(经数据总线)的数据,或者暂存来自通用寄存器(R0R7)和源寄存器、暂存寄存器中的数据。一旦数据放入锁存器,不管其外部的数据如何变化,ALU将依据锁存器A和B中的数据进行运算。 移位器 将ALU的输出进行左移、
48、右移、直送、半字交换。因此这里的移位器也是一个4选1的多路开关,每次只能从4路输入中选择1路进行输出。 寄存器组 寄存器组包括8个可由程序编址的通用寄存器(R0R7)和两个程序不能访问的工作寄存器(源寄存器SR和暂存寄存器DR)。 状态寄存器 运算器中设有一个状态寄存器,运算过程中产生的“进位”、“溢出”、“零、”“负”等状态标志可以保存在这个寄存器中,以供程序判断之用。状态寄存器的状态数据也可经由数据总线送到存储器加以保存。第 4 章 结 束The EndThe End谢谢!谢谢!练习1.设x= +15, y= -13,用带求补器的原码阵列乘法器求乘积xy = 并用十进制数乘法进行验证. 2
49、.已知x0101,y0101,请用补码一位乘中的Booth算法计算xy?,列出计算过程。1、两个浮点数X=201(+0.1101),Y=211(-0.1010),求X+Y=?1.解: 设最高位为符号位,输入数据为x原 = 01111, y原 = 11101,因符号位单独考虑,尾数算前输出值为:|x| = 1111,|y| = 1101 乘积符号位运算: x0 y0 = 0 1 =1 加上乘积符号位,得原码乘积值: xy 原 = 111000011 换算成二进制真值: xy = (-11000011)2 = (-195)10十进制数乘法验证: xy = 15(-13) = -195尾数部分运算:
50、 0. 0 0 0 0 + 0. 1 1 1 1 0. 1 1 1 1 0. 0 1 1 1 1 + 0. 0 0 0 00. 0 1 1 1 10. 0 0 0 1 1 1 1 + 0. 1 1 1 1 1. 0 0 1 0 1 1 0. 1 0 0 1 0 1 1 + 0. 1 1 1 1 1. 1 0 0 0 0 1 1 0. 1 1 0 0 0 0 1 12.解:x补=00.0101,-x补=11.1011, y补=0.0101.00.0000+-x补11.1011 11.1011 11.11011 +x补 00.0101 00.00101 00.000101 +-x补 11.1011
51、 11.110001 11.1110001 +x补 00.0101 00.0011001 00.00011001 00.00011001 3.解: (1)对阶 先把X、Y两数用补码表示: X补=00 01;00.1101 Y补=00 11;11.0110 可以看出,X补的阶码小,应向Y补阶码看齐,X补阶码增2,尾数向右移2位。对阶完毕后,可得X补=00 11;00.0011 Y补=00 11;11 0110(2)尾数求和 00.001111 0110 11 1001(3)规格化这是一个非规格化的数,对上述结果规格化,即进行左规: 尾数向左移1位,阶码减1。得到最后结果: X+Y=210(-0.
52、1110)第 5 章 指令系统5.1 机器指令的格式5.2 寻址方式 5.3 指令的种类 5.4 指令的执行方式 5.5 精简指令计算机(RISC)的指令系统 目目 录录5.1.1 指令的含义5.1.2 指令格式5.1.3 指令格式举例5.1.4 指令操作码的编码格式5.1.5 指令字长度与机器字长的关系5.1.6 指令助记符 5.1 5.1 机器指令的格式机器指令的格式 指令(Instruction)是指挥计算机执行某种操作的命令。 从计算机组成的层次结构来看,计算机的指令有微指令、机器指令和宏指令之分。 微指令是微程序级的命令,它设计在微程序控制器中,属于硬件;宏指令是由若干条机器指令组成
53、的软件指令,若干条机器指令的功能可由执行这条宏指令实现,它属于软件;而机器指令则介于微指令和宏指令之间,通常简称为指令。 5.1.1 5.1.1 指令的含义指令的含义 机器指令可完成一个独立的操作功能,它是程序员进行程序设计的最小单位,是组成程序的语句; 又因为机器指令是由一串二进制数码组成的,它是机器能够直接接收、理解和执行的语言,它是硬件设计人员设计计算机硬件的依据。 从计算机系统结构的角度看,指令可理解为计算机软件和硬件的接口,是系统程序设计人员看得到的属性,也是使用汇编语言的用户能看到的属性。 5.1.1 5.1.1 指令的含义指令的含义 所谓指令格式是指一条指令由什么样的代码组成,一
54、条指令的结构可用如下形式来表示。一条指令应该包含如下信息: 操作码 :操作码具体规定了操作的性质及功能。 一个包含n位操作码的指令格式最多能够表示2n条指令。 5.1.2 5.1.2 指令格式指令格式 地址码:指出操作数的存储地址,CPU通过这个地址取得操作数。根据地址码的不同,就有不同的指令格式。 操作结果的存放地址. 下一条要执行的指令的地址. 5.1.2 5.1.2 指令格式指令格式指令格式 根据地址码所给出的地址的个数(操作数的个数),可以把指令格式分成零地址指令、一地址指令、二地址指令、三地址指令和多地址指令(或称几操作数指令)。 零地址指令格式:这类指令只有操作码而无操作数,通常也
55、叫无操作数指令。 5.1.2 5.1.2 指令格式指令格式 一地址指令格式:OP Code表示操作码,A表示操作数的存储器地址或寄存器名。 5.1.2 5.1.2 指令格式指令格式 二地址指令格式: OP Code表示操作码,A1表示源操作数的存储器地址或寄存器名(或目的操作数的存储器地址或寄存器名),A2表示目的操作数的存储器地址或寄存器名(或源操作数的存储器地址或寄存器名)。 这类指令有两个操作数地址,是最常用的指令格式。 5.1.2 5.1.2 指令格式指令格式 三地址指令格式: OP Code表示操作码,A1表示第一个操作数的存储器地址或寄存器名,A2表示第二个操作数的存储器地址或寄存
56、器名,A3表示操作结果的存储地址。 这类指令有三个操作数地址,操作后A1、A2中的操作数均保持原来数据,操作结果存入A3中。这类指令用于字长较长的大、中型机中。 5.1.2 5.1.2 指令格式指令格式 多地址指令 这类指令有3个以上的操作数地址,指令码长,在某些性能较好的大、中型机以及高档小型机中采用,如字符串处理指令、向量、矩阵运算指令等。 一般说来,零地址指令、一地址指令和二地址指令的指令码长短,具有所需存储空间少,执行速度快,硬件实现简单等优点,为结构简单的微、小型机所采用;在字长较长、功能较强的大、中型机中除采用零地址指令、一地址指令和二地址指令外,也使用三地址指令和多地址指令。 5
57、.1.2 5.1.2 指令格式指令格式 在计算机中,指令和数据都是以二进制码的形式存储的,机器是如何区分和判别呢? 以具有典型指令系统意义的PDP-11系列小型机的指令系统为例说明,这是一种定长指令、变长操作码、双地址指令系统,指令长度为16位,具有多种不同的指令格式。 5.1.3 5.1.3 指令格式举例指令格式举例 5.1.3 5.1.3 指令格式举例指令格式举例固定格式 操作码的长度是固定的,且集中放在指令字的某一个字段中。这种格式的优点是简化硬件设计,减少指令的译码时间,但操作码的平均长度长,需要指令字长长。一般在字长较长的大中型机以及超级小型机上使用。 若某机器的操作码长度为n位,在
58、固定格式下,它最多只能编制2n条不同的指令。5.1.4 5.1.4 指令操作码的编码格式指令操作码的编码格式可变格式 操作码的长度可变,且分散地放在指令字的不同字段中。 优点是可压缩操作码的平均长度,控制器的设计相对较为复杂,指令的译码时间也较长。一般在字长较短的微小型机上广为采用。 可变格式的指令操作码编码格式,通常是在指令字中用一个固定长度的字段来表示基本操作码,而对于一部分不需要某个地址码的指令,把它们的操作码扩充到该地址字段中去,以能表示更多的指令。 5.1.4 5.1.4 指令操作码的编码格式指令操作码的编码格式 如某机器的指令长度为16位,以4位为1个字段,分成4个字段,一个4位的
59、操作码字段,3个4位的地址码字段,其指令格式为: 用可变格式编码,要表示15条三地址指令,15条二地址指令,15条一地址指令和16条零地址指令,共表示61条指令,则可以如下安排: 可变格式的指令操作码编码格式可变格式的指令操作码编码格式举例举例三地址指令15条:其操作码由4位基本操作码的00001110给出,剩下的一个编码1111用于把操作码扩展到A1字段。二地址指令15条:操作码扩展到A1字段,则操作码有8位,可从1111000011111111,用1111000011111110作为15条二地址指令的操作码,剩下的一个编码11111111用于把操作码扩展到A2字段。 可变格式的指令操作码编
60、码格式可变格式的指令操作码编码格式举例举例一地址指令15条:操作码扩展到A2字段,则操作码有12位,可从111111110000111111111111,用111111110000111111111110作为15条一地址指令的操作码,剩下的一个编码111111111111用于把操作码扩展到A3字段。零地址指令16条:操作码扩展到整个指令字,则操作码有16位,可从11111111111100001111111111111111。 可变格式的指令操作码编码格式可变格式的指令操作码编码格式举例举例 使用频度高的指令应分配短的操作码,使用频度低的指令相应分配较长的操作码。这样不仅可以有效地缩短操作码在
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2012年7月国开电大专科《办公室管理》期末纸质考试试题及答案
- 2026年中国铝钢管件行业市场前景预测及投资价值评估分析报告
- 2026年中国真空泵行业市场专项调研及投资前景可行性预测报告
- 2025年华能庆阳煤电核桃峪煤矿面向社会招聘生产性灵活用工179人笔试考试备考试题及答案解析
- 2026福建省宁德市蕉城区消防大队招聘笔试考试参考试题及答案解析
- 子宫颈癌的预防与治疗课件
- (统编2024版)道德与法治八年级上册第三单元 走进社会生活 大单元教学设计
- 外科普外科创面护理常规流程
- 超声科腹部超声引导抽穿术技术要点
- 2025年生前医疗护理生后事合同模板
- 大学生机器人工程专业职业生涯规划书
- 2025商业大厦租赁合同范本
- 脑梗死中医诊疗方案
- 知识产权对新质生产力的法制保护
- 《中国海军的发展史》课件
- 货车封条管理制度内容
- 【绘本】小猫钓鱼故事儿童故事-课件(共11张课件)
- 安全课《保护鼻子》
- “正大杯”第十五届全国大学生市场调查与分析大赛参考试题库(含答案)
- 河南省周口市郸城县2024-2025学年九年级上学期期中化学试卷
- 电力输电线路施工安全培训
评论
0/150
提交评论