前缀编码法¶
计组的变长操作码划分¶
- 某指令系统指令字长 16 位,操作码字段为 4 位,地址码字段为 4 位,采用扩展操作码技术,形成三地址指令 15 条、二地址指令 15 条、一地址指令 15 条、零地址指令 16 条。
指令格式如下:
| OP | A1 | A2 | A3 |
|---|---|---|---|
| 4位 | 4位 | 4位 | 4位 |
其所对应的前缀哈夫曼树如图:

| 指令 | OP | A1 | A2 | A3 |
|---|---|---|---|---|
| 15条三地址指令 | 0000 | A1 | A2 | A3 |
| 0001 | A1 | A2 | A3 | |
| ........ | ||||
| 1110 | A1 | A2 | A3 | |
| 15条二地址指令 | 1111 | 0000 | A2 | A3 |
| 1111 | 0001 | A2 | A3 | |
| ....... | ||||
| 1111 | 1110 | A2 | A3 | |
| 15条一地址指令 | 1111 | 1111 | 0000 | A3 |
| 1111 | 1111 | 0001 | A3 | |
| ........ | ||||
| 1111 | 1111 | 1110 | A3 | |
| 16条零地址指令 | 1111 | 1111 | 1111 | 0000 |
| 1111 | 1111 | 1111 | 0000 | |
| ....... | ||||
| 1111 | 1111 | 1111 |
- 某指令系统指令长 16 位,操作码字段为 4 位,地址码字段为 4 位,采用扩展操作码技术,形成三地址指令 15 条、二地址指令 12 条、一地址指令 63 条,则最多还可定义多少条零地址指令?
解:指令格式如下:
| OP | A1 | A2 | A3 |
|---|---|---|---|
| 4位 | 4位 | 4位 | 4位 |

- 某指令系统指令长 16 位,地址码字段为 6 位,采用扩展操作码技术,如果已定义了 12 条二地址指令,则最多还可定义多少条一地址指令?
解:指令格式如下:
| OP | A1 | A2 |
|---|---|---|
| 4位 | 6位 | 6位 |

所以最多还可定义\(4 \times 2^6 = 256\)条一地址指令。
- 某指令系统指令长 32 位,地址码字段为 12 位,采用扩展操作码技术,如果已定义了 250 条二地址指令,则最多还可定义多少条一地址指令?
【解】指令格式如下:
| OP | A1 | A2 |
|---|---|---|
| 8位 | 12位 | 12位 |

所以最多还可定义\(6 \times 2^{12} = 24K\)条一地址指令。
- (2022 年统考真题)设计某指令系统时,假设采用 16 位定长指令字格式,操作码使用扩展编码方式,地址码为 6 位,包含零地址、一地址和二地址 3 种格式的指令。若二地址指令有 12 条,一地址指令有 254 条,则零地址指令的条数最多为( )。
A. 0
B. 2
C. 64
D. 128
解:指令格式如下:
| OP | A1 | A2 |
|---|---|---|
| 4位 | 6位 | 6位 |

所以最多还可定义\(2 \times 2^6 = 128\)条零地址指令,本题选 D。
- (2017 年统考真题)某计算机按字节编址,指令字长固定且只有两种指令格式,其中三地址指令 29 条,二地址指令 107 条,每个地址字段为 6 位,则指令字长至少应该是( )
A. 24 位
B. 26 位
C. 28 位
D. 32 位
【解】三地址指令条数满足\(29 < 2^5 = 32\),因此推断操作码字段 OP 至少为 5 位,指令格式可能如下:
| OP | A1 | A2 | A3 |
|---|---|---|---|
| 5位 | 6位 | 6位 | 6位 |
所以指令字长至少有\(5 + 3 \times 6 = 23\)位,又因为计算机按字节编址,所以取成 24 位即 3 字节,本题选 A。