Skip to content

2011年 408 计算机组成原理 第 17 题

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

题目

某机器有一个标志寄存器,其中有进位/借位标志 CF、零标志 ZF、符号标志 SF 和溢出标志 OF,条件转移指令 bgt(无符号整数比较大于时转移)的转移条件是 ( )

错因

A

把 OF(溢出)和 SF(符号)混着用了。OF 和 SF 是给有符号比较用的——无符号比较不会发生"溢出"这个概念,只会"借位"(CF)。无符号 bgt 的判定不应该出现 OF,看到 OF 就要警觉这条不对。

B

等价于 SF=0 ZF=0,即"结果为正且非零"——这是有符号 bgt(在无溢出情况下的简化形式)的条件。考生选 B 多半是误认为 "bgt 就是大于",没区分有符号 / 无符号。题目里明写"无符号整数比较",符号位 SF 在无符号比较里没有意义

D

等价于 CF=0 SF=0,混搭了无符号(CF)和有符号(SF)的标志,逻辑上不成立——一个完整的比较条件不会跨越两套体系。选 D 通常是猜的:知道要用 CF(无符号),但又错把"非负"翻译成 SF=0。

总解析

核心思路:用 SUB 指令计算 ,用产生的标志位反推 的关系。

第一步:识别用哪些标志位

比较类型关键标志说明
无符号比较CF, ZF借位 = 不够减;零 = 相等
有符号比较SF, OF, ZF符号位 + 溢出位组合判断真实大小

题目说"无符号整数比较"——锁定 CF 和 ZF,OF / SF 不参与。

第二步:分析无符号 SUB 后 CF/ZF 的取值

执行 后:

CFZF含义
00不借位()且不相等 →
01不借位且相等 →
10借位()且不相等 →
11不可能(借位发生意味着结果非零)

第三步:写出 bgt(无符号 )的条件

⟺ CF = 0 ZF = 0 ⟺

用德摩根律转换:

所以转移条件可写作 ,对应 选项 C

第四步:与相关指令区分

指令全称转移条件
bgtu / bgt(无符号)branch if greater than(u=unsigned)
bgeu(无符号)branch if greater or equal(即 CF = 0)
bltu(无符号)branch if less than
beq(相等)branch if equal

记忆要点

  1. 无符号比较只看 CF 和 ZF——OF/SF 是有符号比较专用
  2. 大于(不等于) = "借位 且 不相等" → 两个标志都为 0
  3. "都为 0"的逻辑写法是 或等价的 (德摩根律)

最终答案是 C(

编者注(格式修复):原题选项 B/C/D 中含有 KaTeX \overline{...} 上横线,纯文字版无法表达,已根据题图(2011-17.assets/image-20260426131201256.png)补回。所有上横线均覆盖整个 "X + Y" 表达式。

最后更新:

⚠️ 这道题暂未配可视化,欢迎在 CodeBrick 反馈区告诉我们你想看哪道题