I/O
字数: 0
💻
CPU 可以直接读写以下地方的数据
  • CPU 内部寄存器
  • I/O 端口

端口地址

Port Addresses
用于访问计算机硬件设备的通信接口,每个设备都被分配了一个唯一的端口地址,通过该地址可以向设备发送命令或读取设备的状态信息。与内存地址类似,端口地址也是一种用于寻址的标识符,通常表示为一个16位或32位的数字。
在编程中,使用特定的指令可以读取或写入特定端口地址上的数据。这些指令允许程序与硬件设备进行直接的通信和交互,通过读取或写入端口地址来传输数据或控制设备的行为。
notion image
输入端口
notion image
相关汇编指令
IN acc, port
Reads a byte,word or double word from the port to the accumulator.
  • IN AL,300h
  • IN AX,DX
输出端口
notion image
相关汇编指令
OUT acc, port
Writes a byte,word or double word from the port to the accumulator.

例:打印机和显示器相关的端口地址
  • Parallel Printer Latch(并行打印机锁存器):位于端口地址 0x378,通常用于向并行打印机(如 LPT1)发送输出数据。
  • Printer Control Latch(打印机控制锁存器):位于端口地址 0x37A,通常用于向打印机发送控制信号。
  • Printer Status(打印机状态):位于端口地址 0x379,通常用于读取打印机的状态信息。
  • VDU Colour register(VDU 颜色寄存器):位于端口地址 0x3D9,用于设置 DOS 文本模式下的边框颜色。
    • Visual Display Unit(可视显示单元)通常用于指代计算机的显示器或监视器

地址解码器

Address decode
CPU 通过地址总线向地址解码器发送特定的地址信号,解码器根据信号识别特定的 I/O 端口,从而确定哪个芯片将被选中进行读取或写入操作。
以 Z80A CPU 为例
  • 如果地址范围是 0x0000 到 0x3FFF,解码器将其映射到 主内存 RAM 芯片。
  • 如果地址范围是 0x4000 到 0x7FFF,解码器将其映射到 显存 RAM 芯片。
  • 如果地址范围是 0x8000 到 0xFFFF,解码器将其映射到外部设备(如 I/O 端口)。

三态缓冲区

Tri-State buffer
一旦地址解码器确定要访问的特定 I/O 端口,CPU 会将数据通过数据总线传输到三态缓冲区,再进一步送入 CPU。
  • 缓冲区是一个用于临时存储数据的内存区域,可以平衡数据流,确保数据的可靠传输
  • 三态缓冲区除了高电平态和低电平态,还具有高阻态(High-impedance State)
    • 该状态下的缓冲区将断开输出端,不输出电平值(不将数据传递到 I/O 端口)
    • 状态切换由使能信号(Enable signal,CPU 控制)决定
notion image
 
 
2023 - 2026