Skip to content

2012年 408 计算机组成原理 第 22 题

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

题目

响应外部中断的过程中,中断隐指令完成的操作,除保护断点外,还包括( )。

I. 关中断

II. 保存通用寄存器的内容

III. 形成中断服务程序入口地址并送 PC

错因

A

漏了 III、错把 II 当硬件做的。II(保存通用寄存器)是 ISR 第一步软件做的"保护现场"——通用寄存器数量众多(CPU 才不知道你要不要保护、保护哪些),保哪几个、保到哪儿都是 ISR 软件根据 OS 约定决定的,硬件不可能替你做。

C

把"关中断(I)"误归为软件做。其实关中断是中断隐指令第一步——CPU 一旦决定响应中断,立刻自动置 IF/IE 标志为 0,整个过程不需要 ISR 介入。如果让软件来关,那"关之前"的几条指令就可能被新中断打断,破坏现场——逻辑上行不通。

D

三项都选——多选了 II。II(保存通用寄存器)属于 ISR 内"保护现场"的第一步,由软件代码 push 到栈或专用区,不是隐指令做的。断点(PC + PSW)和通用寄存器是两回事:断点是跳走前必须立刻保住的"返回地址"(硬件来),通用寄存器是 ISR 真正开始干活前才保的"现场"(软件来)。两者别搞混。

总解析

核心概念:什么是"中断隐指令"

中断隐指令 = CPU 检测到中断请求后,硬件自动完成的一组动作(不对应任何机器指令、不可被软件直接调用),把"用户程序"切到"中断服务程序入口"。

它的固定三步:

  1. 关中断(I)——置 IF=0,防止 ISR 入口前几条指令被新中断打断
  2. 保存断点(PC、PSW 入栈)——题目已剔除
  3. 引出 ISR:把中断向量对应的入口地址装进 PC(III),下一条取指就跳到 ISR 第一行

题目说"除保护断点外,还包括",所以从三步里去掉"保存断点",剩下的是 I 和 III

为什么 II 不在隐指令里

操作谁做何时做原因
关中断 I硬件(隐指令第 1 步)响应中断瞬间必须在保存断点前关,否则栈/PC 可能被新中断破坏
保存断点硬件(隐指令第 2 步)关中断之后把"被打断的位置"PC 入栈,是返回的依据
形成入口送 PC III硬件(隐指令第 3 步)保存断点之后中断向量表查得入口地址,写 PC 即跳转
保护通用寄存器 II软件(ISR 第一步)ISR 入口处哪些寄存器需要保护、保到哪个内存区,由 OS 约定(ABI/调用约定),硬件无法决定
中断处理软件(ISR)现场保护后真正的中断逻辑
恢复现场软件(ISR)处理结束后与"保护现场"对称
中断返回 IRET硬件 + 软件配合ISR 结束弹出 PC、PSW,开中断

记忆框架:"隐指令 = 关中断 + 保断点 + 送入口"——三件事都只与 PC、PSW、中断屏蔽位相关,没有任何"通用寄存器级"操作。一看到题目里出现"保存通用寄存器/累加器/各类工作寄存器",立刻判定这是软件干的,不是隐指令。

最终答案是 B(仅 I、III)

最后更新:

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