第二章
5.分别写出下列十进制数的原码、反码和补码。
7/16,5/16,4/16,1/16,0,-1/16,-4/16,-5/16,-7/16 答: 原码 反码 补码
7/16 0.0111 0.0111 0.0111 5/16 0.0101 0.0101 0.0101 4/16 0.0100 0.0100 0.0100 1/16 0.0001 0.0001 0.0001 +0 0.0000 0.0000 0.0000 -0 1.0000
1.1111 0.0000
-1/16 1.0001 1.1110 1.1111 -4/16 1.0100 1.1011 1.1100 -5/16 1.0101 1.1010 1.1011 -7/16 1.0111 1.1000 1.1001 7.已知下列数的补码表示,请写出它们的真值。
[x]补=0.10100 [x]补=1.0111 [x]补=1.0000
答:二进制真值分别为:0.101,-0.1001,-1。
10.若机器字长16位,以下几种情况能表示的数据范围是多少?
1)无符号整数 2)原码定点小数 3)补码定点小数 4)原码定点整数 5)补码定点整数
答:1)无符号整数 0~2-1 2)原码定点小数 -(1-2 ) ~ 1-2 3)补码定点小数 -1~ 1-2
15
-15
16
-15
-15
4)原码定点整数 -(2-1) ~ 2-1
1515
5)补码定点整数 -2 ~ 2-1
14.将下列数转换为IEEE单精度浮点数:
1)28.75
解:1)十进制数28.75转化为二进制数:11100.11B,规格化为11100.11=1.110011×2 该数为正,符号位=0;移码表示的阶码=10000011;尾数=110 0110 0000 0000 0000 0000 以短浮点数格式存储该数为0,10000011, 110 0110 0000 0000 0000 0000=41E60000H 21.某循环冗余校验码的生成多项式为x+x+1,若发送信息位 1111 和 1100,则CRC 码分别为什么?接收端收到的CRC 码:0000000、1001111、0010111、1011000中哪些是发生了错误的?
答:A(x)=1111 和1100 左移r=3位后A(x)·x=1111000 和1100000
3
3
2
4
15
g(x)= x+x+1=1101 (r+1=4位)
32
A(x)·x/g(x)=1011+111/1101 和1001+101/1101 A(x)·x+R(x)=1111111 和1100101-----这就是2个CRC码 接收到的CRC 码除以生成多项式余数不为0的出错:1001111、1011000。 第三章
9.用原码一位乘法和原码两位乘法分别计算X×Y :
a. X= -0.11011, Y=0.11101
解:a原码一位乘 |X|=00.11011→寄存器B,|Y|=0.11101→寄存器C,0→寄存器A。
部分积A 乘数C 运算过程
00.00000 1 1 1 0 1 C5 = 1,+ |X|
+
→
00.11011 00.11011 00.01101 00.00000 00.01101 00.00110 00.11011 01.00001 00.10000 00.11011 01.01011 00.10101 00.11011 01.10000 00.11000 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1
部分积右移一位 C4 = 0,+0
部分积右移一位 C3 =1,+ |X|
部分积右移一位 C2 = 1,+ |X|
部分积右移一位 C1 = 1,+ |X|
部分积右移一位
33
+
→ +
→ + +
→ →
1 1 1 1 1 0 1 1 1 1 由于两数异号,所以得X×Y = -0.1100001111
10.用补码一位乘法和补码两位乘法分别计算X×Y :
a. X= -0.11011, Y=0.11101
a 补码一位乘 部分积0→寄存器A,[X]补=11.00101→寄存器B,[Y]补=0.11101→寄存器C。用Booth法求解过程如下:
附加位 说明 部分积A 乘数 C
0. 1 1 1 0 1 0 00.00000 C5C6 = 10,+[-X]补
+ [-X]补 00.11011
→ →
00.11011 00.01101 1 11.00101 11.10010 11.11001 0 0 1 1 1 0 1 1 0 1 1 1 0
右移一位 C5C6 = 01,+[X]补 右移一位 C5C6 = 10,+[-X]补
+ [X]补
+ [-X]补 00.11011
00.10100
→ → →
00.01010 0 00.00000 00.01010 00.00101 0 00.00000 00.00101 00.00010 1 11.00101 1 11.00111
+ 0
0 1 0 1 1 1 0 0 1 0 1 1 0 0 0 1 0 1 0 0 0 1
右移一位 C5C6= 11,+0 右移一位 C5C6 = 11,+0 右移一位 C5C6 = 01,+[X]补
最后一步不移位
+ 0
+ [X]补
所以[X×Y]补=11.0011110010,X×Y =-0.1100001111
12 用原码加减交替法和补码加减交替法计算X÷Y。a.X= -0.1001 Y=0.1101 解:a 加减交替法 |X|=00.1001,|Y|= 00.1101,|Y|变补 = 11.0011
被除数/部分余数A 商C 说明 0 0.1 0 0 1 0 0 0 00 -|Y| +|Y|变补 1 1.0 0 1 1
← +|Y| ← +|Y|变补 ← +|Y| ← +|Y|变补 1 1.1 1 0 0 1 1.1 0 0 0 0 0.1 1 0 1 0 0.0 1 0 1 0 0.1 0 1 0 1 1.0 0 1 1 1 1.1 1 0 1 1 1.1 0 1 0 0 0.1 1 0 1 0 0.0 1 1 1 0 0.1 1 1 0 1 1.0 0 1 1 0 0.0 0 0 1 0 0.0 0 0 1 0 0 0 00 余数<0,商0,左移一位 0 0 0 00 +|Y|
0 0 0 01 余数>0,商1,左移一位 0 0 0 10 -|Y|
0 0 0 10 余数<0,商0,左移一位 0 0 1 00 +|Y|
0 0 1 0 1 余数>0,商1,左移一位 0 1 0 1 0 -|Y|
0 1 0 1 1 余数>0,商1
-4
所以商Q= -0.1011,余数r=-0. 0001×2。
a 补码加减交替法 [X]补=11.0111,[Y]补=00.1101,[-Y]补 =11.0011 被除数/余数A 商C 说明 1 1.0 1 1 1 0 0 0 00 [X]补和[Y]补异号,加除数 +[Y]补 0 0.1 1 0 1 0 0.0 1 0 0 ← 0 0.1 0 0 0 +[-Y]补 1 1.0 0 1 1 ← +[Y]补
1 1.1 0 1 1 1 1.0 1 1 0 0 0.1 1 0 1
0 0 0 01 0 0 0 10 0 0 0 10 0 0 1 00 余数和除数同号,商1 ,左移一位 下次减除数
余数和除数异号,商0 左移一位,下次加除数
0 0.0 0 1 1 ← 0 0.0 1 1 0 +[-Y]补 1 1.0 0 1 1 ← +[Y]补
1 1.1 0 0 1 1 1.0 0 1 0 0 0.1 1 0 1
0 0 1 01 0 1 0 10 0 1 0 1 0 1 0 1 0 0
余数和除数同号,商1 左移一位,下次减除数
余数和除数异号,商0 左移一位,下次加除数
1 1.1 1 1 1 ← 1 1.1 1 1 1 1 0 1 0 1 末尾恒置1
-4
商[Q]补= 1.0101,余数[r]补 = 11.1111×2。 第四章
12.某机器的16位单字长访内指令的格式如下:
4 操作码 2 Mode 1 @ 1 I 8 D 其中,D为立即数或形式地址,补码表示;Mode为寻址模式,0表示立即寻址,1表示直接寻址,2表示基地址寻址,3表示相对寻址;@为间址标志,@=1表示间接寻址,@=0表示直接寻址;I为变址标志,I=1表示变址寻址,I=0表示非变址寻址。
设PC、Rx、Rb分别为指令计数器、变址寄存器、基址寄存器,EA为有效地址,试解答下列问题:
(1)该指令格式能定义多少种不同的操作?
(2)试写出立即寻址、直接寻址、基址寻址、变址寻址、相对寻址方式中计算有效地址EA的表达式。
(3)设基址寄存器为16位,在基址寻址时,可寻址的主存地址范围是多少?
(4)间接寻址时,可寻址的主存地址范围是多少?若采用多重间址,可寻址的主存地址范围又是多少?
4
解:(1)2=16。
(2)立即寻址:无EA
直接寻址:EA=D;D为指令中给出偏移量 基址寻址:EA=(Rb)+D; 变址寻址:EA=(Rx)+D;
相对寻址:EA=(PC)+D;PC为程序计数器,D为偏移量
16
(3)0~2-1
16
(4)间接寻址可寻址的主存地址范围为0~2-1,多重间址可寻址的主存地址范围为15
0~2-1。
13.某机的指令格式如下:
15 10 9 8 7 0
操作码 Mode D 其中,D为立即数或形式地址,补码表示;Mode为寻址模式,0表示直接寻址,1表示用变址寄存器Rx1进行寻址,2表示用变址寄存器Rx2进行寻址,3表示相对寻址。若已知(PC)=1000H, Rx1=0005H,Rx2=1005H,请计算出下列指令的有效地址:
①8442H ②4545H 解:①8442H=1000 0100 0100 0010
因为Mode=0,所以为直接寻址,EA=D=0042H ②4545H=0100 0101 0100 0101
因为Mode=1,所以用变址寄存器Rx1寻址,EA=(Rx1)+D=0005H+45H=004AH
16.某机字长32位,CPU的寻址范围为1MB,14个通用寄存器,共30条单字长双地址指令,要求有立即、直接、间接、寄存器、基址、相对寻址方式。试设计其指令格式。
答:14个通用寄存器需要4位来表示,30条单字长指令需要5位来表示,7种寻址方式需要3位来表示,剩下的20位用来表示操作数。
指令格式为:5位操作码+3位寻址方式设置+4位寄存器操作数+20存储器操作数
第五章
9.用16K×1位的DRAM芯片组成64K×8位的存储器,要求: (1)画出该存储器组成的逻辑图。
(2)设存储器读、写周期均为0.5μs,CPU在1μs内至少要访存一次。试问采用哪种刷新方式比较合适?两次刷新的最大时间间隔是多少?
答:由题意知,存储器的总容量为64KB,故共需16条地址线(A0~A15),需要16K×1位DRAM芯片的个数为:(64K×8位)/(16K×1位)=32片,芯片地址线占14位(A0~A13),高2位的地址线(A14~A15)作为2:4译码器的输入端,4个输出端分别与4个DRAM芯片的片选信号端相连接。其组成逻辑框图如下:
由已知条件可知,CPU在1μs内至少访存一次,故整个存储器的平均读/写周期与单个DRAM芯片的读/写周期基本相同,采用异步式刷新方式较合适。动态MOS存储器两次刷新的最大时间间隔为2ms/128=15.625us,应该取15.5us比较合适(取存取周期的整数倍)。
16. 某存储器容量为16M字,字长32位,模块数m=4,分别用顺序方式和交叉方式进行组
织。若存取周期T=200ns,数据总线宽度为32位,总线传送周期 τ=40ns。问:顺序存储器和交叉存储器的平均存取时间、带宽各是多少?
答:顺序存储器和交叉存储器连续读出4个字的信息总量都是:q=32位×4=128位
-7
顺序存储器连续读出4个字所需的时间是:t1=m×T=4×200ns=800ns=8×10s;
计算机组成原理-郑秋梅_习题



