微机原理与接口技术-第七章输入输出接口

发布时间 2023-10-22 21:13:24作者: cxy8

I/O接口概述

I/O接口的典型结构

  • 内部结构
    I/O接口电路实际是比较复杂的,但从应用角度,我们可以简化为3类可编程的寄存器,分别对应3类信号。
  1. 数据寄存器:保存处理器和外设之间交换的数据,可以分为数据输入寄存器和数据输出寄存器
  2. 状态寄存器:保存外设或其接口电路当前的工作状态信息
  3. 控制寄存器:保存处理器控制接口电路和外设操作的有关信息
  • 外部特性
    接口电路位于处理器和外设之间,起着桥梁作用
  1. 面向处理器一侧的信号与处理器总线或系统总线类似,有数据信号、地址信号、控制信号,以方便与处理器连接
  2. 面向外设一侧的信号与外设有关,以便与外设连接,由于外设种类太多,面向外设的一侧也各不相同。

基本功能

  1. 数据缓冲
  2. 信号变换

I/O端口的编址

独立编址

独立编址是将I/O端口单独编排地址,独立于存储器地址。

  • 优点
    1. 不占用存储器空间
    2. 专门的I/O指令比较清晰
  • 缺点:I/O指令功能简单,寻址方式没有存储器丰富
    80x86采用独立编址方式,只使用最低16位地址信号,对应64K个8位I/O端口,这64K地址空间补需要分段管理,只能使用指令输入指令IN,和输出指令OUT访问

统一编址

统一编址是将I/O端口和存储器地址统一编排,共享一个地址空间。

  • 优点
    1. 不需要设计专门的I/O指令和引脚
    2. 具有和存储器寻址一样丰富的寻址方式
  • 缺点
    1. 占用存储地址空间
    2. 通过指令不易辨认是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/EAX
  • OUT指令:处理器数据通过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保护

对于输入输出指令INOUTINSOUTS,还有中断标志设置指令CLISTI的执行涉及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系统调用一般有如下四个步骤:

  1. 在AH寄存器中设置系统功能调用号
  2. 在指定寄存器中设置入口参数
  3. 用中断调用指令(INT N)执行功能调用
  4. 根据出口参数分析功能调用的执行情况
    1、3这两个步骤是一定需要的,2、4只是某些指令会用到
    DOS功能调用的终端号主要是21H,利用AH寄存器区别各种子功能
    image
    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接口电路十分简单,接口中只考虑数据缓冲,不考虑信号联络

三态缓冲器

三态指的是01高阻值
image

锁存器

在输出接口电路中,一般会安排一个锁存环节(锁存器),以便将数据总线的数据暂时锁存,使较慢的设备有足够的时间进行处理,此时处理器可以利用系统总线完成其他工作。

接口电路