微机原理 IO口 课件.ppt_第1页
微机原理 IO口 课件.ppt_第2页
微机原理 IO口 课件.ppt_第3页
微机原理 IO口 课件.ppt_第4页
微机原理 IO口 课件.ppt_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、微机原理及应用,信息与电气工程学院,第8章 输入输出接口(8学时),8.3 中断系统 8.3.1 中断类型 8.3.2 中断向量表 8.3.3 中断服务程序 8.3.4 中断控制器及其应用,8.3 中断系统,中断是微机系统中非常重要的一种技术 外部中断:实时响应外部设备的数据传送请求、及时处理外部意外或紧急事件 内部中断:为用户提供了发现、调试、解决程序执行时异常情况的有效途径 IA-32微处理器的中断系统 采用向量中断机制,能够处理256个中断 用中断向量号0255区别 可屏蔽中断需要中断控制器实现优先权管理,8.3.1 中断类型除法错中断,执行除法指令时,若除数为0或商超过了寄存器所能表达

2、的范围,产生的一个向量号为0的内部中断 产生除法错中断的程序 ;数据段 msgdb 0dh, 0ah, No divide overflow ! , $ ;代码段 call readuiw;输入一个16位无符号整数,存于AX mov bl, 1 div bl mov dx, offset msg mov ah, 9 int 21h,8.3.1 中断类型指令中断,指令中断:在执行中断指令INT N时产生的一个向量号为N的内部中断 INT N通常为2字节机器代码 断点中断:向量号为3的指令中断“INT 3” INT 3只有1字节,机器代码是CCH 用做程序断点调试的中断,8.3.1 中断类型溢出中

3、断,执行溢出中断指令INTO时,若溢出标志OF为1,产生的一个向量号为4的内部中断 产生溢出中断的程序 ;数据段 msgdb 0dh, 0ah, No overflow !, $ ;代码段 call readuib;输入一个8位有符号整数,存于AL add al, 100 jno noflow into jmp done,noflow:mov dx, offset msg mov ah, 9 int 21h done:,8.3.1 中断类型单步中断,单步中断:单步标志TF为1,则在每条指令执行结束后产生一个向量号为1的内部中断 调试程序常利用它实现对程序的单步调试 80286开始又引入其他内部

4、中断,称为异常,8.3.1 中断类型非屏蔽中断,外部通过非屏蔽中断NMI请求信号提出的中断 微处理器在当前指令执行结束予以响应 中断向量号是2 主要用于处理系统的意外或故障 IBM PC系列微机的非屏蔽中断用于 主板上存储器产生奇偶校验错 I/O通道上产生奇偶校验错 数值协处理器产生异常,8.3.1 中断类型可屏蔽中断,外部通过可屏蔽中断INTR请求信号提出的中断 在允许可屏蔽中断的条件下,当前指令执行结束后予以响应 同时输出可屏蔽中断响应信号INTA*,产生可屏蔽中断响应总线周期 通常需要中断控制器负责处理多个中断优先权排队等管理工作 主要用于与外设进行数据交换,可屏蔽中断从外部获取中断向量

5、号,8.3.1 中断类型中断标志,IF1,微处理器开中断 可以响应,允许中断,中断开放 IF0,微处理器关中断 不能响应,禁止中断,中断被屏蔽 关中断的情况 系统复位后 任何一个中断被响应后 执行关中断指令CLI后 开中断的方法 执行开中断指令STI 执行中断返回指令IRET恢复中断前IF状态,8.3.1 中断类型中断响应过程(1),指令中断或异常 单步中断 非屏蔽中断NMI 段超界异常 可屏蔽中断INTR,8.3.1 中断类型中断响应过程(2),将标志寄存器压入堆栈,保护标志位 禁止可屏蔽中断IF、单步中断TF 将被中断指令的逻辑地址压入堆栈 根据向量号获取中断向量 执行服务程序 中断返回I

6、RET 断点地址、标志寄存器出栈恢复 控制又返回到断点指令继续执行,8.3.2 中断向量表实方式的中断向量表结构,中断向量:中断服务程序入口地址(首地址) 含有16位段地址、16位偏移地址的逻辑地址 按照“低对低、高对高”的小端方式存储 低字部分是偏移地址,高字部分是段地址 256个中断占用1KB区域,形成中断向量表 物理地址00000H,对应向量号从0开始 依次每4个字节安排一个中断向量,中断向量的物理地址N4,中断向量的物理地址N4,8.3.2 中断向量表实方式的中断向量表结构,8.3.2 中断向量表保护方式的中断描述符表,中断向量(4B)中段描述符(8B) 段选择器(16位) 偏移地址(

7、32位) 特权保护 中段描述符表IDT 2568B = 2KB 中段描述符表地址寄存器IDTR,门描述符,8.3.3 中断服务程序(1),利用过程定义伪指令PROC、ENDP 要执行STI指令开放可屏蔽中断 最后执行IRET指令返回调用程序 内部中断服务程序采用寄存器传递参数 中断调用指令INT N执行内部中断服务程序 获取中断向量:AH35H号DOS功能调用 设置中断向量:AH25H号DOS功能调用,8.3.3 中断服务程序(2),8.3.3 中断服务程序内部中断服务程序(1),;数据段 intoffdw ? ;用于保存原中断服务程序的偏移地址 intsegdw ? ;用于保存原中断服务程序

8、的段地址 intmsgdb A Instruction Interrupt!, 0dh, 0ah, 0 ;字符串(以0结尾) ;代码段(主程序) mov ax, 3580h;获取原80H中断向量 int 21h mov intoff, bx;保存偏移地址 mov intseg, es;保存段基地址,8.3.3 中断服务程序内部中断服务程序(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 in

9、tmsg;设置入口参数DS和DX int 80h;调用80H中断服务程序,显示字符串,8.3.3 中断服务程序内部中断服务程序(3),;代码段(主程序) mov dx, intoff;恢复原80H中断向量 mov ax, intseg;注意先设置DX、后设置DS入口参数 mov ds, ax;先改变了DS,就不能准确取得intoff变量值 mov ax, 2580h int 21h,8.3.4 中断控制器及其应用中断控制器的寄存器(1),管理外设的多个中断请求并进行优先权排队等工作 IBM PC/AT机使用两个Intel 8259A可编程中断控制器 每个管理8级中断,请求引脚:IR0IR7 每

10、级中断可单独被屏蔽或允许 多个芯片级联最多扩展至64级中断 为每级中断提供中断向量号,8.3.4 中断控制器及其应用中断控制器的寄存器(2),8259A的3个8位可读写寄存器 中断请求寄存器IRR 保存8个外界中断请求信号IR0IR7的请求状态 中断服务寄存器ISR 保存正在被8259A服务的中断状态 中断屏蔽寄存器IMR 保存对中断请求信号IR的屏蔽状态,8.3.4 中断控制器及其应用中断控制器的工作方式,普通全嵌套方式(默认) 中断优先权顺序固定不变,从高到低依次为IR0、IR1、IR2、IR7 对当前请求中断中优先权最高的中断IRi予以响应 送出中断向量号,对应ISR的Di位置位,直到中

11、断结束 在ISR的Di位置位期间,禁止再发生同级和低级优先权的中断,允许高级优先权中断的嵌套 普通中断结束方式 中断结束:指8259A结束中断的处理,以中断服务寄存器ISR某位复位作为该中断结束的标志 发出普通中断结束EOI命令,把正在服务的中断中优先权最高的ISR位复位,8.3.4 中断控制器及其应用中断触发方式,中断请求信号IR的两种触发方式 边沿触发方式上升沿 电平触发方式高电平,8.3.4 中断控制器及其应用中断控制器的编程,指定其工作方式和控制中断处理过程 开始工作前,必须进行初始化编程 写入初始化命令ICW:选择工作方式 工作期间,需要中断操作编程 写入操作命令字OCW:按新要求工

12、作,读取信息等 OCW1:写入IMR,控制中断屏蔽 OCW2:产生EOI命令,改变优先权顺序 OCW3:控制读取IRR、ISR、IMR、查询字,8.3.4 中断控制器及其应用初始化命令字及其编程(1),初始化命令字ICW1 D4位:1表示该命令字是ICW1 LTIM:设置中断请求信号的有效形式 1表示高电平有效;0表示上升沿有效 SNGL:设置8259A的工作方式 1表示单片工作方式;0表示级联工作方式 IC4:设置是否设置初始化命令字ICW4 1表示设置;0表示不设置 写入偶地址,即A0=0,8.3.4 中断控制器及其应用初始化命令字及其编程(2),初始化命令字ICW2 设置中断向量号基值

13、中断向量号基值:0号中断源IR0对应的中断向量号 高5位为ICW2的高5位,低3位为0 中断向量号:高5位为ICW2的高5位,低3位由当前CPU响应的中断决定 IR0IR7分别对应000111 写入奇地址,即A0=1,8.3.4 中断控制器及其应用初始化命令字及其编程(3),初始化命令字ICW3 用于级联方式(ICW1的SNGL=0) 主片:S0S7指示用于级联连接的中断源请求信号引脚IRn 1表示有级联,0表示无级联 从片:高5位为0,低3位指示与其相连的主片IRn的编号 000111分别对应IR0IR7 写入奇地址,即A0=1,8.3.4 中断控制器及其应用初始化命令字及其编程(4),初始

14、化命令字ICW4 ICW1中的IC4=1时设置 写入奇地址,即A0=1,8.3.4 中断控制器及其应用初始化命令字及其编程(5),初始化编程,8.3.4 中断控制器及其应用IBM-PC AT微机系统的外中断,8.3.4 中断控制器及其应用中断控制器的应用(1),主片I/O地址:20H、21H;从片I/O地址:A0H、A1H 工作方式 上升沿为中断请求IRQ有效信号 IRQ0IRQ7和IRQ8IRQ15中断向量号依次为08H0FH,70H77H 普通全嵌套优先权方式(高低):IRQ0IRQ2,IRQ8IRQ15,IRQ3IRQ7 普通中断结束EOI方式:需要发送普通EOI命令 普通屏蔽方式,通过

15、写入IMR允许中断,8.3.4 中断控制器及其应用中断控制器的应用(2),主片 mov al, 11h out 20h, al mov al, 08h out 21h, al mov al, 04h out 21h, al mov al, 01h out 21h, al,从片 mov al, 11h out 0a0h, al mov al, 70h out 0a1h, al mov al, 02h out 0a1h, al mov al, 01h out 0a1h, al,8.3.4 中断控制器及其应用操作命令字及其编程(1),操作命令字OCW1 用来设置中断源的屏蔽状态 Mi=1,表明相应中

16、断源IRi的中断请求被屏蔽 Mi=0,表明相应中断源IRi的中断请求未屏蔽 写入奇地址,即A0=1 对同一地址的输入指令将把OCW1设置的屏蔽字读入CPU,8.3.4 中断控制器及其应用操作命令字及其编程(2),操作命令字OCW2 用来控制中断结束方式,修改优先权管理方式 写入偶地址,即A0=0 特征位D4D3为00 R位 0表示中断级的优先顺序为完全嵌套方式 1表示中断级的优先顺序为循环优先方式,8.3.4 中断控制器及其应用操作命令字及其编程(3),操作命令字OCW2 SL位 1表示L2L0指定一个中断级 000111分别对应IR0IR7 0表示L2L0无意义 EOI位 1表示OCW2操作

17、命令字用于控制中断结束方式 0表示OCW2操作命令字不用于控制中断结束方式,8.3.4 中断控制器及其应用操作命令字及其编程(4),8.3.4 中断控制器及其应用操作命令字及其编程(5),操作命令字OCW3 用来管理特殊屏蔽方式和查询排序方式,控制中断状态的读出 写入偶地址,即A0=0 特征位D4D3为01 ESMM位与SMM位 ESMM=0表示不置位也不复位特殊屏蔽方式,SMM位无意义 ESMM=1且SMM=1,表示置位特殊屏蔽方式 ESMM=1且SMM=0,表示复位特殊屏蔽方式,8.3.4 中断控制器及其应用操作命令字及其编程(6),操作命令字OCW3 P位 P=1表示设置查询排序方式 向

18、8259A发OCW3操作命令字,使P=1 通过对同一地址的读操作识别中断请求 若有中断请求,则识别出最高级别的中断请求,使ISR中的相应位置1,8.3.4 中断控制器及其应用操作命令字及其编程(7),查询字 I=0,表示无中断请求,W2、W1、W0三位无意义 I=1,表示有中断请求,W2、W1、W0三位组合指明请求服务的各中断源中最高的中断级,8.3.4 中断控制器及其应用操作命令字及其编程(7),操作命令字OCW3 RR位、RIS位 RR、RIS为10(P=0)时,对同一地址的输入指令把8259A的中断请求寄存器IRR的内容读入CPU RR、RIS为11(P=0)时,对同一地址的输入指令把8

19、259A的中断服务寄存器ISR的内容读入CPU RR、RIS为00和01时,无意义,8.3.4 中断控制器及其应用中断控制器的应用(3),普通中断结束EOI方式 对主片8259A的IRQ0IRQ7中断,发送普通EOI命令的程序段 mov al, 20h out 20h, al 对从片8259A的IRQ8IRQ15中断,发送两个EOI命令:一个给主片,一个给从片 mov al, 20h out 0a0h, al;写入从片EOI命令 out 20h, al;写入主片EOI命令,8.3.4 中断控制器及其应用中断控制器的应用(4),普通屏蔽方式 允许日时钟IRQ0和键盘IRQ1中断,其他中断状态不变

20、 in al, 21h;读出IMR(主片,从片用A1H地址) and al, 0fch;只允许IRQ0和IRQ1,其他不变 out 21h, al;写入IMR(主片,从片用A1H地址),8.3.4 中断控制器及其应用中断控制器的编程,8259A的写操作及各命令字的区分,8.3.4 中断控制器及其应用中断控制器的编程,8259A的读操作及各寄存器的区分,若OCW3的P=1,查询字,8.3.4 中断控制器及其应用IBM-PC AT微机系统的外中断,8.3.4 中断控制器及其应用中断控制器的应用(1),主片I/O地址:20H、21H;从片I/O地址:A0H、A1H 工作方式 上升沿为中断请求IRQ有

21、效信号 IRQ0IRQ7和IRQ8IRQ15中断向量号依次为08H0FH,70H77H 普通全嵌套优先权方式(高低):IRQ0IRQ2,IRQ8IRQ15,IRQ3IRQ7 普通中断结束EOI方式:需要发送普通EOI命令 普通屏蔽方式,通过写入IMR允许中断,8.3.4 中断控制器及其应用中断控制器的应用(2),主片 mov al, 11h out 20h, al mov al, 08h out 21h, al mov al, 04h out 21h, al mov al, 01h out 21h, al,从片 mov al, 11h out 0a0h, al mov al, 70h out

22、0a1h, al mov al, 02h out 0a1h, al mov al, 01h out 0a1h, al,8.3.4 中断控制器及其应用中断控制器的应用(3),普通中断结束EOI方式 对主片8259A的IRQ0IRQ7中断,发送普通EOI命令的程序段 mov al, 20h out 20h, al 对从片8259A的IRQ8IRQ15中断,发送两个EOI命令:一个给主片,一个给从片 mov al, 20h out 0a0h, al;写入从片EOI命令 out 20h, al;写入主片EOI命令,8.3.4 中断控制器及其应用中断控制器的应用(4),普通屏蔽方式 允许日时钟IRQ0和

23、键盘IRQ1中断,其他中断状态不变 in al, 21h;读出IMR(主片,从片用A1H地址) and al, 0fch;只允许IRQ0和IRQ1,其他不变 out 21h, al;写入IMR(主片,从片用A1H地址),8.3.4 中断控制器及其应用可屏蔽中断服务程序(1),可屏蔽中断服务程序随时进行中断 发送中断结束命令 一般只能采用存储单元传递参数 不要使用DOS系统功能调用 中断服务程序尽量短小 主程序需要修改中断向量 控制微处理器的中断允许标志 设置中断屏蔽寄存器,8.3.4 中断控制器及其应用可屏蔽中断服务程序(2),;数据段 intmsgdb A 8259A Interrupt !

24、 , 0dh, 0ah, 0 counterdb 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,8.3.4 中断控制器及其应用可屏蔽中断服务程序(3),;代码段(主程序) in al, 21h;读出IMR push ax;保存原IMR内容 and al, 0feh;允许IRQ0,其他不

25、变 out 21h, al;设置新IMR内容 mov counter, 0;设置中断次数初值 sti;开中断 ;主程序完成设置,可以处理其他事务 start1:cmp counter, 10;本例的主程序仅循环等待中断 jb start1;中断10次退出,8.3.4 中断控制器及其应用可屏蔽中断服务程序(4),;代码段(主程序) cli;关中断 pop ax;恢复IMR out 21h, al pop dx;恢复原中断向量 pop ds mov ax, 2508h int 21h sti;开中断,8.3.4 中断控制器及其应用可屏蔽中断服务程序(7),8.3.4 中断控制器及其应用驻留中断服务

26、程序(1),没有驻留的程序执行结束后,使用的主存空间被DOS回收用于其他程序 驻留(TSR)程序:程序执行结束保存在主存 中断服务程序如果要让其他程序使用必须驻留 用DOS功能调用的31H号实现程序驻留并返回,8.3.4 中断控制器及其应用驻留中断服务程序(2),;代码段(中断服务程序) jmp start new04hproc;中断服务程序 sti push ax;保存寄存器 push bx push si push ds mov ax, cs;数据在代码段,故DSCS mov ds, ax mov si, offset intmsg dps1:mov al, si cmp al, 0 jz

27、 dps2,8.3.4 中断控制器及其应用驻留中断服务程序(3),;代码段(中断服务程序) mov bx, 0;显示AL中的字符 mov ah, 0eh int 10h inc si jmp dps1 dps2:pop ds;恢复寄存器 pop si pop bx pop ax iret;中断返回 intmsg db 0dh, 0ah, Overflow !, $ new04hendp;中断服务程序结束,8.3.4 中断控制器及其应用驻留中断服务程序(4),;代码段(主程序) start:mov ax, cs mov ds, ax mov dx, offset new04h ;设置04H中断向

28、量 cli mov ax, 2504h int 21h sti mov dx, offset tsrmsg;显示安装信息 mov ah, 09h int 21h,8.3.4 中断控制器及其应用驻留中断服务程序(5),;代码段(主程序) mov dx, offset start;计算驻留内存程序的长度 add dx, 15 shr dx, 4;调整为以“节”(16个字节)为单位 mov ax, 3100h;程序驻留,返回DOS int 21h tsrmsgdb INT 04H Program Installed ! db 0dh,0ah,$,驻留单位:节16字节 程序长度:N16M 字节 驻留长度:N1 节,小结,理解I/O接口典型结构的特点 理解I/O端口的编址方式 掌握输入输出指令 熟悉无

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论