2.5 外部设备
计算机运行时的程序和数据以及所产生的的结果都要通过输入/输出设备与人交互,或者保存在大容量的外存储器中,因此输入/输出设备(或简称外部设备)是计算机必不可少的组成部分,对外设进行有效的管理和信息传输是汇编语言的重要应用领域之一。
从图2.1可见,外部设备与主机(微处理器和存储器)的通信是通过外设接口进行的。每个接口包括一组寄存器。一般说来,这些寄存器有三种不同的用途:
1. 数据寄存器:用来存放要在外设和主机间传送的数据,这种寄存器实际上起缓冲器的作用。
2. 状态寄存器:用来保存外部设备或接口的状态信息,以便微处理器在必要时测试外设状态,了解外设的工作情况。
3. 命令寄存器:CPU给外设或接口的控制命令通过此寄存器送给外部设备。例如,CPU要启动磁盘工作,必须发出启动命令等。
各种外部设备都有以上三种类型的寄存器,只是每个接口所配备的寄存器数量是根据设备的需要确定的。
为了便于主机访问外设,外设中的每个寄存器给予一个端口地址(又称端口号),由这些端口地址组成了一个独立于内存储器的I/O地址空间。80x86的I/O地址空间可达64KB,所以端口地址的范围是0000~FFFFH,用16位二进制代码来表示。端口可以是8位或16位。
在80x86系列机中,由于I/O地址空间是独立编址的,所以系统提供了访问外设的输入/输出指令IN和OUT。
为了便于用户使用外设,8086提供了两种类型的例行程序供用户调用。一种是BIOS(Basic Input/Output
System),另一种是DOS(Disk Operating System)功能调用。它们都是系统编制的子程序,通过中断方式转入所需要的子程序去执行。用户通过调用DOS或BIOS例行程序来实现对外设的访问,降低了程序设计的复杂程度,缩短了开发周期。