Skip to content

2017年 408 计算机组成原理 第 21 题

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

题目

I/O 指令实现的数据传送通常发生在( )。

错因

A

误以为 I/O 指令直接控制"端口和设备"之间的数据交换。但端口与设备之间的数据流是 I/O 接口内部的事——由设备控制器(接口电路)自动处理,不是 CPU 的 I/O 指令直接驱动。CPU 的 I/O 指令只能管到端口这一层,端口里面的数据怎么和设备交互不是 I/O 指令的职责。

B

把"通用寄存器 ↔ I/O 设备"当作直接传输路径。这不对——CPU 不能直接访问 I/O 设备内部的硬件状态,必须经过 I/O 端口作为中介。I/O 设备和 CPU 之间没有直连通路,端口(接口寄存器)才是 CPU 能"看见"的地址。

C

"端口到端口"的传输几乎不存在——CPU 的 I/O 指令一次只能从某个端口取数据进 CPU、或者从 CPU 寄存器写数据到某个端口。端口之间不会自己互相搬数据,要中转必须通过 CPU(即"端口 → 寄存器 → 另一个端口"两条指令)。

总解析

先理清三个概念

概念在哪里谁能访问
I/O 设备外设(键盘、磁盘、打印机、网卡等)经过 I/O 接口(控制器)才能间接访问
I/O 端口I/O 接口(控制器)内部的寄存器CPU 能直接通过 I/O 指令访问
通用寄存器CPU 内部CPU 内部直接读写

I/O 指令的本质:CPU 通过 IN / OUT 这类指令,在通用寄存器(如 AL、AX、EAX)I/O 端口之间搬数据。

指令方向例子
IN AL, port端口 → 通用寄存器把端口 0x60(键盘控制器)的数据读进 AL
OUT port, AL通用寄存器 → 端口把 AL 的内容写到端口 0x3F8(串口)

所以 I/O 指令的数据传送发生在:

最终答案是 D(通用寄存器和 I/O 端口之间)

完整 I/O 路径(理解了不会再混):

CPU 通用寄存器
    ↑↓ ←── 这一段才是 I/O 指令直接控制的(IN/OUT)
I/O 端口(接口/控制器内寄存器)
    ↑↓ ←── 由设备控制器自动处理,CPU 不直接管
I/O 设备本体(电机、磁头、字符发生器…)

I/O 指令只对"上半截"负责;"下半截"端口和设备的交互由设备控制器自治。

易错点速查

  1. CPU 不能直接访问 I/O 设备,必须通过端口
  2. I/O 端口在**接口(控制器)**里,不在设备里
  3. IN / OUT 指令明示"端口 ↔ 通用寄存器",记住这一对就够

最后更新:

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