目录
I/O接口概述
I/O接口的典型结构
内部结构
I/O接口电路实际是比较复杂的,但从应用角度,我们可以简化为3类可编程的寄存器,分别对应3类信号。
- 数据寄存器:保存处理器和外设之间交换的数据,可以分为数据输入寄存器和数据输出寄存器
- 状态寄存器:保存外设或其接口电路当前的工作状态信息
- 控制寄存器:保存处理器控制接口电路和外设操作的有关信息
外部特性
接口电路位于处理器和外设之间,起着桥梁作用
- 面向处理器一侧的信号与处理器总线或系统总线类似,有数据信号、地址信号、控制信号,以方便与处理器连接
- 面向外设一侧的信号与外设有关,以便与外设连接,由于外设种类太多,面向外设的一侧也各不相同。
基本功能
- 数据缓冲
- 信号变换
I/O端口的编址
独立编址
独立编址是将I/O端口单独编排地址,独立于存储器地址。
优点
:- 不占用存储器空间
- 专门的I/O指令比较清晰
缺点
:I/O指令功能简单,寻址方式没有存储器丰富
80x86采用独立编址方式,只使用最低16位地址信号,对应64K个8位I/O端口,这64K地址空间补需要分段管理,只能使用指令输入指令IN,和输出指令OUT访问
统一编址
统一编址是将I/O端口和存储器地址统一编排,共享一个地址空间。
优点
:- 不需要设计专门的I/O指令和引脚
- 具有和存储器寻址一样丰富的寻址方式
缺点
:- 占用存储地址空间
- 通过指令不易辨认是I/O操作
输入输出指令
输入指令
:IN AL/AX/EAX, i8/DX
输出指令
:OUT i8/DX, AL/AX/EAX
I/O寻址方式
IA-32处理器的I/O寻址方式只有两种,直接寻址和通过DX间接寻址
直接寻址
:由I/O指令直接提供8位I/O地址,只能寻址最低256个I/O地址(00-FFH)间接寻址
:用DX寄存器保存访问的I/O地址,能访问的地址(0000-FFFFH)
I/O数据传输量
IN/OUT指令只允许通过累加寄存器EAX与外设交换数据。8位I/O指令使用AL,16位I/O指令使用AX,32位I/O指令使用EAX
IN指令
:外设数据进入处理器的AL/AX/EAXOUT指令
:处理器数据通过AL/AX/EAX送出
in al, 21h ;从地址为21H的I/O端口读一个字节数据到AL
mov dx, 300h ;DX指向300H端口
out dx, al ;将AL中的字节数据送到地址为300H(DX)的I/O端口
I/O保护
对于输入输出指令IN
、OUT
、INS
、OUTS
,还有中断标志设置指令CLI
和STI
的执行涉及I/O端口,称之为I/O敏感指令。
标志寄存器EFLAGS
有一个IOPL
字段,表示程序具有的I/O特权级,只有程序的当前特权级低于或等于I/O特权级,I/O敏感指令才可以执行
16位DOS应用程序
DOS平台的源程序框架
; eg0700.asm in DOS
include io16.inc ;包含16位输入输出文件
.data ;定义数据段代填
...
.code ;定义代码段
start:
mov ax, @data
mov ds, ax
.....
exit 0 ;程序正常执行结束
.....
end start ;汇编结束
eg:输出Hello World
include io16.inc
.data
msg byte 'Hello, Assembly!', 13, 10, 0 ;定义要显示的字符串
.code
start:
mov ax,@data
mov ds,ax
mov eax, offset msg
call dispmsg
exit 0
end start
DOS功能调用
DOS利用软件中断方式提供系统功能。IA-32处理器支持256个中断,每个中断用一个中断编号区别,即中断0~中断255号,中断调用指令是INT N
,其中N
表示调用的中断号。
DOS系统调用一般有如下四个步骤:
- 在AH寄存器中设置系统功能调用号
- 在指定寄存器中设置入口参数
- 用中断调用指令(
INT N
)执行功能调用 - 根据出口参数分析功能调用的执行情况
1、3这两个步骤是一定需要的,2、4只是某些指令会用到
DOS功能调用的终端号主要是21H
,利用AH寄存器区别各种子功能
dispmsg子程序
:
dispmsg proc
push eax
push ebx
push edx
mov ebx, eax
dispm1: mov al, [ebx] ;取一个字符
test al, al ;判断是否结尾(0)
jz dispmsg2
mov ah, 2 ;AH=2,显示一个字符的DOS功能
mov dl, al ;设置入口参数
int 21h ;调用DOS(INT 21H)系统功能
inc ebx
jmp dispm1
dispm2: pop edx
pop ebx
pop eax
ret
dispmsg endp
无条件传送和查询传送
I/O接口的主要功能之一就是实现外设和主机的数据传送。数据传送可以通过处理器执行I/O指令完成,分为无条件传送、查询传送、中断传送。外设数据传送还可以以硬件为主加快传输速度,如直接存储器存取(DMA)、使用专门的I/O处理器
无条件传送
有些设备状态很少变化,可以认为总是处于就绪状态
,随时可以进行数据传送,这就是无条件传送,有时也称为立即传送或同步传送
用于无条件传送的I/O接口电路十分简单,接口中只考虑数据缓冲
,不考虑信号联络
。
三态缓冲器
三态指的是0
、1
、高阻值
锁存器
在输出接口电路中,一般会安排一个锁存环节(锁存器
),以便将数据总线的数据暂时锁存,使较慢的设备有足够的时间进行处理,此时处理器可以利用系统总线完成其他工作。