Files

4.4 KiB
Raw Permalink Blame History

tags, create time
tags create time
接口与通讯技术
I/O编址
重点复习
2026-06-28 15:00

I/O 端口编址方式

概述

I/O 端口编址方式是接口与通讯技术的核心基础概念,在全部 3 套试卷中均有出现。PC 系列微机采用独立编址方式,拥有专用的 I/O 访问指令和独立的地址空间。本专题涵盖两种编址方式的区别、直接寻址的范围限制以及 IN/OUT 指令的使用规则。

正文

1. 两种编址方式对比

特性 统一编址(存储器映射 I/O) 独立编址(隔离 I/O)
地址空间 I/O 与内存共用同一地址空间 I/O 有独立的地址空间
访问指令 普通访存指令(MOV 等) 专用 I/O 指令(IN/OUT)
地址范围 受内存地址空间限制(可达 1MB+) 独立编码,通常较小(x86 为 64KB)
代表架构 ARM、MIPS、PowerPC x86(PC 系列微机)
graph TB
    A["I/O 编址方式"] --> B["统一编址<br/>存储器映射 I/O"]
    A --> C["独立编址<br/>隔离 I/O"]
    B --> D["与内存共用地址空间<br/>用 MOV 指令访问"]
    C --> E["独立 I/O 地址空间<br/>用 IN/OUT 指令访问"]
    E --> F["PC 系列采用此方式"]
    style C fill:#dfd,stroke:#333
    style F fill:#f9f,stroke:#333

[!question] 思考题 为什么 x86 选择独立编址而非统一编址?

答:独立编址有以下优势:

  1. I/O 指令(IN/OUT)明确标识 I/O 操作,便于操作系统管理和保护
  2. 不占用宝贵的内存地址空间
  3. I/O 地址解码电路简单(只需 16 位地址线)
  4. I/O 操作和内存操作可以有不同的时序和等待周期

2. 独立编址的 I/O 端口地址范围

x86 的 I/O 指令有两种端口地址寻址方式:

寻址方式 端口地址范围 指令格式 说明
直接寻址 00H ~ FFH(8 位,共 256 个端口) IN AL, 端口号 端口号作为 8 位立即数嵌入指令中
间接寻址 0000H ~ FFFFH(16 位,共 65536 个端口) IN AL, DX 端口号放在 DX 寄存器中

[!important] 考试高频点 直接寻址时端口地址范围为 00HFFH(0255),这是填空题的经典考法。

原因:直接寻址的端口号是 8 位立即数,8 位二进制最大表示 255(FFH),所以只能访问前 256 个端口。

; 直接寻址示例(端口号 ≤ FFH)
IN AL, 20H          ; 从端口 20H 读取一个字节到 AL
OUT 21H, AL         ; 将 AL 的内容输出到端口 21H

; 间接寻址示例(端口号 > FFH 时必须用 DX)
MOV DX, 300H        ; 端口地址 > FFH,必须用 DX
IN AL, DX           ; 从 DX 指定的端口读取

[!tip] 记忆口诀 "直接寻址八位宽,零到二五五(FFH);超过范围用 DX,间接寻址十六位。"

3. IN/OUT 指令详解

IN/OUT 是 x86 的专用 I/O 指令,只能在独立编址方式下使用:

指令 功能 数据方向
IN AL, port 从 I/O 端口读一个字节到 AL 端口 → CPU
IN AX, port 从 I/O 端口读一个字到 AX 端口 → CPU
OUT port, AL 将 AL 的内容写到 I/O 端口 CPU → 端口
OUT port, AX 将 AX 的内容写到 I/O 端口 CPU → 端口
sequenceDiagram
    participant CPU as "CPU"
    participant IO as "I/O 端口"
    CPU->>IO: "OUT port, AL<br/>(写操作)"
    Note over IO: "端口接收 AL 的数据"
    IO->>CPU: "IN AL, port<br/>(读操作)"
    Note over CPU: "AL 接收端口数据"

4. 真题回顾

[!example] 【真题】I/O 端口的编址方式有两种,分别为______和______,PC 系列机 I/O 端口的编址方式采用的是后一种。

答案:统一、独立

[!example] 【真题】在 PC 系列微机中,输入/输出指令若采用直接寻址方式,I/O 端口地址的范围是______。

答案:00HFFH(0255)

[!example] 【真题】I/O 端口的编址方式有两种,其中______编址方式中有专用的 I/O 访问指令。

答案:独立

关联笔记