Appearance
题目
某计算机采用 16 位定长指令字格式,操作码位数和寻址方式位数固定,指令系统有 48 条指令,支持直接、间接、立即、相对 4 种寻址方式,单地址指令中直接寻址方式可寻址范围是( )。
错因
B
把形式地址算成 10 位(2¹⁰ = 1024,0~1023)。可能漏掉了寻址方式字段(2 位),把 16 - 6 = 10 位都给形式地址。但寻址方式 4 种 → 必须 2 位编码 → 形式地址只剩 8 位。
C
形式地址位数算对(8 位),但误当成有符号补码:8 位补码范围 -128~127。但直接寻址的形式地址通常是无符号的"主存绝对地址",范围 0~2ⁿ-1。补码形式只用于相对寻址这类需要前后跳的场景。
D
两个错叠加:① 形式地址算成 10 位 ② 当作有符号补码:10 位补码 -512~511。同时漏掉寻址字段 + 把直接寻址当相对寻址。
总解析
第一步:算操作码位数
48 条指令 → 至少需要 位(,)。
第二步:算寻址方式位数
4 种寻址方式 → 需要 位。
第三步:算单地址指令的形式地址位数
指令字总长 16 位 = 操作码 + 寻址方式 + 形式地址:
第四步:算直接寻址范围
直接寻址:形式地址就是主存绝对地址。8 位无符号 → 范围 。
最终答案是 A(0 ~ 255)。
指令格式示意:
| 字段 | 位数 | 含义 | 范围 |
|---|---|---|---|
| OP(操作码) | 6 | 48 种指令 | 0~63(用 48 个) |
| M(寻址方式) | 2 | 4 种寻址 | 0~3 |
| D(形式地址) | 8 | 直接寻址时为主存地址 | 0~255 |
为什么直接寻址用无符号 而 相对寻址用补码:
| 寻址方式 | 形式地址解读 | 范围特点 |
|---|---|---|
| 直接寻址 | 主存的绝对地址 | 无符号,从 0 起 → 0~2ⁿ-1 |
| 间接寻址 | 间接指针的地址 | 同上,无符号 |
| 立即寻址 | 操作数本身 | 视题面(通常按补码处理负数) |
| 相对寻址 | 相对 PC 的偏移量 | 补码,可正可负 → -2ⁿ⁻¹~2ⁿ⁻¹-1 |
直接寻址不需要负地址(地址 0 就是物理上的最低位置),所以用无符号编码更省一位。
易错点速查:
- 寻址方式字段往往漏算——题面说"操作码和寻址方式位数固定"提示要预留两段
- 直接寻址 = 无符号绝对地址;相对寻址 = 补码偏移
- 操作码位数公式:,其中 N 是指令条数