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