钱晓捷,微机原理与接口技术 ·第 4版 —— 基于 IA-32处理器和 32位汇编语言第 7 章输入输出接口
7.1 I/O接口概述
7.2 无条件传送和程序查询传送
7.3 中断控制系统
7.4 DMA传送微机原理与接口技术
·

4
版机械工业出版社
7.1 I/O接口概述
微机的外部设备多种多样工作原理,驱动方式,信息格式,以及工作速度方面彼此差别很大它们不能与 CPU直接相连必须经过中间电路 ( I/O接口 ) 再与系统相连
I/O接口是位于基本系统与外设间,实现两者数据交换的控制电路在 PC机主板上的 可编程接口 电路系统总线插槽中的电路卡 ( Card)
微机原理与接口技术
·

4
版机械工业出版社
7.1.1 I/O接口的典型结构
I/O地址=外设端口,对应接口寄存器微机原理与接口技术
·

4
版机械工业出版社
1,内部结构
数据寄存器保存处理器与外设之间交换的数据数据输入寄存器:保存从输入设备获取的数据,
处理器选择合适的方式进行读取数据输出寄存器:保存处理器发往输出设备的数据,适时到达输出设备
状态寄存器保存外设当前的工作状态信息
控制寄存器保存处理器控制接口电路和外设操作的有关信息微机原理与接口技术
·

4
版机械工业出版社
2,外部特性
接口电路的外部特性由其引出信号来体现
I/O接口处于处理器与外设之间:
面向微处理器一侧的信号与处理器总线或系统总线类似有数据信号,地址信号和控制信号等
面向外设一侧的信号与外设有关外设数据信号,外设状态信号和外设控制信号微机原理与接口技术
·

4
版机械工业出版社
3,基本功能
数据缓冲匹配快速的处理器与相对慢速的外设的数据交换缓冲:实现接口双方数据传输的速度匹配
信号变换把信号相互转换为适合对方的形式计算机直接处理的信号
数字量 ( 0和 1组成的信号编码 )
开关量 ( 只有两种状态的信号 )
脉冲量 ( 低脉冲信号,高脉冲信号 )
微机原理与接口技术
·

4
版机械工业出版社
4,软件编程
接口芯片具有可编程性 ( Programmable)
命令字 ( 控制字 )
写入接口芯片,选择工作方式,控制数据传输
初始化程序选择 I/O接口工作方式,设置原始工作状态等
驱动程序操纵 I/O接口完成具体工作硬件接口电路需要软件编程配合工作微机原理与接口技术
·

4
版机械工业出版社
7.1.2 I/O端口的编址
I/O端口= I/O地址,对应 I/O接口的寄存器
一个接口电路可以具有多个 I/O端口,每个端口用来保存和交换不同的信息
数据寄存器,状态寄存器和控制寄存器占有的 I/O地址常依次被称为数据端口,状态端口和控制端口
输入,输出端口可以是同一个 I/O地址如何编排存储器地址和 I/O地址?
微机原理与接口技术
·

4
版机械工业出版社
1,I/O端口与存储器独立编址
I/O端口单独编排地址,独立于存储器地址
优点:
I/O端口的地址空间独立控制和地址译码电路相对简单专门的 I/O指令使程序清晰易读
缺点:
I/O指令没有存储器指令丰富
80x86采用 I/O端口独立编址主存空间
I/O
空间
FFFFF
0
FFFF
微机原理与接口技术
·

4
版机械工业出版社
2,I/O端口与存储器统一编址
将 I/O端口与存储器地址统一编排
优点:
不需要专门的 I/O指令
I/O数据存取灵活
缺点:
占去部分存储器空间程序不易阅读主存部分
I/O
部分存储器空间
00000
FFFFF
微机原理与接口技术
·

4
版机械工业出版社
3,I/O地址译码
与存储器地址译码在原理和方法上完全相同
I/O地址不太强调连续,多采用部分译码微机原理与接口技术
·

4
版机械工业出版社
7.1.3 输入输出指令
输入指令 IN:数据从 I/O接口输入到微处理器
IN AL/AX/EAX,i8/DX
输出指令 OUT:数据从微处理器输出 I/O接口
OUT i8/DX,AL/AX/EAX
串输入 INS指令
串输出 OUTS指令
IN AL,21H
IN AL,DX
举例
OUT 21H,AL
OUT DX,AL
举例微机原理与接口技术
·

4
版机械工业出版社
1,I/O寻址方式
直接寻址
I/O指令直接提供 8位 I/O地址只能寻址最低 256个 I/O地址 ( 00~ FFH)
用 i8表示 I/O地址,表达形式上与立即数一样
DX间接寻址用 DX寄存器保存访问的 I/O地址可寻址全部 I/O地址 ( 0000~ FFFFH)
直接书写成 DX,表示 I/O地址
64K个 I/O地址,不分段微机原理与接口技术
·

4
版机械工业出版社
2,I/O数据传输量
8位 I/O传输,I/O指令使用 AL
16位 I/O传输,I/O指令使用 AX
32位 I/O传输,I/O指令使用 EAX
out 20h,al
out 20h,ax
out 20h,eax
mov dx,3fch
out dx,al
out dx,ax
out dx,eax
举例
in al,20h
in ax,20h
in eax,20h
mov dx,3fch
in al,dx
in ax,dx
in eax,dx
举例微机原理与接口技术
·

4
版机械工业出版社
3,I/O保护
I/O敏感指令
IN,OUT和 INS,OUTS,CLI和 STI
IA-32处理器保护方式下,I/O特权和 I/O许可位图限制 I/O敏感指令的执行程序的当前特权高于或等于程序的 I/O特权,
I/O敏感指令才可以执行
I/O许可位图给特权低的程序或虚拟 8086方式的程序提供有限的 I/O地址访问权限
Windows限制应用程序访问 I/O地址
教材将利用 DOS操作系统实践 I/O程序微机原理与接口技术
·

4
版机械工业出版社
7.1.4 16位 DOS应用程序
16位 DOS操作系统运行于
Intel 8086和 8088处理器
IA-32处理器的实地址工作方式
DOS平台下使用实地址存储模型只能访问 1MB存储空间,分成不大于 64KB的段默认采用 16位操作数尺寸:
使用 16位或 8位寄存器,操作数和寻址方式堆栈以 16位为单位压入 PUSH和弹出 POP数据
IA-32处理器的实地址工作方式还允许使用 32位寄存器,操作数和寻址方式执行大多数新增的 32位通用指令微机原理与接口技术
·

4
版机械工业出版社
1,DOS平台的源程序框架; eg0700.asm in DOS
include io16.inc; 包含 16位输入输出文件
.data ; 定义数据段
; 数据定义 ( 数据待填 )
.code ; 定义代码段
start,; 程序执行起始位置
mov ax,@data
mov ds,ax
; 主程序 ( 指令待填 )
exit 0 ; 程序正常执行结束
; 子程序 ( 指令待填 )
end start ; 汇编结束微机原理与接口技术
·

4
版机械工业出版社
〔 例 7-1〕 DOS应用程序
include io16.inc; 包含 16位输入输出文件
.data ; 数据段
msg byte 'Hello,Assembly!',13,10,0
.code ; 代码段
start,; 程序起始位置
mov ax,@data
mov ds,ax
mov eax,offset msg
call dispmsg ; 调用 I/O子程序显示信息
exit 0 ; 程序正常执行结束
end start ; 汇编结束运行于 DOS环境
MAKE16.BAT汇编连接操作演示微机原理与接口技术
·

4
版机械工业出版社
2,DOS功能调用
DOS操作系统的系统函数 ( 功能 ) 以中断服务程序形式提供,采用软件中断进行功能调用,使用寄存器传递参数
基本输入输出系统 ROM-BIOS,操作系统 DOS
和 Linux都采用中断调用方式提供系统功能
DOS系统调用一般有如下 4个步骤:
( 1) 在 AH寄存器中设置系统功能调用号
( 2) 在指定寄存器中设置入口参数
( 3) 用中断调用指令 ( INT N) 执行功能调用
( 4) 根据出口参数分析功能调用执行情况微机原理与接口技术
·

4
版机械工业出版社输出一个字符
dispc proc
push eax
push edx
mov ah,2
mov dl,al
int 21h
pop edx
pop eax
ret
dispc endp
功能编号 AH= 02H
入口参数 DL=输出字符的 ASCII码功能说明 在屏幕当前光标出显示字符微机原理与接口技术
·

4
版机械工业出版社输出字符串
dispmsg proc
push eax
push ebx
push edx
mov ebx,eax
dispm1,mov al,[ebx]
test al,al
jz dispm2
mov ah,2
mov dl,al
int 21h
inc ebx
jmp dispm1
dispm2,pop edx
pop ebx
pop eax
ret
dispmsg endp
微机原理与接口技术
·

4
版机械工业出版社输入一个字符
readc proc
mov ah,1
int 21h
ret
readc endp
功能编号 AH= 01H
出口参数 AL=输入字符的 ASCII码功能说明 从键盘输入一个字符,
并回显在屏幕上微机原理与接口技术
·

4
版机械工业出版社输入字符串
readmsg proc
push ebx
push ecx
mov ebx,eax
mov ecx,eax
rdm1,mov ah,1
int 21h
cmp al,0dh
jz rdm2
mov [ebx],al
inc ebx
jmp rdm1
rdm2,mov byte ptr [ebx],0
cmp ebx,ecx
jz rdm1
sub ebx,ecx
mov eax,ebx
pop ecx
pop ebx
ret
readmsg endp
微机原理与接口技术
·

4
版机械工业出版社
〔 例 7-2〕 读取 CMOS RAM数据程序- 1; eg0702.asm in DOS
include io16.inc
.code
start:
mov al,9; AL= 9( 准备从 9号单元获取年代数据 )
out 70h,al; 从 70H的 I/O地址输出,选择 CMOS RAM的 9号单元
in al,71h; 从 71H的 I/O地址输入,获取 9号单元的内容
call disphb ; 显示 AL内容,即年代
mov al,'-' ; 显示分隔符,-,
call dispc
微机原理与接口技术
·

4
版机械工业出版社
〔 例 7-2〕 读取 CMOS RAM数据程序- 2
mov al,8; AL= 8( 从 8号单元获取月份数据 )
out 70h,al
in al,71h
call disphb ; 显示月份
mov al,'-' ; 显示分隔符,-,
call dispc
mov al,7; AL= 7( 从 7号单元获取日期数据 )
out 70h,al
in al,71h
call disphb ; 显示日期
exit 0
end start
09-07-27
显示结果微机原理与接口技术
·

4
版机械工业出版社
7.2 无条件传送和程序查询传送
计算机主机有多种与外设传送数据的方式
通过处理器执行 I/O指令完成无条件传送查询传送中断传送
以硬件为主,加快传输速度直接存储器存取 ( DMA)
使用专门的 I/O处理机微机原理与接口技术
·

4
版机械工业出版社
7.2.1 无条件传送
处理器与慢速变化的设备交换数据
外设总是处于,就绪,状态,随时可以进行数据传送
无条件传送的接口电路,只考虑数据缓冲
无条件传送的软件编程:十分简单输入时执行输入 IN指令
mov dx,8000h
in al,dx
mov bufin,al
输出时执行输出 OUT指令
mov al,bufout
mov dx,8000h
out dx,al
微机原理与接口技术
·

4
版机械工业出版社
1,三态缓冲器
三态缓冲器,加有控制端的同相器或反相器控制端 T有效时,控制输入 A端输出到 Y端控制端 T无效时,输出 Y端呈现高阻状态
74LS244:双 4位三态同相缓冲器
双向三态缓冲器:两个三态缓冲器构成输出允许控制端 OE*:控制数据的输出方向控制端 DIR:控制数据驱动的方向
74LS245,8位双向三态缓冲器芯片示意图微机原理与接口技术
·

4
版机械工业出版社
2,锁存器
使用 D触发器构成输入端为 D端,控制端为 C端两个相反的输出信号 Q和 Q*
复位 R或置位 S控制端
电平锁存:电平控制输出能跟随输入变化
边沿锁存:输出只能锁存输入的状态
74LS273:上升沿锁存的 8位边沿锁存器
74LS373:电平锁存的 8位三态缓冲锁存器
74LS374:边沿锁存的 8位三态缓冲锁存器示意图微机原理与接口技术
·

4
版机械工业出版社
3,接口电路
输入接口电路连接开关:读取开关状态
输出接口电路连接发光二极管 LED
功能要求:开关闭合时,将相应 LED点亮
调用延时子程序 DELAY保持一定时间
mov dx,8000h ;DX指向输入端口
in al,dx ;从输入端口读开关状态
not al ;求反
out dx,al ;送输出端口显示
call delay ;调子程序 DELAY进行延时示意图微机原理与接口技术
·

4
版机械工业出版社
7.2.2 程序查询传送
查询传送有 查询 和传送两个环节首先查询外设工作状态检测,等待外设准备就绪进行数据传输微机原理与接口技术
·

4
版机械工业出版社
1,查询过程
设计实现查询功能的电路连接外设的状态输入信号保存在 状态寄存器 中通过状态端口读取
外设的工作状态在状态寄存器中使用一位或若干位表达,查询通过输入指令来实现
有多个状态,按照一定原则轮流查询,先检测到就绪的外设先开始数据传送
实际中常引入超时判断
查询传送工作可靠,具有较广的适用性
查询需大量时间,效率较低微机原理与接口技术
·

4
版机械工业出版社
2,查询输入接口
读取状态端口查询外设状态,若已就绪,读取数据端口得到外设提供的数据
mov dx,5001h ;DX指向 状态端口
status,in al,dx ;读状态端口
test al,01h ;测试状态位 D0
jz status;D0= 0,未就绪,继续查询
dec dx;D0= 1,就绪,DX改指 数据端口
in al,dx ;从数据端口输入数据示意图微机原理与接口技术
·

4
版机械工业出版社
3,查询输出接口
读取状态端口查询外设状态,若已就绪,将数据写入数据端口输出给外设
mov dx,5001h ;DX指向 状态口
status,in al,dx ;读取状态口的状态数据
test al,80h ;测试标志位 D7
jnz status;D7= 1,未就绪,继续查询
dec dx;D7= 0,就绪,DX改指 数据口
mov al,buf ;将变量 BUF送 AL
out dx,al ;将 AL中的数据送数据口示意图微机原理与接口技术
·

4
版机械工业出版社
7.3 中断控制系统
中断是微机系统中非常重要的一种技术
利用外部中断微机系统可以实时响应外部设备的数据传送请求,能够及时处理外部意外或紧急事件
利用内部中断处理器为用户提供了发现,调试并解决程序执行时异常情况的有效途径微机原理与接口技术
·

4
版机械工业出版社
7.3.1 中断传送
处理器在执行程序过程中,被内部或外部的事件所打断,转去执行一段预先安排好的中断服务程序;服务结束后,又返回原来的断点,继续执行原来的程序
中断源引起中断的事件或原因
内部中断
外部中断可屏蔽中断非屏蔽中断微机原理与接口技术
·

4
版机械工业出版社
1,中断工作过程
中断请求
中断响应
关中断
断点保护
中断源识别
现场保护
中断服务
恢复现场
开中断
中断返回数据交换的实质性环节响应条件
每条指令执行完时
允许中断 (可屏蔽中断 )
没有更高级的请求发生
……
微机原理与接口技术
·

4
版机械工业出版社
2,中断源的识别
向量中断在中断响应周期,处理器获得中断向量号一个中断向量号对应一个中断自动转向相应的中断服务程序
中断查询中断请求保存在中断状态寄存器处理器依次查询中断状态寄存器某个中断请求状态有效说明其提出请求转向对应的中断服务程序示意图微机原理与接口技术
·

4
版机械工业出版社
3,中断优先权排队
中断优先权每个中断源被处理的级别
中断优先权排队事先为每个中断源所确定的优先处理顺序
查询中断时依次查询,先查询的中断具有较高的优先权
硬件电路实现时分布方式的菊花链排队电路集中方式的编码电路和比较电路多个中断同时请求微机原理与接口技术
·

4
版机械工业出版社
4,中断嵌套
高于当前正在服务的中断:
暂停当前工作先行服务于级别更高的中断接着处理被打断的中断
低于或等于当前正在服务的中断:
不予理会,待完成当前中断服务后再处理中断嵌套:中断处理中又响应中断中断处理又有请求微机原理与接口技术
·

4
版机械工业出版社
7.3.2 IA-32中断系统
采用向量中断机制
能够处理 256个中断
用中断向量号 0~ 255区别
可屏蔽中断需要中断控制器实现优先权管理微机原理与接口技术
·

4
版机械工业出版社
1,内部中断
内部中断是由于处理器内部执行程序出现异常引起的程序中断 ( 异常 Exception)
除法错异常 ( 向量号 0)
调试异常 ( 向量号 1)
断点异常 ( 向量号 3)
溢出异常 ( 向量号 4)
无效代码异常 ( 向量号 6)
通用保护异常 ( 向量号 13)
页面失效异常 ( 向量号 14)

微机原理与接口技术
·

4
版机械工业出版社除法错异常
执行除法指令时,若除数为 0或商超过了寄存器所能表达的范围,产生的一个 向量号为 0的内部中断
〔 例 7-3〕 产生除法错中断的程序; 数据段
msg byte 0dh,0ah,'No divide overflow !',0; 代码段
call readuiw
mov bl,1
div bl
mov eax,offset msg ; 没有除法错,显示信息
call dispmsg
操作演示微机原理与接口技术
·

4
版机械工业出版社溢出异常
执行溢出中断指令 INTO时,若溢出标志 OF为 1,产生的一个 向量号 4的内部中断
〔 例 7-4〕 产生溢出中断的程序; 数据段
msg byte 0dh,0ah,'No overflow !',0; 代码段
call readuib
add al,100
jno noflow ; 没有溢出,转移
into ; 有溢出,产生溢出中断
jmp done
noflow,mov eax,offset msg ; 显示无溢出信息
call dispmsg
done:
操作演示微机原理与接口技术
·

4
版机械工业出版社
2,外部中断
非屏蔽中断外部通过 非屏蔽中断 NMI请求信号 提出的中断处理器在当前指令执行结束予以响应非屏蔽中断的 中断向量号是 2
非屏蔽中断主要用于处理系统的意外或故障
可屏蔽中断外部通过 可屏蔽中断 INTR请求信号 提出的中断允许可屏蔽中断 的条件下,当前指令执行结束予以响应输出 可屏蔽中断响应信号 INTA*,产生可屏蔽中断响应总线周期,读取中断向量号需要中断控制器负责处理中断优先权排队等管理工作可屏蔽中断主要用于与外设进行数据交换微机原理与接口技术
·

4
版机械工业出版社中断标志
IF= 1,处理器 开中断可以响应,允许中断,中断开放
IF= 0,处理器 关中断不能响应,禁止中断,中断被屏蔽
关中断的情况系统复位后任何一个中断被响应后执行关中断指令 CLI后
开中断的方法执行开中断指令 STI
执行中断返回指令 IRET恢复中断前 IF状态微机原理与接口技术
·

4
版机械工业出版社
3,中断和异常的响应过程
① 标志寄存器压入堆栈,保护标志位;被中断指令的逻辑地址压入堆栈,保护断点
② 如果有错误代码,将其压入堆栈实地址方式的异常不返回错误代码
③ 根据向量号获得中断服务程序 ( 中断或异常的处理程序 ) 的段选择器和指令指针
④ 对于中断,设置 IF为 0,禁止可屏蔽中断
⑤ 控制转移至中断服务程序入口地址,开始执行中断或异常处理程序微机原理与接口技术
·

4
版机械工业出版社
4,中断描述符表和中断向量表
保护方式下,使用中断描述符表 IDT
中断服务程序由中断描述符指向每个中断描述符包含 8个字节,保存
16位段选择器和 32位偏移地址中断特权层
实地址方式下,使用中断向量表物理地址 00000H,对应向量号从 0开始依次每 4个字节安排一个中断向量含有 16位段地址和 16位偏移地址的逻辑地址低字部分是偏移地址,高字部分是段地址
256个中断占用 1KB区域,形成中断向量表示意图微机原理与接口技术
·

4
版机械工业出版社
7.3.3 内部中断服务程序
编写内部中断服务程序与编写子程序类似利用过程定义伪指令 PROC/ENDP
第 1条指令通常为开中断指令 STI
最后用中断返回指令 IRET
通常采用寄存器传递参数
主程序需要调用中断服务程序调用前,需要设置中断向量表对应项利用 INT n指令调用中断服务程序
设置中断向量表项,AH= 25H号 DOS功能调用
获取中断向量表项,AH= 35H号 DOS功能调用微机原理与接口技术
·

4
版机械工业出版社
〔 例 7-5〕 内部中断服务程序- 1; 数据段
intoff word?; 用于保存原中断服务程序的偏移地址
intseg word?; 用于保存原中断服务程序的段基地址
intmsg byte 'A Instruction Interrupt !',0dh,0ah,0; 字符串 ( 以 0结尾 );代码段
mov ax,3580h; 获取系统的原 80H中断向量表项
int 21h
mov intoff,bx ; 保存偏移地址
mov intseg,es ; 保存段基地址
35H调用微机原理与接口技术
·

4
版机械工业出版社
〔 例 7-5〕 内部中断服务程序- 2
push ds
mov dx,offset new80h
mov ax,seg new80h
mov ds,ax
mov ax,2580h ; 设置本程序 80H中断向量表项
int 21h
pop ds
mov dx,offset intmsg
int 80h ; 调用 80H中断服务程序
mov dx,intoff ; 恢复原 80H中断向量表项
mov ax,intseg ; 注意先设置 DX,后设置 DS
mov ds,ax
mov ax,2580h
int 21h
25H调用微机原理与接口技术
·

4
版机械工业出版社
〔 例 7-5〕 内部中断服务程序- 3
new80h proc ; 过程定义
sti ; 开中断
push ax ; 保护寄存器
push bx
push si
mov si,dx
new1,mov al,[si] ; 获取欲显示字符
cmp al,0 ; 为,0” 结束
jz new2
mov bx,0 ; ROM-BIOS调用显示一个字符
mov ah,0eh
int 10h
inc si
jmp new1
功能编号 AH= 0EH
INT 10H
入口参数 AL= ASCII字符,BX= 0
功能说明 显示字符微机原理与接口技术
·

4
版机械工业出版社
〔 例 7-5〕 内部中断服务程序- 4
new2,pop si ; 恢复寄存器
pop bx
pop ax
iret ; 中断返回
new80h endp ; 中断服务程序结束; 80H内部中断服务程序; 显示字符串 ( 以 0结尾 ); DS∶DX =缓冲区首地址
AInstruction Interrupt !
显示结果微机原理与接口技术
·

4
版机械工业出版社
7.3.4 中断控制器
管理多个中断请求并进行优先权排队等工作
IBM PC/AT机使用两个 Intel 8259A可编程中断控制器 PIC,32位 PC机兼容了它们的功能每个管理 8级中断,请求引脚,IR0~ IR7
每一级中断可单独被屏蔽或允许多个芯片级联最多扩展至 64级中断为每级中断提供中断向量号
Pentium处理器内部集成局部 APIC,外部配合集成在芯片组的 I/O APIC
高级可编程中断控制器 APIC
微机原理与接口技术
·

4
版机械工业出版社
1,8259A的寄存器
中断请求寄存器 IRR
保存 8条外界中断请求信号 IR0~ IR7的请求状态
Di位为 1表示 IRi引脚有中断请求
中断服务寄存器 ISR
保存正在被 8259A服务的中断状态
Di位为 1表示 IRi中断正在服务中
中断屏蔽寄存器 IMR
保存对中断请求信号 IR的屏蔽状态
Di位为 1表示 IRi中断被屏蔽 ( 禁止 )
微机原理与接口技术
·

4
版机械工业出版社
2,8259A的工作方式
普通全嵌套方式中断优先权顺序固定不变,从高到低依次为 IR0,IR1,
IR2, IR7
对当前请求中断中优先权最高的中断 IRi予以响应送出向量号,对应 ISR的 Di位置位,至到中断结束在 ISR的 Di位置位期间,禁止再发生同级和低级优先权的中断,允许高级优先权中断的嵌套
普通中断结束方式中断结束是指 8259A结束中断的处理,以中断服务寄存器 ISR某位复位作为该中断结束的标志发出普通中断结束 EOI命令,把正在服务的中断中优先权最高的 ISR位复位微机原理与接口技术
·

4
版机械工业出版社
3,8259A的编程
指定其工作方式和控制中断处理过程
开始工作前,必须进行 初始化编程写入初始化命令 ICW:选择工作方式
工作期间,需要 中断操作编程写入操作命令字 OCW:按新要求工作,读取信息
OCW1:写入 IMR,控制中断屏蔽
OCW2:产生 EOI命令,改变优先权顺序
OCW3:控制读取 IRR,ISR,IMR和查询字微机原理与接口技术
·

4
版机械工业出版社
4,8259A的应用
主片 I/O地址,20H和 21H
从片 I/O地址,A0H和 A1H
16级中断使用情况:
IRQ0用做微机系统的日时钟中断请求
IRQ1用来请求处理器读取键盘扫描码

工作方式:
上升沿为中断请求 IRQ有效信号
IRQ0~ IRQ7和 IRQ8~ IRQ15中断向量号依次为 08H~ 0FH,
70H~ 77H
优先权顺序,IRQ0~ IRQ2,IRQ8~ IRQ15,IRQ3~ IRQ7
普通中断结束 EOI方式:需要 发送普通 EOI命令一般采用普通屏蔽方式,通过 写入 IMR允许中断微机原理与接口技术
·

4
版机械工业出版社
7.3.5 可屏蔽中断服务程序
可屏蔽中断服务程序随时中断,注意:
发送中断结束命令一般只能采用存储单元传递参数不要使用 DOS系统功能调用中断服务程序尽量短小
主程序需要修改中断向量,还要注意:
控制处理器的中断允许标志设置中断屏蔽寄存器微机原理与接口技术
·

4
版机械工业出版社
〔 例 7-6〕 可屏蔽中断服务程序- 1; 数据段
intmsg byte 'A 8259A Interrupt !',0dh,0ah,0
counter byte 0 ; 中断次数记录单元; 代码段
mov ax,3508h ; 获取原中断向量表项
int 21h
push es ; 利用堆栈保存
push bx
cli ; 关中断
push ds ; 设置新中断向量表项
mov ax,seg new08h
mov ds,ax
mov dx,offset new08h
mov ax,2508h
int 21h
pop ds
微机原理与接口技术
·

4
版机械工业出版社
〔 例 7-6〕 可屏蔽中断服务程序- 2
in al,21h ; 读出 IMR
push ax ; 保存原 IMR内容
and al,0feh ; 允许 IRQ0,其他不变
out 21h,al ; 设置新 IMR内容
mov counter,0 ; 设置中断次数初值
sti ; 开中断
start1,cmp counter,10 ; 主程序仅循环等待中断
jb start1 ; 中断 10次退出
cli ; 关中断
pop ax ; 恢复 IMR
out 21h,al
pop dx ; 恢复原中断向量表项
pop ds
mov ax,2508h
int 21h
sti ; 开中断微机原理与接口技术
·

4
版机械工业出版社
〔 例 7-6〕 可屏蔽中断服务程序- 3
new08h proc
sti ; 开中断
push ax ; 保护寄存器
push si
push ds
mov ax,@data ; 设置 DS
mov ds,ax
inc counter ; 中断次数加 1
mov si,offset intmsg ; 显示信息
call dpstri
mov al,20h ; 发送 EOI命令
out 20h,al
中断服务程序微机原理与接口技术
·

4
版机械工业出版社
〔 例 7-6〕 可屏蔽中断服务程序- 4
pop ds ; 恢复寄存器
pop si
pop ax
iret ; 中断返回
new08h endp
(1) INTR有效,请求中断
(2) 中断响应
……
(6) 执行中断服务程序
(7) 中断返回中断服务程序
start1,cmp counter,10
jbstart1
cli
主程序微机原理与接口技术
·

4
版机械工业出版社
〔 例 7-6〕 可屏蔽中断服务程序- 5
dpstri proc ; 显示字符串子程序
push ax ; 入口参数,DS:SI=字符串首址
push bx
dps1,mov al,[si]
cmp al,0
jz dps2
mov bx,0 ; 调用 ROM-BIOS功能显示 AL中字符
mov ah,0eh
int 10h
inc si
jmp dps1
dps2,pop bx
pop ax
ret
dpstri endp
A8259AInterrupt!
A8259AInterrupt!
A8259AInterrupt!
A8259AInterrupt!
A8259AInterrupt!
A8259AInterrupt!
A8259AInterrupt!
A8259AInterrupt!
A8259AInterrupt!
A8259AInterrupt! 显示结果微机原理与接口技术
·

4
版机械工业出版社
7.3.6 驻留中断服务程序
没有驻留的程序执行结束后,使用的主存空间被 DOS回收用于其他程序
驻留 TSR程序:程序执行结束保存在主存
中断服务程序要让其他程序使用必须驻留
用 DOS功能调用的 31H号实现程序驻留并返回功能编号 AH= 31H
入口参数 AL=返回代码
DX=驻留长度 (单位:节 )
功能说明 程序驻留返回 DOS
微机原理与接口技术
·

4
版机械工业出版社
〔 例 7-7〕 驻留中断服务程序- 1
include io16.inc
.code
new04h proc ; 中断服务程序
sti
push ax ; 保存寄存器
push bx
push si
push ds
mov ax,cs ; 数据在代码段中,故 DS= CS
mov ds,ax
mov si,offset intmsg
dps1,mov al,[si]
cmp al,0
jz dps2
微机原理与接口技术
·

4
版机械工业出版社
〔 例 7-7〕 驻留中断服务程序- 2
mov bx,0 ; 调用 ROM-BIOS功能显示 AL中字符
mov ah,0eh
int 10h
inc si
jmp dps1
dps2,pop ds ; 恢复寄存器
pop si
pop bx
pop ax
iret ; 中断返回
intmsg byte 0dh,0ah,'Overflow !',0 ; 溢出显示的信息
new04h endp ; 中断服务程序结束微机原理与接口技术
·

4
版机械工业出版社
〔 例 7-7〕 驻留中断服务程序- 3
start,mov ax,cs
mov ds,ax ; 设置 04H中断向量
mov dx,offset new04h
cli
mov ax,2504h
int 21h
sti
mov ax,offset tsrmsg ; 显示安装信息
call dispmsg
微机原理与接口技术
·

4
版机械工业出版社
〔 例 7-7〕 驻留中断服务程序- 4
mov dx,offset start ; 计算驻留程序的长度
add dx,256 ; 增加 256个字节
add dx,15
shr dx,4 ; 调整为,节,( 16个字节 )
mov ax,3100h ; 程序驻留,返回 DOS
int 21h
tsrmsg byte 'INT 04H Program Installed !',0dh,0ah,0
end start
驻留 单位,节= 16字节程序长度,N× 16+ M 字节驻留长度,N+ 1 节操作演示微机原理与接口技术
·

4
版机械工业出版社
7.4 DMA传送
希望克服程序控制传送的不足:
外设 → CPU→ 存储器外设 ← CPU← 存储器
直接存储器存取 DMA:
外设 → 存储器外设 ← 存储器
CPU释放总线,由 DMA控制器管理微机原理与接口技术
·

4
版机械工业出版社
7.4.1 DMA传送过程
1,CPU对 DMA控制器进行初始化设置
2,外设,DMAC和 CPU三者通过应答信号建立联系,CPU将总线交给 DMAC控制
3,DMA传送
DMA读存储器:存储器 → 外设
DMA写存储器:存储器 ← 外设
4,自动增减地址和计数,判断传送完成否示意图微机原理与接口技术
·

4
版机械工业出版社
7.4.2 DMA控制器
8237A每个 DMA通道有 4种工作方式
单字节传送方式每次 DMA传送时仅传送一个字节
数据块传送方式连续地传送数据,直到规定的字节数传送完
请求传送方式请求有效,连续传送数据请求无效,DMA传送被暂时中止再次有效,DMA传送又继续
级连方式多个 DMA控制器连接起来扩展 DMA通道
理解 I/O接口典型结构特点和 I/O端口编址方式
掌握输入输出指令
掌握 DOS平台的汇编语言编程
熟悉无条件传送,开关输入和 LED输出
掌握查询传送方式的特点和编程
熟悉中断传送方式的过程
熟悉 IA-32处理器主要中断类型
掌握可屏蔽中断和中断向量表
掌握内部中断服务程序的编写
理解中断控制器的作用
熟悉可屏蔽中断服务程序的编写
理解 DMA传送方式的特点教学要求第 7章 输入输出接口钱晓捷,微机原理与接口技术 ·第 4版 —— 基于 IA-32处理器和 32位汇编语言第 7章 习题
7.1 简答题 ( 1,2,3,8,10)
7.2 判断题 ( 4,5,6,7,8)
7.3 填空题 ( 2,3,6,7,9)
7.7 7.8 7.9
7.12 7.14 7.18 7.20