Skip to content

2019年 408 计算机组成原理 第 15 题

计算机组成原理2019年选择题2分

题目

某计算机采用大端方式,按字节编址。某指令中操作数的机器数为 1234FF00H,该操作数采用基址寻址方式,形式地址(用补码表示)为 FF12H,基址寄存器内容为 F0000000H,则该操作数的 LSB(最低有效字节)所在的地址是( )。

错因

A

两个错叠加:

  1. 形式地址没做符号扩展——直接把 0xFF12 当成 16 位无符号数加到基址上:0xF0000000 + 0xFF12 = 0xF000FF12(无意中把"负偏移"当成了"小正偏移")
  2. 没考虑大端 LSB 偏移——直接给出 EA 当 LSB 地址(实际 EA 是 MSB 地址,LSB 还要 +3)

B

形式地址没做符号扩展(同 A 第 1 错),但记住了大端 LSB 在末尾要 +3:0xF000FF12 + 3 = 0xF000FF15。所以 EA 的"高 16 位"算错(保留 F000 而非真正的 EFFF)。

C

正确做了符号扩展(EA = 0xEFFFFF12)但漏了大端 LSB 偏移——以为 EA 就是 LSB 地址。大端方式:MSB 在最低地址、LSB 在最高地址;4 字节操作数的 LSB 地址 = MSB 地址 + 3。

总解析

第一步:判断形式地址的真值(带符号扩展)

题面明示形式地址是补码。0xFF12 = 1111 1111 0001 0010,最高位 1 → 负数。

求绝对值:

步骤二进制十六进制
0xFF121111 1111 0001 0010FF12
取反0000 0000 1110 110100ED
+10000 0000 1110 111000EE

所以形式地址真值 = −0x00EE(十进制 −238)。

第二步:算 EA(操作数 MSB 地址)

基址寻址公式:

形式地址符号扩展到 32 位:0xFF12 → 0xFFFF_FF12(高位补符号位 1)。

按 32 位补码加法(最高位进位丢弃):

32 位
基址F0000000
+ 符号扩展FFFFFF12
求和(含进位)1_EFFFFF12
取低 32 位EFFFFF12

EA = 0xEFFFFF12(这是大端方式下操作数最高有效字节 MSB 的地址)。

第三步:根据大端规则求 LSB 地址

大端方式:最高有效字节存最低地址、最低有效字节存最高地址

操作数机器数 0x1234FF00(4 字节),按大端从地址 0xEFFFFF12 起依次存放:

地址字节含义
0xEFFFFF1212MSB(最高有效字节)
0xEFFFFF1334
0xEFFFFF14FF
0xEFFFFF1500LSB(最低有效字节)

LSB 地址 = MSB 地址 + 3 = 0xEFFFFF12 + 3 = 0xEFFFFF15

最终答案是 D(EFFFFF15H)

关键步骤汇总表

步骤中间结果
形式地址0xFF12(补码 16 位)= −238
符号扩展到 32 位0xFFFF_FF12
EA = 基址 + 符号扩展0xF000_0000 + 0xFFFF_FF12 = 0xEFFF_FF12
操作数大小4 字节(0x1234_FF00)
大端 LSB 偏移+3
LSB 地址0xEFFF_FF12 + 3 = 0xEFFF_FF15

易错点速查

  1. 补码形式地址必须符号扩展,不能当无符号数直接加(A 错的根源)
  2. 大端:MSB 在低地址、LSB 在高地址(4 字节操作数 LSB = MSB + 3)
  3. 小端:相反——LSB 在低地址、MSB 在高地址(小端 LSB 地址 = EA)
  4. EA 是操作数"起始地址",对大端是 MSB、对小端是 LSB——本题大端,所以要 +3

最后更新:

🎬 可视化演示
加载中...

提示:可在可视化区直接操作播放、步进、修改参数