0%

计算机组成原理——第5章习题

5.2

  1. A
    三地址指令29条,需要18位作为地址和至少5位作为地址码。二地址指令107条,需要12位作为地址和至少7位作为地址码。指令字长至少应该是24(按照字节编址)
  2. A
    寄存器直接寻址需要4位寄存器标号,基址寻址也需要4位寄存器标号,剩余16位可用于表示偏移量,使用补码表示则范围为-32768~32767。
  3. A
    16位定长指令,48条指令至少需要6位指令码,4种寻址方式需要2位标识,剩余8位可寻址范围为0~255。
  4. C
  5. C
  6. A
  7. D
  8. D
  9. D
    注意本题为大端序,LSB位于高地址处。
  10. B
  11. C
    无符号整数大于则ZF=0,CF=0。
  12. A

5.3

  1. 指令是用户使用计算机与计算机本身运行的基本功能单位。指令系统是计算机系统性能的几种体现,是计算机软、硬件的设计基础。
  2. 计算机设计多种操作数寻址方式是为了提升寻址的灵活性,同时可以在一定程度上减少地址寻址所使用的指令位数。
  3. 作为寻址方式字段给出。
  4. 基址寻址面向系统,用于程序的重定位和扩展程序空间。变址寻址面向用户,主要解决程序循环问题。二者在计算有效地址的方式上相似,但基址寄存器的基址值一般不变且形式地址表示的偏移量位数较短,偏移范围较小;而变址寄存器的值可以改变,偏移量位数足以表示整个存储空间。
  5. 定长指令便于机器解码执行,结构规整,有利于设计硬件,但不容易扩展。变长指令灵活,但不易解码。
  6. 指令的地址码指的是指令中用于寻址的地址值,通常指定操作数的地址,地址码的字段的作用随着指令类型和寻址方式的不同而不同。指令中的操作码用于区分不同功能的指令,标识指令的种类。

5.4

  1. 立即数
  2. 直接
  3. 寄存器
  4. 寄存器间接

注:寻址方式区分技巧
需要两次找其他值的是间接。间接寻址指的是操作数地址的地址在主存,寄存器间接寻址指的是操作数地址在寄存器,前一个需要两次访问主存,后一个需要首先访问寄存器再访问主存。

5.5

  1. 操作数地址码由寻址方式字段和寄存器号字段组成。16个通用寄存器需要4位标识,8种寻址方式需要3位标识,剩余字段数量为9位,故单操作数指令最多为512条。
  2. 4条。
  3. 0~7,对于直接寻址,应该是使用寻址方式这3位来寻址。
  4. 变址寻址考虑到寄存器16位,因此寻址范围为216个字即64KW。

5.6

  1. 若操作码字段不固定,已经设计出m条双操作数指令,n条无操作数指令。对于双操作数指令,有4位可用于标识指令码,现在已经设计了m条,还剩下16-m种前4位的组合可以用于单操作数指令和无操作数指令。对于单操作数指令,有10位可用于标识指令码,去除前4位,不管无操作数指令,可知单操作数指令对于指令前10位一共有(16-m)×64种组合可用。还需要考虑到无操作数指令,无操作数指令全部16位都可以用于标识指令码,则前10位的一种组合可设计64条无操作数指令,那么n条无操作数指令一共需要占用单操作数指令前10位组合中的n64\lceil\frac{n}{64}\rceil种组合,故单操作数指令一共可以设计(16m)×64n64(16-m)\times 64-\lceil\frac{n}{64}\rceil条。
  2. 双操作数指令取最大数为15,因为要留出一种前4位的组合给单操作数指令和无操作数指令,单操作数指令取最大数为63,因为要留出一种前10位的组合给无操作数指令。此时无操作数指令最多只能设计64条。

5.7

  1. 290-256-3=31,转移指令第二个字节为0x1F,第三个字节为0。
  2. 110-128-3=-31,转移指令第二个字节为0xE1,第三个字节为0xFF。

5.8

  1. 4420H=0100 0100 0010 0000=010001 00 00100000,寻址方式为直接寻址,形式地址为0x20,有效地址为0x20。
  2. 2244H=0010 0010 0100 0100=001000 10 01000100,寻址方式为变址寄存器X2变址,形式地址为0x44,有效地址为0x1122+0x44=0x1166。
  3. 1322H=0001 0011 0010 0010=000100 11 00100010,寻址方式为相对寻址,形式地址为0x22,有效地址为0x1234+2+0x22=0x1258。
  4. 3521H=0011 0101 0010 0001=001101 01 00100001,寻址方式为变址寄存器X1变址,形式地址为0x21,有效地址为0x37+0x21=0x58。

5.9

  1. 增加的32条指令中的前6位不能与原来的60条指令中的任意一条的前6位相等,否则会冲突,因此这32条指令的前6位只有4种可能的值,每一种可能的值需要设计8条指令,因此扩展操作码总共9位,这32条指令的操作码为111100000~111111111。
  2. 平均长度为(60×6+32×9)/92≈7.04。

5.10

add $s0, $a1, $t7。

5.11

5.12

  1. 最多有16条指令,该计算机最多有8个通用寄存器。
  2. 16位,因为主存空间128KB,含64KW。
  3. 0~216-1
  4. 0010 0011 0001 0101=2315H。

5.13