[x1]原=0.000 0110(10);产生误差 [x2]原=1.001 1010;正确
[x3]原=1.000 0110(01);产生误差 [y1]补=0.001 0101;正确 [y2]补=1.111 1010;正确
[y3]补=1.110 0110(01);产生误差 [z1]反=1.110 1011;正确
[z2]反=1.111 1010(00);产生误差 [z3]反=1.110 0110(01);产生误差
19. 设机器数字长为8位(含1位符号位),用补码运算规则计算下列各题。
(1)A=9/64, B=-13/32,求A+B。 (2)A=19/32,B=-17/128,求A-B。 (3)A=-3/16,B=9/32,求A+B。 (4)A=-87,B=53,求A-B。 (5)A=115,B=-24,求A+B。
解:(1)A=9/64= 0.001 0010B, B= -13/32= -0.011 0100B [A]补=0.001 0010, [B]补=1.100 1100
[A+B]补= 0.0010010 + 1.1001100 = 1.1011110 ——无溢出 A+B= -0.010 0010B = -17/64
(2)A=19/32= 0.100 1100B, B= -17/128= -0.001 0001B
[A]补=0.100 1100, [B]补=1.110 1111 , [-B]补=0.001 0001
[A-B]补= 0.1001100 + 0.0010001= 0.1011101 ——无溢出 A-B= 0.101 1101B = 93/128B
(3)A= -3/16= -0.001 1000B, B=9/32= 0.010 0100B [A]补=1.110 1000, [B]补= 0.010 0100
[A+B]补= 1.1101000 + 0.0100100 = 0.0001100 —— 无溢出 A+B= 0.000 1100B = 3/32
(4) A= -87= -101 0111B, B=53=110 101B
[A]补=1 010 1001, [B]补=0 011 0101, [-B]补=1 100 1011
[A-B]补= 1 0101001 + 1 1001011 = 0 1110100 —— 溢出 (5)A=115= 111 0011B, B= -24= -11 000B [A]补=0 1110011, [B]补=1,110 1000
[A+B]补= 0 1110011 + 1 1101000 = 0 1011011——无溢出 A+B= 101 1011B = 91
26.按机器补码浮点运算步骤,计算[x±y]补. (1)x=2 (2)x=2
-011-011101
× 0.101 100,y=2
-010
×(-0.011 100);
-010
×(-0.100 010),y=2×(-0.011 111);
(3)x=2×(-0.100 101),y=2×(-0.001 111)。 解:先将x、y转换成机器数形式: (1)x=2
-011
100
× 0.101 100,y=2
-010
×(-0.011 100)
[x]补=1,101;0.101 100, [y]补=1,110;1.100 100
[Ex]补=1,101, [y]补=1,110, [Mx]补=0.101 100, [My]补=1.100 100
1)对阶:
[?E]补=[Ex]补+[-Ey]补 = 11,101+ 00,010=11,111 < 0,
应Ex向Ey对齐,则:[Ex]补+1=11,101+00,001=11,110 = [Ey]补 [x]补=1,110;0.010 110 2)尾数运算:
[Mx]补+[My]补= 0.010 110 + 11.100 100=11.111010
[Mx]补+[-My]补=0.010 110 + 00.011100= 00.110 010 3)结果规格化:
[x+y]补=11,110;11.111 010 = 11,011;11.010 000 (尾数左规3次,阶码减3) [x-y]补=11,110;00.110 010, 已是规格化数。 4)舍入:无 5)溢出:无 则:x+y=2
(2)x=2
-011
-101
×(-0.110 000) ×0.110 010
010
x-y =2
-010
×(-0.100010),y=2-×(-0.011111)
[x]补=1,101;1.011 110, [y]补=1,110;1.100 001
1) 对阶:过程同(1)的1),则 [x]补=1,110;1.101 111 2)尾数运算:
[Mx]补+[My]补= 11.101111 + 11. 100001 = 11.010000 [Mx]补+[-My]补= 11.101111 + 00.011111 = 00.001110
3)结果规格化:
[x+y]补=11,110;11.010 000,已是规格化数
[x-y]补=11,110;00.001 110 =11,100;00.111000 (尾数左规2次,阶码减2) 4)舍入:无 5)溢出:无 则:x+y=2
(3)x=2×(-0.100 101),y=2×(-0.001 111) [x]补=0,101;1.011 011, [y]补=0,100;1.110 001
1)对阶:
[?E]补=00,101+11,100=00,001 >0,应Ey向Ex对齐,则: [Ey]补+1=00,100+00,001=00,101=[Ex]补 [y]补=0,101;1.111 000(1) 2)尾数运算:
[Mx]补+[My]补= 11.011011+ 11.111000(1)= 11.010011(1) [Mx]补+[-My]补= 11.011011+ 00.000111(1)= 11.100010(1) 2) 结果规格化:
[x+y]补=00,101;11.010 011(1),已是规格化数
[x-y]补=00,101;11.100 010(1)=00,100;11.000 101 (尾数左规1次,阶码减
1)
4)舍入:
101
100
-010
×(-0.110 000) ×0.111 000
x-y =2
-100
[x+y]补=00,101;11.010 011(舍) [x-y]补 不变 5)溢出:无
则:x+y=2×(-0.101 101)
x-y =2×(-0.111 011)
32. 设机器字长为16位,分别按4、4、4、4和5、5、3、3分组后,
(1)画出按两种分组方案的单重分组并行进位链框图,并比较哪种方案运算速度快。 (2)画出按两种分组方案的双重分组并行进位链框图,并对这两种方案进行比较。 (3)用74181和74182画出单重和双重分组的并行进位链框图。
解:(1)4—4—4—4分组的16位单重分组并行进位链框图见教材286页图6.22。
5—5—3—3分组的16位单重分组并行进位链框图如下:
(2)4—4—4—4分组的16位双重分组并行进位链框图见教材289页图6.26。 5—5—3—3分组的16位双重分组并行进位链框图如下:
5—5—3—3分组的进位时间=2.5ty?3=7.5ty; 4—4—4—4分组的进位时间=2.5ty?3=7.5ty; 可见,两种分组方案最长加法时间相同。
结论:双重分组并行进位的最长进位时间只与组数和级数有关,与组内位数无关。 (3)单重分组16位并行加法器逻辑图如下(正逻辑):
注意: 1)74181芯片正、负逻辑的引脚表示方法;
2)为强调可比性,5-5-3-3分组时不考虑扇入影响;
3)181芯片只有最高、最低两个进位输入/输出端,组内进位无引脚; 4)181为4位片,无法5-5-3-3分组,只能4-4-4-4分组;
5)单重分组跳跃进位只用到181,使用182的一定是双重以上分组跳跃进位; 6)单重分组跳跃进位是并行进位和串行进位技术的结合;双重分组跳跃进位是二级
并行进位技术;特别注意在位数较少时,双重分组跳跃进位可以采用全先行进位技术实现;位数较多时,可采用双重分组跳跃进位和串行进位技术结合实现。
100101
第 七 章
1. 什么叫机器指令?什么叫指令系统?为什么说指令系统与机器的主要功能以及与硬件结构之间存在着密切的关系? 答:参考P300。
2. 什么叫寻址方式?为什么要学习寻址方式? 答:参看P310。
3. 什么是指令字长、机器字长和存储字长? 答:略。
4. 零地址指令的操作数来自哪里??各举一例说明。 答:零地址指令的操作数来自ACC,为隐含约定。
在一地址指令中,另一个操作数的地址通常可采用ACC隐含寻址方式获得。
5. 对于二地址指令而言,操作数的物理地址可安排在什么地方?举例说明。
答:对于二地址指令而言,操作数的物理地址可安排在寄存器内、指令中或内存单元内等。
8. 某机指令字长16位,每个操作数的地址码为6位,设操作码长度固定,指令分为零地址、一地址和二地址三种格式。若零地址指令有M条,一地址指令有N种,则二地址指令最多有几种?若操作码位数可变,则二地址指令最多允许有几种? 解:1)若采用定长操作码时,二地址指令格式如下:
OP(4位) A1(6位) 4A2(6位) 设二地址指令有K种,则:K=2-M-N
当M=1(最小值),N=1(最小值)时,二地址指令最多有:Kmax=16-1-1=14种 3) 若采用变长操作码时,二地址指令格式仍如1)所示,但操作码长度可随地址码的
个数而变。此时,K= 2 -(N/2 + M/2 );
当(N/2 + M/2 )?1时(N/2 + M/2 向上取整),K最大,则二地址指令最多有:
Kmax=16-1=15种(只留一种编码作扩展标志用。)
9. 试比较间接寻址和寄存器间接寻址。 答:略。
10. 试比较基址寻址和变址寻址。 略。
11. 画出先变址再间址及先间址再变址的寻址过程示意图。 解:1)先变址再间址寻址过程简单示意如下: EA=[(IX)+A],IX?(IX)+1
2)先间址再变址寻址过程简单示意如下:EA=(IX)+(A),IX? (IX)+1
16. 某机主存容量为4M?16位,且存储字长等于指令字长,若该机指令系统可完成108种操作,
6
12
6
12
4
6
12
操作码位数固定,且具有直接、间接、变址、基址、相对、立即等六种寻址方式,试回答:(1)画出一地址指令格式并指出各字段的作用; (2)该指令直接寻址的最大范围; (3)一次间址和多次间址的寻址范围; (4)立即数的范围(十进制表示); (5)相对寻址的位移量(十进制表示);
(6)上述六种寻址方式的指令哪一种执行时间最短?哪一种最长?为什么?哪一种便于程序浮动?哪一种最适合处理数组问题?
(7)如何修改指令格式,使指令的寻址范围可扩大到4M?
(8)为使一条转移指令能转移到主存的任一位置,可采取什么措施?简要说明之。 解:(1)单字长一地址指令格式:
OP(7位) M(3位) A(6位) OP为操作码字段,共7位,可反映108种操作; M为寻址方式字段,共3位,可反映6种寻址操作; A为地址码字段,共16-7-3=6位。 (2)直接寻址的最大范围为2=64。
(3)由于存储字长为16位,故一次间址的寻址范围为2;若多次间址,需用存储字的最高位来区别是否继续间接寻址,故寻址范围为2。
(4)立即数的范围为-32——31(有符号数),或0——63(无符号数)。 (5)相对寻址的位移量为-32——31。
(6)上述六种寻址方式中,因立即数由指令直接给出,故立即寻址的指令执行时间最短。间接寻址在指令的执行阶段要多次访存(一次间接寻址要两次访存,多次间接寻址要多次访存),故执行时间最长。变址寻址由于变址寄存器的内容由用户给定,而且在程序的执行过程中允许用户修改,而其形式地址始终不变,故变址寻址的指令便于用户编制处理数组问题的程序。相对寻址操作数的有效地址只与当前指令地址相差一定的位移量,与直接寻址相比,更有利于程序浮动。
(7)方案一:为使指令寻址范围可扩大到4M,需要有效地址22位,此时可将单字长一地址指令的格式改为双字长,如下图示:
OP(7位) MOD(3位) A(低16位) 方案二:如果仍采用单字长指令(16位)格式,为使指令寻址范围扩大到4M,可通过段寻址方案实现。安排如下:
硬件设段寄存器DS(16位),用来存放段地址。在完成指令寻址方式所规定的寻址操作后,得有效地址EA(6位),再由硬件自动完成段寻址,最后得22位物理地址。 即:物理地址=(DS)?2 + EA
注:段寻址方式由硬件隐含实现。在编程指定的寻址过程完成、EA产生之后由硬件自动
完成,对用户是透明的。
方案三:在采用单字长指令(16位)格式时,还可通过页面寻址方案使指令寻址范围扩
大到4M。安排如下:
硬件设页面寄存器PR(16位),用来存放页面地址。指令寻址方式中增设页面寻址。当需要使指令寻址范围扩大到4M时,编程选择页面寻址方式,则:EA =(PR)‖A (有效地址=页面地址“拼接”6位形式地址),这样得到22位有效地址。
(8)为使一条转移指令能转移到主存的任一位置,寻址范围须达到4M,除了采用(7) 方案一中的双字长一地址指令的格式外,还可配置22位的基址寄存器或22位的变址寄存器,使EA =
6
15
16
6
A(高6位)