计算机组成原理课后习题答案(常国锋 武汉大学出版社) 下载本文

页眉

9.以下列形式表示(5382)10 (1)8421码 (2)余3码 (3)2421码 (4)二进制数

10.求有效信息位为01101110的海明校验码。

第3章 习题参考答案

1 .指令长度和机器字长有什么关系? 半字长指令、单字长指令、双字长指令分别表示什么意思?

解:指令长度与机器字长没有固定的关系,指令长度可以等于机器字长,也可以大于或小于机器字长。通常,把指令长度等于机器字长的指令称为单字长指令;指令长度等于半个机器字长的指令称为半字长指令;指令长度等于两个机器字长的指令称为双字长指令。 2 .零地址指令的操作数来自哪里? 一地址指令中,另一个操作数的地址通常可采用什么寻址方式获得? 各举一例说明。

解:双操作数的零地址指令的操作数来自堆栈的栈顶和次栈顶。双操作数的一地址指令的另一个操作数通常可采用隐含寻址方式获得,即将另一操作数预先存放在累加器中。例如,

5 / 26

页眉 前述零地址和一地址的加法指令。

3 .举例说明哪几种寻址方式除去取指令以外不访问存储器? 哪几种寻址方式除去取指令外只需访问一次存储器? 完成什么样的指令,包括取指令在内共访问4 次存储器?

解:除去取指令以外不访问存储器:立即寻址,寄存器寻址。

除去取指令外只需访问一次存储器:直接寻址,寄存器间接寻址,变址寻址,基址寻址,相对寻址,页面寻址。二级间接寻址包括取指令在内共访问4 次存储器。

4.什么叫主程序和子程序? 调用子程序时还可采用哪几种方法保存返回地址? 画图说明调用子程序的过程。

解:主程序就是指通常的程序,而子程序是一组可以公用的指令序列,只要知道子程序的入口地址就能调用它。 保存返回地址的方法有多种:

(1) 用子程序的第一个字单元存放返回地址。转子指令把返回地址存放在子程序的第一个字单元中,子程序从第二个字单元开始执行。返回时将第一个字单元地址作为间接地址,采用间址方式返回主程序。

(2) 用寄存器存放返回地址。转子指令先把返回地址放到某一个寄存器中,再由子程序将寄存器中的内容转移到另一个安全的地方。 (3) 用堆栈保存返回地址。

调用子程序的过程如下图所示,此时返回地址保存在堆栈中。

5.某机为定长指令字结构,指令长度16 位;每个操作数的地址码长6 位,指令分为无操作数、单操作数和双操作数三类。若双操作数指令已有K 种,无操作数指令已有L种,问单操作数指令最多可能有多少种? 上述三类指令各自允许的最大指令条数是多少?

6 / 26

页眉

6.设某机为定长指令字结构,指令长度12 位,每个地址码占3 位,试提出一种分配方案,使该指令系统包含:4 条三地址指令,8 条二地址指令,180 条单地址指令。

7.指令格式同上题,能否构成:三地址指令4 条,单地址指令255条,零地址指令64 条? 为什么?

8.指令中地址码的位数与直接访问的主存容量和最小寻址单位有什么关系?

解:主存容量越大,所需的地址码位数就越长。对于相同容量来说,最小寻址单位越小,地址码的位数就越长。

7 / 26

页眉 9.设某机字长32 位,CPU 有32 个32 位的通用寄存器,设计一个能容纳64 种操作的单字长指令系统。

(1) 如果是存储器间接寻址方式的寄存器- 存储器型指令,能直接寻址的最大主存空间是多少?

(2) 如果采用通用寄存器作为基址寄存器,能直接寻址的最大主存空间又是多少?

解:因为计算机中共有64 条指令,所以操作码占6 位;32 个通用寄存器,寄存器编号占5 位;其余部分为地址码或标志位。

(1) 如果是存储器间接寻址方式的寄存器- 存储器型指令,操作码6位,寄存器编号5位,间址标志1 位,地址码20 位,直接寻址的最大主存空间是2

20

字。

(2) 如果采用通用寄存器作为基址寄存器,EA = (Rb ) + A ,能直接寻址的最大主存空间是2

32

字。

第4章 习题参考答案

1. 设[x]补=x0.x1x2x3x4,其中xi取0或1,若要使x>-0.5,则x0、x1、x2、x3、

x4的取值应满足什么条件?

答:应满足的条件是:①x0=0;②当x0=1时,x1=1且x2、x3、x4不全为0。

2. 若32位定点小数的最高位为符号位,用补码表示,则所能表示的最大正数为

1-2-31

,最小正数为

2-31

,最大负数为

-2-31,最小负数为

-1 ;若32位

,最小正数

定点整数的最高位为符号位,用原码表示,则所能表示的最大正数为 为1 ,最大负数为 -1 ,最小负数为 -(2

31

231-1 -1)

3. 若机器字长为32位,在浮点数据表示时阶符占1位,阶码值占7位,数符占1位,尾数值占23位,阶码用移码表示,尾数用原码表示,则该浮点数格式所能表示的最大正数为 为

(1-2-23)×2127

,最小正数为

2-151,最大负数为 -2-151 ,最小负数

-(1-2-23)×2127。

8 / 26