习题课补充例题与部分作业答案2.6第三章作业3.3略。注意手算乘法求和时越位进位。3.6见教材P37。注意真值负数以负号(-)表示解:部分积乘数说明0000001010+000000末位为0,加00000000000000101右移1位+001010末位为1,加X0010100001010010右移1位+000000末位为0,加00001010000101001右移1位+001010末位为1,加X0011000001100100右移1位+110110Y0=1,加[-X]修正11.11000100[X*Y]补=1.11000100X*Y=-0.001111003.18用补码一位乘法计算X=0.1010,Y=-0.0110的积X*Y。补码一位乘法,[X]补=00.1010,[-X]补=11.0110,[Y]补=1.1010解:部分积乘数附加位说明000000110100+00000000,加0000000000000011010右移1位+11011001,加[-X]补110110111011001101右移1位+00101010,加[X]补000101000010100110右移1位+11011001,加[-X]补111000111100010011右移1位+00000011,加01111000100[X*Y]补=1.11000100,X*Y=-0.001111003.18用补码一位乘法计算X=0.1010,Y=-0.0110的积X*Y。布斯法,[X]=00.1010,[-X]=11.0110,[Y]=1.10103.19X=-0.10110,Y=0.11111,用加减交替法原码一位除计算X/Y的商及余数。•解:|X|=00.10110|Y|=00.11111[-Y]补=11.00001被除数(余数)商操作说明00.10110000000开始情况+11.00001+[-Y]补11.10111000000不够减,商上011.01110000000左移1位+00.11111+|Y|00.01101000001够减商上100.11010000010左移+11.00001+[-Y]补11.11011000010不够减,商上011.10110000100左移+00.11111+[Y]补00.10101000101够减商上101.01010001010左移•被除数(余数)商操作说明01.01010001010左移+11.00001+[-Y]补00.01011001011够减商上100.10110010110左移+11.00001+[-Y]补11.10111010110不够减,商上0+00.11111余数是负则恢复余数+[Y]补00.10110注:余数为正则不用恢复余数余数商符号为1⊕0=1,既是负号故商值为-0.10110余数为-0.00000101103.20用原码两位乘法求X*Y。已知X=0.1011,Y=0.1101。方案选择,检查和纠正一位错,检查两位错。按照海明码校验位的条件:2r-1≥k+rk=8,可得r=5.25-1=16≥8+5=13设海明码为:H13…H1,数据位为D8…D1校验位为P5…P1.H13H12H11H10H9H8H7H6H5H4H3H2H1P5D8D7D6D5P4D4D3D2P3D1P2P1P1=D1⊕D2⊕D4⊕D5⊕D7P2=D1⊕D3⊕D4⊕D6⊕D7P3=D2⊕D3⊕D4⊕D8P4=D5⊕D6⊕D7⊕D8P5=D1⊕D2⊕D3⊕D4⊕D5⊕D6⊕D7⊕D8⊕P1⊕P2⊕P3⊕P43.27设有8位有效信息,编制海明校验线路,说明编码方法,分析所选方案有怎样的检错与纠错能力。若8位信息是01101101,海明码是多少?S1=P1⊕D1⊕D2⊕D4⊕D5⊕D7S2=P2⊕D1⊕D3⊕D4⊕D6⊕D7S3=P3⊕D2⊕D3⊕D4⊕D8S4=P4⊕D5⊕D6⊕D7⊕D8P5=D1⊕D2⊕D3⊕D4⊕D5⊕D6⊕D7⊕D8⊕P1⊕P2⊕P3⊕P4若8位信息位是01101101,海明码如下:P1=1⊕0⊕1⊕0⊕1=1P2=1⊕1⊕1⊕1⊕1=1P3=0⊕1⊕1⊕0=0P4=0⊕1⊕1⊕0=0P5=1⊕0⊕1⊕1⊕0⊕1⊕1⊕0⊕1⊕1⊕0⊕0=1H13H12H11H10H9H8H7H6H5H4H3H2H1P5D8D7D6D5P4D4D3D2P3D1P2P110110011001113.27设有8位有效信息,编制海明校验线路,说明编码方法,分析所选方案有怎样的检错与纠错能力。若8位信息是01101101,海明码是多少?第四章作业4.5有一个512K×16的存储器,由64K×1的2164RAM(芯片内是4个128×128结构),问:(1)总共需要多少个RAM芯片?总共需要:(512K×16)/(64K×1)=128(2)采用分散刷新方式,单元刷新间隔不超过2ms,则刷新信号的周期是多少?刷新时,2164中4个128×128矩阵同时刷新,所以每128行为单元的刷新次数,2ms内需要128个刷新周期,每个周期长:2ms/128=15.625μs4.6某机器中,已知地址空间为0000H…1FFFH的ROM区域,现在再用RAM芯片(8K×4)形成一个16K×8的RAM区域,起始地址为2000H,假设RAM有CS’和WE’控制端。CPU地址总线为A15…A0,数据总线为D7…D0,控制信号为R/W,MREQ’,要求画出逻辑图。解:1)地址空间分析:如果一个CPU的地址线是A15…A0,总地址空间为216,十六进制表示:0000H…FFFFH。ROM占用的地址空间为0000H…1FFFH,变为2进制:0000000000000000…0001111111111111空间的范围是213,就是23×210=8K的存储空间,CPU的地址线是D7…D0,8根,所以,ROM的容量是8K×8。2)芯片数量和字位扩展:由于从RAM芯片容量小于RAM区容量,需要字扩展;由于RAM芯片数据线4位,小于RAM区字长8,需要位扩展。一个芯片的容量是8K×4,RAM区的容量是16K×8,所以共需要芯片:(16K×8)/(8K×4)=4片。扩展方法:将2个RAM芯片重叠,构成一组(2片)8K×8容量的RAM芯片组,实现位扩展。将2组RAM芯片,译码选择每组芯片,构成16K×8的RAM区,实现字扩展。3)地址空间的分配芯片地址线是A12…A0,总地址空间为216。RAM区的容量是16K×8,RAM区的地址线是A13…A0,占用地址用十六进制表示:2000H…5FFFH=2000H…3FFFH(8KB)+4000H…5FFFH(8KB)译码最小单位确定,首先确定芯片的最小地址空间=A12…A0,为了今后扩充芯片的灵活性,将剩余的地址线全部参加译码,CPU地址线是A15…A0,减去芯片的地址线,剩余的地址线为A15、A14、A13,(如果剩余4根地址线,就采用4-16译码),采用3-8译码,所以将整个CPU的64KB(A15…A0)地址空间平均分割为8个8KB空间(8×8KB=64KB)。这样,每个芯片占用的地址空间如下:ROM芯片:0000H…1FFFH译码器输出:CS0#RAM(1#):2000H…3FFFFH译码器输出:CS1#RAM(2#):4000H…5FFFH译码器输出:CS2#空闲:6000H…FFFFH译码器输出:CS3#…CS7#4)连线图MREQ#A15A14A13A12…A0CPUD7…D0R/W#OE#译码器A15A14A13CS#ROM8K×8CS#RAM8K×4RAM8K×4CS#RAM8K×4RAM8K×4…CS0#CS1#CS2#CS7#4.12设某主存储器访问一次存储器的时间如下:传送地址1个时钟周期,读写4个时钟周期,数据传送1个时钟周期,采用下述3种主存结构读写16个字的数据块,各需要多少时钟周期?(1)单字宽主存,一次只能读写一个字;(2)4字宽主存,一次可读写4个字,但CPU与主存的数据传送宽度为1个字;(3)4体交叉存储器,每个存储体为单字宽。解:(1)顺序方式:单字宽主存,一次读/写1个字,只能采用串行方式进行读写,16个字所需时间为:(1+4+1)×16=96;(2)单体多字:4字宽主存,一次可读写4字,16个字需读写4次,但最后一次读出还需要增加3个时钟周期才能将数据送到CPU(前三次CPU收到四个返回数据中第一个就开始发下一次的地址。因此,对于前三次,收到的后三个数据传送时间与后面传送地址时钟周期、读写时钟周期重叠,不计算在总时间内):所需时间=4*6+3=27;(3)多体交叉:4体交叉存储器,每个存储体为单字宽:每个体访问4次,最后再加上3个时钟传送数据。总共需要6*4+3=27个时钟周期。(详见下图)最后一次地址到达模块三开始读写模块二开始读写模块一开始读写模块四开始读写模块一开始传输数据模块一数据传输结束,模块二开始传输数据模块一读写结束模块二读写结束模块三读写结束模块四读写结束模块二数据传输结束,模块三开始传输数据模块三数据传输结束,模块四开始传输数据模块四传输数据结束……第二十七时钟周期第二十四时钟周期第十九时钟周期图多体交叉存储器最后一次读写时序第五章作业5.2基址寄存器的内容为2000H,变址寄存器内容03A0H,指令的地址码部分是3FH,当前正在执行的指令所在地址为2B00H,请求出变址编址(考虑基址)和相对寻址两种情况的访问有效地址。解:1)变址编址:EA=2000H+03A0H+003FH=23DFH2)相对寻址:EA=2B00H+3FH=2B3FH补充,如果指令地址码部分是:8FHEA=2B00H+FF8FH=2A8FH5.3接上题。(1)设变址编址用于取指令,相对编址用于转移指令,存储器内存放的内容如下:地址内容003FH2300H2000H2400H203FH2500H233FH2600H23A0H2700H23DFH2800H2B00H063FH请写出从存储器中所取得的数据以及转移地址。解:变址编址:操作数=2800H相对寻址:转移地址=2B3FH5.3接上题。(2)若采用直接编址,请写出从存储器中取出的数。考虑基址寄存器:EA=2000H+03A0H操作数=(23A0H)=2700H不考虑基址寄存器:EA=03A0H操作数=(03A0H)=2300H5.8已知Pentium微处理器各段寄存器的内容如下:DS=0800H,CS=1800H,SS=4000H,ES=3000H。又disp字段的内容为2000H。请计算:(1)执行MOV指令,且已知为直接寻址,请计算有效地址。(2)IP(指令指针)的内容为1440,请计算出下一条指令的地址(假设顺序执行)。(3)今将某寄存器内容直接送入堆栈,请计算出接收数据的存储器地址。解:(1)有效地址=DS*10H+DISP=8000H+2000H=A000H(2)下一条指令的地址=CS*10H+1440+“1”=19441H(3)栈顶=SS*10H+SP-2=40000H+0000H-2=3FFFEH第六章作业6.1CPU结构如下图所示,其中有一个累加寄存器AC、一个状态条件寄存器和其他4个寄存器,各部分之间的连线表示数据通路,箭头表示信息传送方向。要求:(1)标明图中a、b、c、d这4个寄存器的名称。(2)简述指令从主存取出到产生控制信号的数据通路。(3)简述数据在运算器和主存之间进行存/取访问的数据通路。6.2设某计算机的运算控制器逻辑图6.6,控制信号见表6.1,指令格式如下:试写出下述三条指令的微操作信号。(1)JMP(无条件转移到(rs1)+disp)(2)load(从(rs1)+disp指示的内存单元取数,送rs保存)(3)store(把rs的内容送到(rs1)+disp指示的内存单元)2)计算地址微指令rs1-GR,(rs1)-ALU,disp-ALU,“+”ALU-PC解:(1)JMP(无条件转移到(rs1)+disp指定的地址)首先确定微指令条数,取指微指令,必不可少,而且必须是第一条微指令。接下来,需要