8.2.2 I/O指令

 
IN和OUT指令的前两种方式是直接端口寻址方式,端口地址PORT是一个8位的立即数,其范围是0~255。两组指令中的后两种格式是间接寻址方式,端口地址在DX中,其范围为0~65535,这种方式通过对DX寄存器的增量可以处理几个连续端口地址的输入/输出。另外要注意的是,I/O指令中使用的寄存器必须是AL或AX。

  I/O指令是CPU与外部设备进行通信的最基本途径,即使使用DOS功能调用或BIOS例行程序,其例行程序本身也是用IN和OUT指令与外部设备进行数据交换的。例如,当程序请求从键盘输入字符时,程序中安排了一条中断指令INT 16H,当执行这条指令时,系统将调用ROM BIOS的一个键盘例行程序,在这个例行程序中就有一条IN指令从端口60H输入一个字符到AL寄存器。

  使用I/O指令对端口地址进行直接的输入或输出,比调用DOS功能或BIOS例行程序更能提高数据的传送速度和吞吐量,但同时也要求程序员对计算机的硬件结构有一定的了解,其程序对硬件的依赖性也大,因此,对于一般的程序设计,还是尽可能使用DOS或BIOS功能调用。