第八章 中断控制器8259

合集下载

CH8 中断控制器的编程结构、工作方式及编程

CH8 中断控制器的编程结构、工作方式及编程

8.1 8259A 的外部信号、编程结构和工作原理 1. 8259A外部信号及其含义
名称
CS WR
输入/输出 功
输入 输入 片选信号 写命令信号

RD
A0 D7-D0
输入
输入 输入/输出
读命令信号
A0地址线 双向数据总线
INT
INTA IR0-IR7 SP/EN CAS0-CAS3
输出
输入 输入 输入/输出 输入/输出
写入奇地 址端口
设置高5 位数值命令字举例
一片8259A上的8个中断源的8个中断类型码连续
如:设置ICW2=40H,则8259A的IR0~IR7,对应 的8个中断类型码为:40H,41H,42H,43H, 44H,45H,46H,47H 如果某8259A上IR4的中断类型码是0BCH;则该 8259A的IR0~IR7 ,对应的8个中断类型码为: 0B8H到0BFH
3. ICW3标志主片/从片初始化命令字
ICW3是在级联方式下,才需要设置的初始化
命令字
当ICWl的D1 位为0时,8259A在级联方式下
工作,必须设置ICW3
主片和从片需要分别设置ICW3
3. ICW3标志主片/从片初始化命令字
分别写入主从片中 的奇地址端口
3. ICW3标志主片/从片初始化命令字
特殊屏蔽方式
性质:通过编程置操作命令字OCW3的D6D5=11,进入工作方式 。通过编程置操作命令字OCW3的D6D5=10,退出工作方式。 特点:使某些优先权低的中断源可以申请服务,某些优先权低的 中断源被屏蔽不能申请中断服务。
3. 结束中断处理方式
什么是8259A的中断结束? 8259A利用中断服务寄存器ISR判断: 某位为1,表示正在进行中断服务; 该位为0,就是该中断结束服务。 下面说明如何使ISR某位为0,不反映CPU 的工作状态。

第八章 中断和可编程中断控制器8259A

第八章 中断和可编程中断控制器8259A
山东工商学院 高群
微型计算机原理与接口技术
第七章 微型计算机中断系统
例:某中断类型号为68H,其中断服务程序存在 A000H:2050H开始的存储单元,处理过程如图所示:
INT 68H MOV AX,0 ① 向量地址 =68H4 =1A0H ② 0:19C 类型 67H 中断向量 1A0 50 20 1A2 00 A0 1A4 类型 69H 中断向量 ⑤ 中断处理程序 A000:2050 STI PUSH DS A000 CS ③ 2050 IP


山东工商学院 高群
微型计算机原理与接口技术
第七章 微型计算机中断系统

可屏蔽中断从 8259A 的 8 个输入端引入,一般情况 下,优先级从高到低排列的次序为IR0~IR7。
山东工商学院 高群
微型计算机原理与接口技术
第七章 微型计算机中断系统

主程序运行中,IR2、IR4同时提出中断请求。IR2优先级 高,先为IR2服务。在IR2的服务程序中,要用STI指令开 中断,允许更高级中断进入。
专用 中断向量 (5 个)
2 号向量(非屏蔽)
00008H
1 号向量(单步)
00004H
0 号向量(除法错)
00000H
CS IP
山东工商学院 高群
16 位
微型计算机原理与接口技术
第七章 微型计算机中断系统
中断类型号是系统分配给每个中断源的代号。 其中00H~04H为专用中断,05H~3FH为系统保 留中断,用户一般是不能对它们定义的(这里面有一 些为固定的用途,如INT 21H即为MS-DOS的系统 调用),40H~FFH为用户定义的中断。 中断向量指针:中断向量最低字节存放的地址称 为中断向量指针(即这个中断向量存放的地址)。 中断向量指针=中断类型号×4

微原-第八章中断系统与可编程中断控制器8259A(精)

微原-第八章中断系统与可编程中断控制器8259A(精)

8.1 中断系统
一、中断系统中的名词概念 ●中断类型号
为了能使CPU识别中断源,从而能正确地 转向该中断源对应的中断服务程序入口,通 常用若干位二进制编码来给中断源编号,该 编号称为中断类型号。
8.1 中断系统
一、中断系统中的名词概念 ●中断断点
由于中断的发生,某个程序被暂停执行。 该程序中即将执行,但由于中断而没有被 执行的那条指令(即中断发生时CPU正在 执行指令的下一条指令)的地址称为中断 断点,简称断点
一、中断系统中的名词概念 ●中断系统 为实现计算机的中断功能而配置的相关硬 件、软件的集合称为中断系统。
8.1 中断系统
二、中断工作方式的特点 ●并行处理能力 ●实时处理能力 ●故障处理能力 ●多道程序或多重任务的运行
8.1 中断系统
三、中断管理 ●对中断全过程的控制 中断源发出中断请求时,微处理器能决 定是否响应这一中断。若允许响应这个中 断请求,微处理器能在保护断点后,将控 制转移到相应的中断服务程序去,中断处 理完后,微处理器又能返回到断点处继续 执行被中断的程序。
四、中断过程 ●中断服务
保保保保 保保保 保保保保 保保保 保保保保 保保
8.2 8086中断系统
一、8086微处理器的中断类型
8086用8位二进制码表示一个中断类型,共有 256个中断,可分为两大类: 可屏蔽中断 外部中断 非可屏蔽中断 中断 除法错中断 单步中断 内部中断 断点中断 溢出中断 软中断
8.1 中断系统
四、中断过程 ●中断响应 ▲响应内部中断条件: 当前指令执行 结束 ▲中断响应过程如下:
主程序 中断响应周期 中断服务程序 保护现场 开中断 中断处理 关中断 恢复现场 中断返回 识别中断源 FLAGS ,CS ,IP进栈 清TF,IF标志 读中断向量 ,转入中断 服务程序 断点

第8章 中断和可编程中断控制器8259A

第8章 中断和可编程中断控制器8259A
占4个单元存储空间)。
■ 中断向量表:在 软件中断
8086系统中,位于内存 中断类型号:指令中 0~3FFH的1KB存储区
外部可屏蔽中断
域,共可存储256个中 中断类型号:中断源或硬 断向量 ,这一地址连续
件通过DB提供 的空间称为中断向量表
专 用 中 断 (5个)
000 004 008 00C 010
■ 中断优先级排队
软件查询中断优先级 中断优先级排队 硬件查询中断优先级 矢量中断优先级
§8.1 中断


一.中断的概念和分类
4. 中断优先级和中断嵌套
若响应后,优先权放到最低, 如何编制程序?
MOV BL,01H IN AL,20H TEST AL,BL JZ L1 JMP IR0_SRV L1: ROL BL,1 TEST AL,BL JZ L2 JMP IR1_SRV L2: ……
1. 中断的定义和功能
■ 中断系统的基本功能:
◇ 能够提出中断请求。当中断源要求CPU为其服务时,必须 先向CPU提出申请,这是通过发出中断请求信号实现的。 INTR、NMI、INT n、INTO ◇ 能够进行中断响应、中断服务、中断返回。 ◇ 能够进行中断屏蔽与开放(IF)。系统中大部分中断源是 可屏蔽的,称为可屏蔽中断,而个别的中断请求是不能被屏蔽的, 称为非屏蔽中断。 ◇ 能够识别中断源。8086通过中断类型号识别。 ◇ 能够进行中断优先级排队。
软件中断(INT n)
② 内部中断
由CPU的某些运算错误引起的中断 溢出中断、除法错 为调试程序设置的中断 单步中断、断点中断
不受 IF 影响,CPU对这些中断永远开放!
§8.1 中断


一.中断的概念和分类

8中断及8259

8中断及8259
❖ 中断响应延迟一指令周期再响应的情况: 出现LOCK前缀封锁总线或正执行往段地 址寄存器送值的指令,如:MOV SS,AX
❖ 在遇到等待指令WAIT或串操作指令 (MOVSB/STOSB/LODSB等)时,可以响应, 但要等一个操作完成且必须注意保护现 场,以免返回后无法正确执行
19
8086的中断响应总线周期 :
32
8. 控制部件
❖ 输出中断请求信号INT至CPU ❖ INTA#接收来自CPU的中断应答信号,应为2
个负脉冲才有效;
33Байду номын сангаас
控制部件组成
控制部件 34
控制部件(7个寄存器)
❖ICW1~ICW4(用于初始化,一般工 作过程中不再改变)
❖OCW1~OCW3(用于中断处理的动态 控制,可多次修改)
35
❖通过OCW3设置,用于中断服务程序 中仅对本级中断进行屏蔽。对IMR置 1的同时使ISR的相应位清0,使得低 和高级中断都能被响应。
46
屏蔽中断源方式举例
中断源 IR7 IR6 IR5 IR4 IR3 IR2 IR1 IR0 普通 ISR IS7 IS6 IS5 IS4 IS3 IS2 IS1 IS2 屏蔽 内容 0 0 0 1 0 0 0 0 方式 IMR 1 0 0 1 1 1 0 0 特殊 ISR 0 0 0 0 0 0 0 0 屏蔽 方式 IMR 0 0 0 1 0 0 0 0
37
1. 设置优先级的方式
❖(1)全嵌套方式:(默认方式) ❖0级最高,只进行高级中断嵌套。PR
比较ISR与IRR中优先级高低决定是否 中断嵌套。
38
8级中断嵌套过程
39
(2)特殊全嵌套方式:(级联系统)
❖0级最高,但同级中断也会响应、 嵌套。级联系统中的主片必须使用 该方式,保证同一从片但不同优先 级的中断能被响应;但该方式又不 适合在中断请求频繁的场合下使用。

8259中断控制器

8259中断控制器

code end
mov mov out sti iret ends start
al,20h dx,04a0h dx,al
九、思考题
如果源接 IR2 程序应如何编写? assume cs:code code segment public org 100h start: cli mov dx,04a0h mov ax,13h out dx,ax ;ICW1, ICW4 NEEDED mov dx,04a2h mov ax,82h ;改为 82H out dx,ax ;ICW2 中断类型 80h mov ax,01 out dx,ax ;ICW4 mov ax,00h out dx,ax ;OCW1, 开放所有中断 mov ax,0 mov ds,ax mov si,200h ;初始化中断向量表 mov ax,offset hint mov ds:[si],ax add si,2 mov ds:[si],100h mov si,204h ;初始化中断向量表 mov ax,offset hint1 mov ds:[si],ax add si,2 mov ds:[si],100h sti mov bl,0feh waiting: mov al,bl ror bl,1 mov dx,04b0h out dx,al mov cx,0 loop $ jmp waiting
三、实验内容
用脉冲发生器作为中断源,每按一次脉冲发生器的按键即产生一次中断。 在中断服 务程序中,通过 74LS273 输出一个数据,以点亮与中断源相对应位置的 LED。
四、实验原理介绍
8259 中断控制器电路
本实验用到三部分电路:电平开关电路、简单 I/O 口扩展电路和 8259 中断控制器电 路。 电平开关电路、简单 I/O 口扩展电路参看实验一。 8259 中断控制器电路: 如上图所示, 其中: CS8259 是 8259 芯片的片选插孔, IR0~IR7 是 8259 的中断申请输入插孔。DDBUS 是系统 8 位数据总线。INT 插孔是 8259 向 8086CPU 的中断申请线,INTA 是 8086 的中断应答信号。

第8章-可编程中断控制器8259A

第8章-可编程中断控制器8259A

12
17
13
16
14
15
VCC
A0
INTA
IR7 IR6 IR5 IR4 IR3 IR2 IR1 IR0 INT
SP/EN
CAS2
6
内部寄存器选择。 A0=0:ICW1,OCW2 OCW3 A0=1:ICW2~ICW4, OCW1
从设备编程/ 缓冲器允许 引脚
8.1 8259A 的主要功能
8259A的内部结构
缓冲
比较
CAS0 CAS1 CAS2
初始化命令 寄存器组
操作命令 寄存器组
中断 服务 寄存器
(ISR)
01001001
IR6中 优断 先IR3 010级 析0分 器1000
(PR)
中断 请求 寄存器
(IRR)
IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7
中断00屏0蔽00寄0存0器1 (IMR)
8
8.1 8259A 的主要功能
存放正在服82务5的9A中的断内源级部别结,构当某个
中断被响应后,CPU发出第一个INTA 信号,ISR中的8 相应数位据置“18”,一直 被保存D到7~该D0中断处理总结线束。当多重中 断时,ISR的多位同缓时冲被置1。
INT
控制电路 内部控制逻辑
INTA
RD WR
主要内容
1
8259A的主要功能结构
2
8259A的工作过程
3
8259A的中断管理
4
8259A的编程
5
8259A的应用举例
3
NUIST
8.1 8259A 的主要功能
8259A的主要功能 1片8259A可以管理8级中断,且可以多片级联,最多可以用9 片构成64级的主从式中断管理。 对任何一级中断都可以单独屏蔽。 可以通过编程,使8259A工作在不同方式下,使用灵活。 能根据编程提供中断源的中断类型码。

中断控制器8259A及中断服务

中断控制器8259A及中断服务

实验内容:中断控制器8259A及中断服务1、实验连线原理见图1所示:8259A连线:(1)单脉冲与时钟单元“”插孔和8259的3号中断IR3插孔相连作为中断源;(2)8259的INT连8088的INTR(Xl5);(3)8259的INTA连8088的INTA(Xl2);(4)8259的CS端接EX1(8259A端口地址是60H,61H);(5)A0→A0。

(6)IOWR→IOWR;(7)IORD→IORD;(8)连通CPU和8259A的数据总线,JX4→JX17。

8255连线:(1)将8255的A端口的PA7到PA0连接到灯L1~L8上。

图1:实验连线图2、实验原理:按动按键AN0后,单脉冲与时钟单元部件会产生“”信号,该信号的上升沿作为中断请求送8259A的IR3引脚,如果8259A没有屏蔽该级中断并且其优先级最高,8259A向CPU的INTR引脚送中断,CPU如果允许响应中断,则进入中断处理子程序,中断处理子程序向8255A的A端口送数据,将灯L1~L8点亮1秒。

3、实验要求:单片8259A以缓冲方式连接数据总线,以上升沿作为中断请求信号,中断源通过IR3引入,优先级采用一般全嵌套方式,非自动中断结束方式,引脚IR0~IR7的中断类型号为08F~0FH,编写一个汇编程序,主程序完成8255和8259A的初始化,循环等待中断请求;中断处理子程序将灯点亮1秒后熄灭。

4、端口地址:5、系统内存分配:5、程序结构:CODE SEGMENTASSUME CS:CODEMAIN PROCSTART: ;主过程;初始化8259;初始化8255;调用3号中断 MAIN ENDPINT3 PRCO……;中断处理子程序 INT3 ENDPDELAY PROC…… ;延时子过程DELAY ENDPCODE ENDSEND6、程序流程图主程序代码:PA EQU 0FF28H ;8255A端口地址标号定义 PB EQU 0FF29HPC EQU 0FF2AHPCTL EQU 0FF2BHINTPORT1 EQU 0060H ;8259控制口地址标号定义 INTPORT2 EQU 0061HCODE SEGMENTASSUME CS:CODEORG 1000HMAIN PROCSTART: CLI ;CPU关中断MOV AL,80H ;初始化8255MOV DX,0FF2BHOUT DX,ALPUSH DS ;保护DSMOV AX,0MOV DS,AXMOV DI,0B*4MOV DX,OFFSET INT3MOV WORD PTR[DI],DXMOV DX,SEG INT3MOV WORD PTR[DI+2],DXPOP DS ;恢复DSMOV AL,13H ;初始化8259AOUT 60H,ALMOV AL,08HOUT 61H,ALMOV AL,0DHout 61H,ALMOV AL,0F7HOUT DX,AL ;开放8259A中断STI ;CPU开中断HLTWATING: JMP WATING ;循环等待中断请求MAIN ENDPINT3 PROCPUSH DXPUSH AX ;保护现场STIMOV DX,PAMOV AL,00HOUT DX,AL ;灯全亮CALL DELAY1S ;延时子程序MOV AL,0FFHOUT DX,AL ;灯全灭MOV DX,INTPORT1MOV AL,20HOUT DX,AL ;送中断结束命令 CLIPOP AXPOP DX ;恢复现场MOV AL,20HOUT 60H,ALIRET ;中断返回INT3 ENDPDELAY1S PROCPUSH CXPUSH DXMOV DX,04AGAIN: MOV CX,0FFFFHDELAY: LOOP DELAYDEC DXJNZ AGAINPOP DXPOP CXRETDELAY1S ENDPCODE ENDSEND START。

实验九 中断控制器8259实验

实验九 中断控制器8259实验
300H 8255B口 8255B口 301H 8255C口 8255C口 302H 8255控制寄存器 8255控制寄存器 303H
初始化
附录3 发送到LED的值 附录3 发送到LED的值

思考题
① 将A口改为B口,应如何修改程序 口改为B
和连线?
② 修改程序,使之向发光二极管输出的同 修改程序, 时,在显示器上同步输出.
附录1 几个DOS 附录1 几个DOS中断 DOS中断
功能01H,07H和 功能01H,07H和08H 功能描述:从标准输入设备(如:键盘) 功能描述:从标准输入设备(如:键盘)读入一个字 符.该中断在处理过程中将一直处于等待状态直 到有字符可读为止.该输入还可被重定向,如果 这样做,则无法判断文件是否已到文件尾 入口参数:AH=01H,过滤掉控制字符,并回显 入口参数:AH=01H,过滤掉控制字符,并回显 =07H,不过滤掉控制字符,不回显 =07H,不过滤掉控制字符,不回显 =08H,过滤掉控制字符,不回显 =08H,过滤掉控制字符,不回显 出口参数:AL=输入字符的ASCII码 出口参数:AL=输入字符的ASCII码
;LED灯熄灭
MOV AX,3572H INT 21H MOV INT0A_OFF,BX MOV BX,ES MOV INT0A_SEG,BX CLI MOV AX,2572H MOV DX,SEG LEDLIGHT PUSH DS MOV DS,DX MOV DX,OFFSET LEDLIGHT INT 21H POP DS STI IN AL,0A1H AND AL,0FBH OUT 0A1H,AL IN AL,21H AND AL,0FBH OUT 21H,AL
8259主片和从片简图 8259主片和从片简图

8259中断控制器

8259中断控制器
五、8259中断控制器 8259中断控制器
8259中断控制器是一个集成电路芯片, 8259中断控制器是一个集成电路芯片,它将中断接口与 中断控制器是一个集成电路芯片 优先级判断等功能汇集于身,常用于微型机系统. 优先级判断等功能汇集于身,常用于微型机系统.其内部 结构如下页图所示. 结构如下页图所示. 8位中断请求寄存器(IR)接受8个外部设备送来的中断请 位中断请求寄存器(IR)接受 接受8 求,每一位对应一个设备. 每一位对应一个设备. 中断请求寄存器的各位送入优先权判断器,根据中断屏蔽 中断请求寄存器的各位送入优先权判断器, 寄存器(IM)各位的状态来决定最高优先级的中断请求 各位的状态来决定最高优先级的中断请求, 寄存器(IM)各位的状态来决定最高优先级的中断请求,并 将各位的状态送入中断状态寄存器(IS). IS保存着判优 将各位的状态送入中断状态寄存器(IS). IS保存着判优 结果.由控制逻辑向CPU发出中断请求信号 发出中断请求信号INT, 结果.由控制逻辑向CPU发出中断请求信号INT,并接受 CPU的中断响应信号 CPU的中断响应信号INTA. 的中断响应信号INTA. 数据缓冲器用于保存CPU内部总线与系统数据总线之间进 数据缓冲器用于保存CPU内部总线与系统数据总线之间进 行传送的数据. 写逻辑决定数据传送的方向, 行传送的数据.读/写逻辑决定数据传送的方向,其中为 读控制,为写控制,为设备选择,A0为I/O端口识别 端口识别. 读控制,为写控制,为设备选择,A0为I/O端口识别.
详细分类的话,pentium共有 共有256种中断和异常 种中断和异常。 详细分类的话,pentium共有256种中断和异常。每种中 断给予一个编号,称为中断向量号(0—255), 断给予一个编号,称为中断向量号(0—255),以便发生 中断时,程序转向相应的中断服务子程序入口地址。 中断时,程序转向相应的中断服务子程序入口地址。 当有一个以上的异常或中断发生时,CPU以一个预先确 当有一个以上的异常或中断发生时,CPU以一个预先确 定的优先顺序为它们先后进行服务。中断优先级分为5 定的优先顺序为它们先后进行服务。中断优先级分为5级。 异常中断的优先级高于外部中断的级,这是因为异常中断 异常中断的优先级高于外部中断的级, 发生在取一条指令或译码一条指令或执行一条指令时出现 故障的情况下,情况更为紧急。 故障的情况下,情况更为紧急。 2.中断服务子程序进入过程 中断服务子程序进入过程 中断服务子程序的入口地址信息存于中断向量号检索表 实模式为中断向量表IVT, 内。实模式为中断向量表IVT,保护模式为中断描述符表 IDT。 IDT。 CPU识别中断类型取得中断向量号的途径有三种: 识别中断类型取得中断向量号的途径有三种: (1)指令给出 如软件中断指令INT 中的n (1)指令给出,如软件中断指令INT n 中的n即为中断向 指令给出, 量号。 量号。

8.3 可编程中断控制器8259A及其应用

8.3 可编程中断控制器8259A及其应用

8259A的工作方式( 8259A的工作方式(2)——结束中断的方式 的工作方式
注意: 注意:
级连方式下,一般不用中断自动结束方式, 级连方式下,一般不用中断自动结束方式,而用 非自动结束方式。不管用哪一种非自动结束方式, 非自动结束方式。不管用哪一种非自动结束方式, 都至少连发两次中断结束命令,一次对主片, 都至少连发两次中断结束命令,一次对主片,一 次对从片。 次对从片。
(5)数据总线缓冲器 数据总线缓冲器
是双向三态8位缓冲器,用于连接系统数据总线和 8259A 内 部 总 线 , 传 递 CPU 发 送 的 控 制 信 息 , 返 回 8259A的状态信息 的状态信息
(6)读/写控制电路 读 写控制电路
Di位为 表示 中断正在服务中;为0表示没有被服务 位为1表示 中断正在服务中; 位为 表示IRi中断正在服务中 表示没有被服务
第8章 中断系统
§8.3 可编程中断控制器8259A及其应用
第8章 中断系统
中断接口8259A是可编程中断控制器, 中断接口8259A是可编程中断控制器,用于管理 8259A是可编程中断控制器 8080/8085、8086/8088、80286/80386的可屏蔽中断 8080/8085、8086/8088、80286/80386的可屏蔽中断
8.3.3
8259A中断控制器的引脚( 8259A中断控制器的引脚(1) 中断控制器的引脚
8259A是一个使用+5V电源的28脚双列直插芯片。 8259A是一个使用+5V电源的28脚双列直插芯片。 是一个使用+5V电源的28脚双列直插芯片 中断请求输入信号,一般IR ① IR0~IR7—中断请求输入信号,一般IR0优先 级最高, 最低,但优先级可由编程改变。 级最高,IRQ7最低,但优先级可由编程改变。 INT—中断请求输出信号, CPU的INTR引脚 引脚。 ② INT—中断请求输出信号,接CPU的INTR引脚。 INTA—中断响应,由此脚接收来自CPU CPU的中断 ③ INTA—中断响应,由此脚接收来自CPU的中断 响应信号。 响应信号。 ④ CS—片选,当CS有效时,该芯片工作。 CS—片选, CS有效时 该芯片工作。 有效时, ⑤ WR—写信号,有效时CPU将命令字写入8259A。 WR—写信号,有效时CPU将命令字写入8259A CPU将命令字写入8259A。

第八章 中断控制器8259.讲义

第八章 中断控制器8259.讲义

第八章中断控制技术和8259第一节中断控制技术补充一中断处理的隐操作及堆栈的使用⒈隐操作CPU响应中断转去执行中断服务程序之前,其状态标志和程序断点地址进栈,以及中断返回时,断点和标志信息的退栈,是由机器硬件安排自动完成的,无需外界干预,故称为中断处理的隐操作,这些操作都使用堆栈。

⒉堆栈堆栈是一种专用的"后进先出"(LIFO)的存储区,用来保存断点、现场信息及传递子程序所需的参数,广泛用于中断处理、子程序调用及返回处理。

8088/8086的堆栈设置在存储器中,由SS堆栈段寄存器和SP堆栈指针来定位。

SS指向当前栈的段基址,是栈区的最低地址。

SP包含距段基址的偏移地址,也称为堆栈的深度,一个栈最大的深度只能占有64KB空间。

SP作为堆栈指针始终指向栈顶(TOS),栈顶在程序执行过程中,随着进栈(PUSH)与退栈(POP)操作而发生变化,有所谓向下生长和向上生长之分。

8088/8086的堆栈是向下生长型,即在进栈操作时,栈顶向下生长,使堆栈的地址单元号从大到小,递减2,趋向堆栈段基址SS;在退栈操作时,堆栈地址单元号从小到大,递增2,趋向栈底,空栈时,SP指向堆栈段的最高地址,即栈底。

栈底也就是SP的初值,栈底一经设定就固定不变。

⒊堆栈操作①建栈操作STACK1 SEGMENT STACKBUFFER DB 30 DUP(0)TOP_STACK LABEL WORDSTACK1 ENDSCODE SEGMENTASSUME CS:CODE,SS:STACK1START:┆MOV AX,STACK1MOV SS,AX ;将当前堆栈段基址送入SSMOV SP,TOP_STACK ;将堆栈段偏移地址送入SP┆②进栈操作PUSH AXPUSH BX③弹栈操作POP AXPOP BX二中断向量的装入中断向量并非常驻内存,而是开机上电时,由程序装入内存指定的中断向量区的。

BIOS程序负责0~1FH共32个中断向量的装入。

第8章中断系统和中断控制器8259A

第8章中断系统和中断控制器8259A
对于外部中断,CPU判断标志位IF,若CPU 允许响应外部中断(IF=1),向发出中断请 求的外设返回一个中断应答信号,否则CPU 不响应该中断请求。
4. 保存现场
CPU响应中断,首先需要禁止CPU响应中 断信号,并保存中断返回地址以及其它可 能被破坏的寄存器
8086/8088 CPU的基本中断现场保护需要 将CS寄存器和IP寄存器压入堆栈
普通屏蔽方式 特殊屏蔽方式
普通中断结束方式 特殊中断结束方式
中断触发方式 数据线连接方式
边沿触发方式 电平触发方式 缓冲方式 非缓冲方式
(1)中断触发方式 按照引入中断请求的方式,8259A有下列几种工作方式:
1>边沿触发方式 8259A将中断请求输入端出现的上升沿,作为中断请求
信号,上升沿后 相应引脚,可以一直保持高电平。
可编程,提高中断优先管理的灵活性。
2. 8259A外部结构
CS WR RD D7 D6 D5 D4 D3 D2 D1 D0 CAS0 CAS1 GND
1
8259A
2 3
4
5
6
7 8
9 10 11 12 13
14
28 27 26 25 24 23 22 21 20 19 18 17 16
15
VCC A0 INTA IR7 IR6 IR5 IR4 IR3 IR2 IR1 IR0 INT SP/EN CAS2
2. 优先级判别
多个中断源同时发起中断请求时,CPU需要 对多个中断源的优先级进行判断,响应最紧 急的中断请求。
中断源的优先级需要根据中断源的紧迫性、 重要性以及外设处理速度等进行综合考虑
不可屏蔽中断发生,优先响应不可屏蔽中断。
3. 中断响应

第八章 中断控制器8259

第八章 中断控制器8259
若 IR0~IR7 引脚上有中断申请,则将 IRR 相应位置1
② 中断屏蔽寄存器 IMR 决定 IRR 中的中断申请 是否进入优先级裁决器 PR。
IMR对应位为 0,允许中断申请进入优先级裁决器, 为 1,不允许进入,中断申请被IMR屏蔽。
③ 当前中断服务寄存器 ISR 记录CPU正在响应的中断。
ISR中的某位为1,表示CPU正在响应此级中断, ISR中的某位为 0,表示CPU没有或已响应完此级中断。
10
3). 结束中断处理的方式 (1) 中断自动结束方式 (2)一般的中断结束方式 (3)特殊的中断结束方式 4). 连接系统总线的方式 (1)缓冲方式 (2)非缓冲方式 5). 引入中断请求的方式 (1)边沿触发方式 (2)电平触发方式 (3)中断查询方式
11
4. 8259A的初始化命令字 初始化命令字必须按顺序填写,ICW1要求写 到偶地址端口,其余写到奇地址端口。 1)ICW1(芯片控制初始化命令字)
INT
0 0
OCW2 优先级、发EOI OCW3 特殊屏蔽设置
18
② 中断屏蔽寄存器 IMR 决定 IRR 中的中断申请 是否进入优先级裁决器 PR。 IMR对应位为 0,允许中断申请进入优先级裁决器, 为 1,不允许进入,中断申请被IMR屏蔽。
总线
D0 ~ D7 A0
A5 ~ A9 IOR
CA0 CA1 CA2
VCC
OCW3特殊屏蔽,查询方式设置
1
控制部分
GND
7
8259A的编程结构
8259A内部有9个 可读写的寄存器
8259A中断控制器 处理部分
0 ISR 0 当前 0 中断 0 服务 0 寄存器 0 0 0
IRR 0 中断申请 0 寄存器 0 PR

第8章 中断系统与中断控制器8259A

第8章  中断系统与中断控制器8259A

第8章中断系统与中断控制器8259A
(4)恢复现场:用弹栈指令把保护现场时入栈寄存器内容 恢复,注意应按先进后出的原则,恢复寄存器原来的内容 值。出栈后,堆栈指针也应恢复到进入中断处理时的位置。 (5)中断返回: 8086CPU必须根据中断结束方式,发中断 结束指令,并在最后用一条中断返回指令IRET。中断返 回指令IRET的作用是将断点的内容重新送入CS和IP寄存 器和标志寄存器,保证CPU从断点开始执行原来的程序。
第8章中断系统与中断控制器8259a存储器地址中断向量地址存储器内容中断向量对应中断类型号00000h中断服务程序入口偏移地址低8位00001h中断服务程序入口偏移地址高8位00002h中断服务程序入口段基址低8位00003h中断服务程序入口段基址高8位00004h中断服务程序入口偏移地址低8位00005h中断服务程序入口偏移地址高8位00006h中断服务程序入口段基址低8位00007h中断服务程序入口段基址高8位003f8h中断服务程序入口偏移地址低8位254003f9h中断服务程序入口偏移地址高8位003fah中断服务程序入口段基址低8位003fbh中断服务程序入口段基址高8位003fch中断服务程序入口偏移地址低8位255003fdh中断服务程序入口偏移地址高8位003feh中断服务程序入口段基址低8位003ffh中断服务程序入口段基址高8位表818086cpu中断向量表第8章中断系统与中断控制器8259a每个中断向量占用4个存储单元4个单元中的前2个单元存放的是中断服务程序所在段内的偏移量ip的内容16位地址
第8章中断系统与中断控制器8259A
3. 中断响应 根据中断请求的中断源的类型不同,中断响应分成以下两 种情况: (1)对非屏蔽中断请求的响应:该请求信号与CPU的NMI 引脚线相连接,如果CPU检测到该请求,CPU执行完当前 指令后就自动执行相应的中断服务程序,CPU不需要发出 中断响应信号。 (2)对可屏蔽中断INTR请求的响应:要检查IF,如IF=1, CPU允许中断,就会在结束当前指令后响应该外设的中断 请求。CPU响应可屏蔽中断时要自动完成下列几步操作:

微机接口技术课件 8 中断控制器8259

微机接口技术课件 8 中断控制器8259

溢出中断指令INTO
– INTO指令首先检查溢出标志OF位 • 如果OF=1,则启动一个中断号为4的中断过程 • 如果OF=0,不做任何操作
– INTO指令一般安排在有符号数算术运算指令后面,用于进行运 算结果的溢出检查
IMUL BX
;乘法指令
INTO
;若溢出,则启动中断服务处理
MOV RESULT, AX
中断向量表的设置
当中断到来时,CPU就会根据其中断类型码,确定中断向
量地址指针,设然置后中到中断断向向量量表表中的,作取用出中和断意向义量,形成入口
地址IP和CS,转入中断服务程序
系统提供的中断服务程序的设置由系统自动完成;程序员自
中断向量表的设置方法
定义的中断服务程序的中断向量应由程序员设置
中断向量表的设置方法 – 用传送指令直接设置 – 调用DOS的系统功能,并使用软中断指令INT 2lH 设 置
类型码为0 类型码为1 类型码为3 类型码为4
软件中断和硬件中断
软件中断特点: ➢ 用一条指令进入中断处理子程序,类型号由指令给出 ➢ 进入中断时,不需要执行中断响应总线周期 ➢ 不受IF位的影响 ➢ 正在执行软件中断时,如有外部硬件中断请求,则执行完当前指 令后,根据条件允许否给以响应 ➢ 软件中断没有随机性
使用中断返回指令,结束中断服务, 返回中断前的原程序
更详细的程序框架
入口地址:PUSH AX PUSH BX PUSH CX PUSH DX PUSH SI PUSH DI PUSH SP PUSH BP STI
ZDFWCX∶ … …
CLI POP BP POP SP POP DI POP SI POP DX POP CX POP BX POP AX STI IRET

8259可编程的中断控制器

8259可编程的中断控制器

82598259A是一个可编程的中断控制器,应用在实时的、以中断方式进行监控的计算机系统中。

用一片8259A可以管理8个等级的中断申请。

并可再经级联扩展多至8片8259A,使得中断等级可扩展多至64级。

8259A可以作为一个I/O外围器件,用系统软件编程,它所具有的多种优先权方式可以通过主程序在任何时候进行改变或重新组织。

这意味着可以按照全系统的外围情况和要求,设计出一个完整的中断结构,用来实现优先管理、中断屏蔽以及自动中断矢量转移。

它几乎可以适合于任何一种中断控制的结构,因而得到了广泛的应用。

1 引脚图8259A为28脚双列直插式封装的器件。

2 内部结构其工作过程如下:第一步:当中断请求线(IR0~IR7)上有信号输入时,就把中断请求寄存器IRR相应的位置1。

第二步:当IRR的一位置1后,就会与IMR中相应的屏蔽位进行比较,如该屏蔽位为0,则请求被发送给优先级分析器;如该屏蔽位为1,则封锁该请求。

第三步:当一个中断请求被输入优先级分析器后,将由优先权分析器判定其优先权,然后向CPU 发中断申请,INT脚变高(INT联到8086的INTR)。

第四步:CPU的INTR引脚为异步状态接收,也就是它可以在任何时间(与时钟无关)接收中断。

在软件控制下利用STI指令(中断置位)或CLI(中断复位)指令可分别将CPU的“中断开放标志位”IF置位或复位,可以做到接受或不理睬在INTR上的中断申请。

第五步:假定CPU中的IF标志为1,则CPU在完成当前指令的即进入中断响应周期,这个中断响应周期将标志寄存器入栈,然后清除IF标志,关闭了中断。

再将代码段寄存器和指令指针也入栈(这是为了从中断服务程序返回),然后CPU发出第二个 INTA脉冲通知8259A,说明8086已经允许了它的中断请求。

若8086用于“最小方式”,则INTA脉冲信号为8086 INTA引脚上的信号;若8086用于“最大方式”时,则8086 LOCK脚在中断响应序列执行期间变为低电平。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第八章中断控制技术和8259第一节中断控制技术补充一中断处理的隐操作及堆栈的使用⒈隐操作CPU响应中断转去执行中断服务程序之前,其状态标志和程序断点地址进栈,以及中断返回时,断点和标志信息的退栈,是由机器硬件安排自动完成的,无需外界干预,故称为中断处理的隐操作,这些操作都使用堆栈。

⒉堆栈堆栈是一种专用的"后进先出"(LIFO)的存储区,用来保存断点、现场信息及传递子程序所需的参数,广泛用于中断处理、子程序调用及返回处理。

8088/8086的堆栈设置在存储器中,由SS堆栈段寄存器和SP堆栈指针来定位。

SS指向当前栈的段基址,是栈区的最低地址。

SP包含距段基址的偏移地址,也称为堆栈的深度,一个栈最大的深度只能占有64KB空间。

SP作为堆栈指针始终指向栈顶(TOS),栈顶在程序执行过程中,随着进栈(PUSH)与退栈(POP)操作而发生变化,有所谓向下生长和向上生长之分。

8088/8086的堆栈是向下生长型,即在进栈操作时,栈顶向下生长,使堆栈的地址单元号从大到小,递减2,趋向堆栈段基址SS;在退栈操作时,堆栈地址单元号从小到大,递增2,趋向栈底,空栈时,SP指向堆栈段的最高地址,即栈底。

栈底也就是SP的初值,栈底一经设定就固定不变。

⒊堆栈操作①建栈操作STACK1 SEGMENT STACKBUFFER DB 30 DUP(0)TOP_STACK LABEL WORDSTACK1 ENDSCODE SEGMENTASSUME CS:CODE,SS:STACK1START:┆MOV AX,STACK1MOV SS,AX ;将当前堆栈段基址送入SSMOV SP,TOP_STACK ;将堆栈段偏移地址送入SP┆②进栈操作PUSH AXPUSH BX③弹栈操作POP AXPOP BX二中断向量的装入中断向量并非常驻内存,而是开机上电时,由程序装入内存指定的中断向量区的。

BIOS程序负责0~1FH共32个中断向量的装入。

用户若想使用硬、软中断,则要将中断服务程序入口地址装入中断向量指针所指定的中断向量表中。

下面举例说明填写中断向量表所用的三种方式:⒈用MOV指令填写中断向量表。

例如,假设中断类型号为60H,中断服务程序的段基址是SEG_INTR,偏移地址是OFFSET_INTR(006DH)。

则填写中断向量表的程序段为:┆CLICLDMOV AX,0MOV ES,AXMOV DI,4*60H ;中断向量指针→DIMOV AX,OFFSET_INTR ;中断服务程序偏移值→AXSTOSW ;AX→[DI][DI+1]中,然后DI+2MOV AX, SEG_INTR ;中断服务程序的段基址→AXSTOSW ;AX→[DI+2][DI+3]STI┆┆⒉将中断服务程序的入口地址直接写入中断向量表,其程序段为:┆┆MOV AX,00HMOV ES,AXMOV BX,60H*4 ;中断号*4→BXMOV AX,006DH ;中断服务程序偏移地址MOV ES:[BX],AX ;装入偏移地址PUSH CSPOP AX ;中断服务程序段基址MOV ES:[BX+2],AX ;装入段基址┆┆⒊采用DOS功能调用"INT 21H"中的AH=25H来装入中断向量,其程序段为:MOV AL,N ;中断号MOV AH,25H ;设置中断向量MOV DX,SEG_INTRMOV DS, DX ;DS指向中断程序段址MOV DX, OFFET_INTR ;DX指向中断程序偏移量INT 21H┆┆三编写中断服务程序⏹编写内部中断服务程序与编写子程序类似⏹利用过程定义伪指令PROC/ENDP⏹第1条指令通常为开中断指令STI⏹最后用中断返回指令IRET⏹通常采用寄存器传递参数⏹主程序需要调用中断服务程序⏹调用前,需要设置中断向量⏹利用INT n指令调用中断服务程序⏹编写80H号中断服务程序⏹功能:显示以“0”结尾字符串的功能⏹利用显示器功能调用INT 10H⏹字符串缓冲区首地址为入口参数⏹DS:DX(段地址:偏移地址)传递参数code segmentassume cs:code,ds,codeintoff dw ?intseg dw ?intmsg db ‘A Instruction Interrupt !’db 0dh,0ah,0start: mov ax,codemov ds,axmov ax,3580hint 21hmov intoff,bx ;保存偏移地址mov intseg,es ;保存段基地址push dsmov dx,offset new80hmov ax,seg new80hmov ds,axmov ax,2580hint 21hpop dsmov dx,offset intmsgint 80hnew80h procsti ;开中断push ax ;保护寄存器push bxpush simov si,dxnew1: mov al,[si]cmp al,0jz new2mov bx,0mov ah,0ehint 10hinc sijmp new1new2: pop si ;恢复寄存器pop bxpop axiret ;中断返回new80h endpmov dx,intoffmov ax,intsegmov ds,axmov ax,2580hint 21hmov ax,4c00hint 21hcode endsend start第二节中断控制器8259A一 8259A简介⒈概述Intel 8259A是可编程中断控制器PIC,可用于管理Intel 8080/8085、8086/8088、80286/80386的可屏蔽中断。

⒉ 8259A的基本功能①优先级排队管理:根据任务的轻重缓急或设备的特殊要求,分配中断源的中断等级。

8259A具有全嵌套、循环优先级、特定屏蔽多种方式的优先级排队管理。

②接受外部设备的中断请求:经过优先权判决找到哪一个中断源的中断请求级别最高,然后再向CPU提出中断申请INT;或者拒绝外设的中断请求,予以屏蔽。

一片8259A可以接受8个中断请求,经过级联可扩展至8片8259A,实现64级中断。

③提供中断类型号:为CPU实现程序的转移给出中断服务程序入口地址指针。

8259A最突出的特点是具有对中断服务程序入口地址的寻址能力,也就是当CPU响应中断申请时,通过8259A提供的中断类型号可以找到中断服务程序的入口地址,转移到中断服务程序去执行。

二 8259A的外部特性和内部结构⒈外部特性8259A为28脚双列直插式芯片。

外部引脚如上图所示。

各引脚的功能如下表所示。

8259A引脚定义及功能表⒉内部结构①中断请求寄存器IRR8位,每一位对应一个I/O设备,用来记录发生中断请求的外设。

当某一外设(I/O设备)发出中断请求信号IRQ时,对应位被置“1”。

简言之:用来存放要请求服务的所有中断请求信号。

②中断服务寄存器ISR8位,用来存放正在被服务,包括尚未服务完毕而中途被别的中断打断了的所有中断级。

③优先权判决电路PR用来识别各中断请求信号的优先级别。

当多个中断请求信号同时产生时,由判优电路判定哪一个中断请求具有最高优先权,若有中断正在被服务,则还需与ISR的当前中断服务优先级相比较,以决定是否将8259A的中断申请线INT上升为高电平。

④中断屏蔽寄存器IMRIMR对IRR起屏蔽作用,即对中断请求IR是禁止还是允许。

寄存器8位(D0~D7)对应8级中断屏蔽。

哪一级中断被屏蔽,哪位就写1,即禁止IR 提出中断请求;反之,就写0,不屏蔽,即允许IR提出中断请求。

屏蔽操作由屏蔽命令OCW1执行。

IMR可很方便地读和写。

⑤控制逻辑用于向8259A内部其它部件发控制信号,外部向CPU发INT信号,接收CPU发来的INTA信号,控制8259A进入中断服务状态。

控制逻辑是8259A全部功能的核心,包括一组方式控制字寄存器和一组操作命令字寄存器,以及相关的控制电路。

⑥数据总线缓冲器8位双向三态缓冲器,是8259A与CPU之间数据接口。

当CPU对8259A进行读操作时,数据总线缓冲器用来传输从8259A内部读至CPU的数据/状态信息和中断类型码,写操作时由CPU向8259A内部写入控制命令字。

⑦读/写控制逻辑用于控制对8259A的读、写操作。

控制信号有:RD、WR、CS、A0共同控制,完成规定的操作。

8259A芯片内可写的寄存器有:各种命令寄存器,可读的寄存器有:IRR、ISR、IMR等状态寄存器。

具体参考下表。

⑧级连缓冲器多片8259A可级连使用,最多可以组成64级中断优先级控制,此时一片8259A作主片,另外1~8片作从片,主从片的CAS0~CAS2并接在一起,作为级连总线。

在中断响应过程中,主片的CAS0~CAS2为输出线,从片的CAS0~CAS2为输入线。

在第一个INTA负脉冲结束时,主片把被响应的中断请求的从片编码送入CAS0~CAS2级连总线。

从片接收后,将主片送来的编码与自己的编码相比较,若相同,表明从片被选中,则在第二个中断响应总线周期把中断类型码送至D7~D0,供CPU读取。

⒊中断优先级分析器(参考下图)首先,由8个“与门”逻辑选出参加中断优先级排队的中断请求级,即8位IRR与8位IMR各位分别送入“与门”输入端,只有当IRR位置“1”(有中断请求)和:IMR位置“0”(开放中断请求)同时成立时,相应“与门”输入位有效。

其次,优先级编码器从参加排队的那些中断优先级中选出当前最高优先级,作为下一步比较的一个输入(A2A1A0)最后,把来自ISR的当前正在服务的优先级(B2B1B0)与当前请求的最高优先级(A2A1A0)一起送入比较器进行比较,当比较器A>B端输出有效时,并且只要当前存在非屏蔽的中断请求,“或门”输出有效时,8259A即向CPU 提出中断请求INT。

三 8259A的中断响应过程⒈中断响应周期⒉中断响应过程①当中断请求线(IR0~IR7)上有一条或若干条变为高电平,则使IRR 相应的位置1;②当IRR的某一位或若干位被置1后,若IMR中相应的位为1,则屏蔽该中断请求,若IMR中相应位为0,则中断请求送PR;③ PR把接到的中断请求的最高优先级与ISR正中在服务的中断级比较,若前者级别高于后者,或CPU不在服务中,则置INT为高电平,否则INT低电平;④ CPU采样到INT为高后,响应中断进入连续的两个可屏蔽中断响应周期;⑤ 8259A接到第一个INTA负脉冲后,将对应的ISR位置位,而相应的IRR被复位;⑥ 8259A接到第二个INTA负脉冲后(第二个中断响应周期),在该脉冲期间,8259A向CPU发出中断类型码。

⑦若8259A处于AEOI(自动中断结束)方式,则第二个INTA负脉冲结束时,相应的ISR位被复位。

相关文档
最新文档