0%

X86指令体系下的输入/输出指令

前言:学习X86指令体系下的输入/输出指令

输入/输出指令是控制CPU与外设交换数据的指令

1、端口

PC通过总线与CPU相连的芯片除了存储器外,还有其他的一些芯片可存放信息。这些芯片都有一组可以由CPU读/写的寄存器,这些寄存器叫做端口

这些寄存器在物理上处于不同的芯片中,但它们都是与CPU总线相连,每个端口在地址空间中都有一个地址。CPU通过对I/O接口中端口的读/写实现与外部设备的数据交换

2、输入/输出指令IN和OUT

IN:数据由端口 ➡ CPU

OUT:数据由CPU ➡ 端口

在IN/OUT指令中,只能用AX或AL寄存器来存放从端口读入的数据或者要发送到端口的数据

输入指令格式:

1
2
3
4
IN AL,n
IN AX,n
IN AX,DX
IN AL,DX

其中n为8位的端口地址,当输入字节数据时,将端口地址为n的内容给AL中。当输入字数据时,将端口地址n + 1的内容送给AH中,端口地址为n的内容送AL中

端口地址为16位时应当16位端口地址送入DX寄存器中。当输入字节数据时,将DX作为端口地址中的内容送给AL。当输入字数据时,将DX作为端口地址中的内容送给AL。当输入字数据时,将DX作为端口地址中的内容送AL,[(DX + 1)]的端口地址内容送AH

输出指令格式:

1
2
3
4
OUT n,AL
OUT n,AX
OUT DX,AL
OUT DX,AX

输入/输出指令不影响标志位