汇编语言第六章 输入输出和中断
输入输出和中断
中断向量表
• 我们给每种中断都安排一个中断类型号。IBMPC中断系统能处理 256种类型的中断,类型号为0—0FFH。如系统定时器的中断类型 为08。键盘为09,内中断中的除法错误的中断类型为0,等等。每 种类型的中断都由相应的中断处理程序来处理,中断向量表就是 各类型中断的处理程序的地址表。 • 我们知道存储器的低1.5K字节,地址从0到5FFH为系统占用,其 中最低的1K字节,地址从0到3FFH存放中断向量表。中断向量表 中的256项中断向量对应256种类型的中断,每项占用四个字节, 其中高位两个字节存放中断处理程序的段地址(16位),低位两个 字节存放偏移地址(16位)。因为各处理程序的段地址和偏移地址 在中断向量表中按中断类型号顺序存放。所以每类中断向量的地 址可由中断类型号乘以4计算出来。例如,报警中断的中断类型为 4AH,它的中断向量地址为4AH* 4=128H,即128H,129H两字 节存放的是报警中断处理程序的偏移地址,12AH,12BH两字节 存放的是报警中断处理程序的段地址.
输入输出和中断 汇编语言王爽版第6章
6.1 输入输出基本概念 6.2 中断基本概念 6.3 DOS和BIOS中断调用方式 键盘I/O 显示器I/O 6.4 中断程序设计
本章重点:输入/输出指令、中断类型、中断向量 表、中断处理过程、DOS/BIOS服务。
本章难点:中断向量表概念理解、DOS/BIOS中断程序设计。
BIOS调用例子列举(续)
2、显示器I/O 显示器接口—显示适配卡支持两种显示方式:文本显示方式和 图形显示方式 。 文本显示方式是指以字符为单位显示的方式。在这种显示方式 下,显示缓冲存储区中存放的是字符的ASCII码和对应的显 示属性,每个字符占用两个字节的空间。
彩色图形显示方式中,显示缓冲存储区中存放的是“像素”点 的信息,每个像素对应屏幕上的一点位置,它的值为“0”或 者“1”,为“0”就不在屏幕上打点,为“1”则在屏幕上打点。
AL=显示模式(0~13H)
1
置光标类型
(CH)0~3=光标开始行 (CL)0~3=光标结束行 BH=页号;DH/DL =行号/列号 CH/CL= 光 标 开始 /结 束 行 DH/DL =行号/列号
2
置光标位置
3
读光标位置
BH=页号
5
置当前显示页
AL=页号
6
屏幕初始化或上卷
AL=上卷行数(AL=0时全屏幕为空白) BH=卷入行属性 CH/CL=左上角行号/列号 DH/DL=右上角行号/列号
例6-1:读键盘输入,显示其中的ASCII字符,以回车退出。 code segment assume cs:code start: mov ah,0 int 16h cmp al,0dh je exit mov dl,al mov ah,2h int 21h jmp start exit:mov ah,4ch int 21h code ends end start
汇编语言第六章 输入输出和WIN32编程
第六章输入/输出和中断和WIN32编程前面已经讲过有关输入/输出的问题,主要是用DOS中断调用INT21H来完成键盘输入以及屏幕显示。
对于计算机来说,仅有这种输入/输出还不够,因为DOS的中断调用无法实现对其它外设的控制。
关于如何用汇编程序实现主机与外设之间的信息交换,将是本章的主要内容。
包括:输入输出指令的使用格式及功能;主机与外部设备之间传送数据的方式;中断的概念及中断处理程序设计;WIN32程序设计基本方法与技术。
6.1I/O设备与数据传送方式一.主机与外设之间数据的传送方式计算机与外设之间传送数据有如下4中方式:1.无条件传送方式:适合于CPU与外设同步的情况。
直接传送,高速外设与主机之间数据传送。
2.查询传送方式:适合于低速外设与主机之间数据传送。
3.中断传送方式:适合于低速外设与主机之间数据传送。
4.直接存贮器(又称DMA)传送方式:适合于高速外存与主机的数据传送。
其中:无条件传送和查询传送,直接在端口上利用IN和OUT 指令传送数据。
中断传送:在DOS及BIOS层上通过系统功能调用的中断指令实现。
直接存贮方式:在端口上,采用通道技术实现。
在计算机准备好接收,外设准备好传送数据时,外设向CPU发一个请求DMA 传送信号,此时CPU让出总线控制权,使外设与主存在短时间内成批传送数据。
二.外设与主机传送的接口与信息1.端口与接口计算机的外设都是通过接口连接到系统上,每个接口由一组寄存器组成,寄存器都有一个称为I/O端口的地址编码。
也就是,每一台外设都通过硬件接口与主机端口相连,并交换信息。
主机外设CPU内存I/O 存贮空间(端口)接口I/O 操作接口的组成:设备状态寄存器、设备控制寄存器、数据寄存器。
上述寄存器在I/O 空间中都有固定编码。
I/O 端口的地址空间:允许设置64K 个8位端口或32K 个16位端口。
对I/O 空间的访问用IN 或OUT 两个指令。
I/O 端口地址分配,可以查手册。
输入输出和中断 汇编语言王爽版第6章
高级语言 磁 盘 操 作 系 统 (DOS)
高级语言 其他操作系统
基 本 输 入 /输 出 系 统 (BIOS) IBM -PC 机 硬 件 系 统
用户程序和操作系统关系示意图
从图可见 BIOS 程序直接建立在硬件基础上,磁盘操 作系统(DOS)和其他操作系统建立在BIOS基础上,各种高 级语言则建立在操作系统基础上。用户程序可以使用高级语 言,也可以调用DOS或其他操作系统,还可以调用BIOS,甚 至直接指挥硬件设备。 BIOS 中断程序处于 DOS 功能调用和硬件环境之间。和 DOS功能调用相比其优点是效率高,缺点是编程相对复杂;和 直接对硬件编程相比,优点是实现相对容易,缺点是效率相对 低。通常应用程序调用 DOS提供的系统功能,完成输入/输出或 其他操作,这样做用户可以少考虑硬件,实现起来容易。在下 列情况下可考虑使用BIOS中断: (1) 有些功能DOS没有提供,但BIOS提供了; (2) 有些场合无法使用DOS功能调用; (3) 其他原因。
BIOS调用例子列举(续)
2、显示器I/O 显示器接口—显示适配卡支持两种显示方式:文本显示方式和 图形显示方式 。 文本显示方式是指以字符为单位显示的方式。在这种显示方式 下,显示缓冲存储区中存放的是字符的ASCII码和对应的显 示属性,每个字符占用两个字节的空间。
彩色图形显示方式中,显示缓冲存储区中存放的是“像素”点 的信息,每个像素对应屏幕上的一点位置,它的值为“0”或 者“1”,为“0”就不在屏幕上打点,为“1”则在屏幕上打点。
4、调用方法 BIOS中断调用方法:步骤基本同DOS功能调用 (1) 设置分功能号。按实现的操作功能的要求,给指定寄存器 (通常为AH)送入分功能号。 (2) 设置入口参数。按操作要求,给寄存器填写相应参数的内容 (某些调用无参数)。 (3) 使用中断语句INT n。执行调用的功能,其中n为中断号。 (4) 分析出口参数。具体步骤如下图。
输入输出与中断
6.1.3 输入/输出端口的编址方式
ቤተ መጻሕፍቲ ባይዱ
在微型计算机系统中, CPU 对外设的访问实 际上是对外设接口电路中相应的 I/O端口进行 访问。 I/O端口的编址通常有两种不同的方式。一是 与内存单元统一编址,二是独立编址。
1.I/O端口统一编址
又称为存储器映射编址方式,即把每个I/O端 口都当作一个存储单元看待,按照存储单元 的编址方式统一安排端口的地址。 优点:可以用访问内存的方法来访问I/O端口。 由于访问内存的指令种类丰富、寻址方式多 样,因此这种编址方式为访问外设带来了很 大的灵活性。同时,I/O控制信号也可与存储 器的控制信号共用,从而给应用带来了很大 的方便。 缺点:外设占用了一部分内存地址空间,这 就减少了内存可用的地址范围。此外从指令 上不易区分当前是对内存进行操作还是对外 设进行操作。 Intel MCS-51 等 系 列 的 单 片 微 型 计 算 机 和 Motorola 公 司 的 MC6800 、 MC68000 及 68HC05等微处理器就采用统一编址方式。
6.1.2 CPU与输入/输出接口之间的信息(续)
数据信息、状态信息和控制信息是属于不同 性质的信息,需要分别传送。 I/O端口包括:数据端口、状态端口和控制端口。 CPU 通过数据端口从外设读入数据或向外设 输出数据。 从状态端口读入设备的当前状态,通过控制 端口向外设发出控制命令。 一个I/O接口可能仅包含其中的一类或两类端 口,当然也可能包含全部三类端口。
第6章 输入输出与中断
6.1 输入/输出接口概述 6.2 CPU与外设之间的数据传送方式 6.3 中断技术 6.4 中断控制器8259A
汇编语言第六章PPT
具有对数据的锁存能力; 不具备对数据的控制能力
24
常用锁存器芯片
74LS273 8D触发器,不具备数据的控制能力
P239图
74LS373 含三态的8D触发器,具有对数据的控 制能力
25
锁存器芯片74LS374
做输出口:
Q0 D0~D7 Q0~Q7
做输入口:
D0
. . .
译码器
CP OE Q7
外设向DMA控制器发出“DMA传送请求”信 号DRQ;
DMA控制器收到请求后,向CPU发出“总线 请求”信号HOLD; CPU在完成当前总线周期后会立即发出HLDA
信号,对HOLD信号进行响应;
DMA控制器收到HLDA信号后,就开始控制总 线,并向外设发出DMA响应信号DACK
40
DMA控制方式的工作过程
复杂性
实时性 异步性
与设备无关性
3
二、I/O接口和端口
I/O接口:
将外设连接到总线上的一组逻辑电路的总称。
实现外设与主机之间的信息交换。
I/O端口:
接口中的寄存器
4
接口的功能
数据的缓冲与暂存
信号电平与类型的转换 增加信号的驱动能力 对外设进行监测、控制与管理,中断处理
8
端口与内存的统一编址
特点:
00000H 内存 地址 960KB F0000H I/O地址 64KB FFFFFH
9
优点:指令与内存指令统一 缺点:内存地址资源减少
端口的独立编址
特点:
00000H
汇编语言第六章输入输出与中断
第六章输入/输出和中断前面已经讲过有关输入/输出的问题,主若是用DOS中断挪用INT 21H来完成键盘输入和屏幕显示。
关于运算机来讲,仅有这种输入/输出还不够,因为DOS的中断挪用无法实现对其它外设的操纵。
关于如何用汇编程序实现主机与外设之间的信息互换,将是本章的要紧内容。
6.1I/O设备与数据传送方式一.主机与外设之间数据的传送方式运算机与外设之间传送数据有如下4中方式:1.无条件传送方式:适合于CPU与外设同步的情形。
直接传送,高速外设与主机之间数据传送。
2.查询传送方式:适合于低速外设与主机之间数据传送。
3.中断传送方式:适合于低速外设与主机之间数据传送。
4.直接存贮器(又称DMA)传送方式:适合于高速外存与主机的数据传送。
其中:无条件传送和查询传送,直接在端口上利用IN和OUT 指令传送数据。
中断传送:在DOS及BIOS层上通过系统功能挪用的中断指令实现。
直接存贮方式:在端口上,采纳通道技术实现。
在运算机预备好接收,外设预备好传送数据时,外设向CPU发一个请求DMA传送信号,现在CPU让出总线操纵权,使外设与主存在短时刻内成批传送数据。
二.外设与主机传送的接口与信息1.端口与接口运算机的外设都是通过接口连接到系统上,每一个接口由一组寄放器组成,寄放器都有一个称为I/O端口的地址编码。
也确实是,每一台外设都通过硬件接口与主机端口相连,并互换信息。
接口的组成:设备状态寄放器、设备操纵寄放器、数据寄放器。
上述寄放器在I/O空间中都有固定编码。
I/O端口的地址空间:许诺设置64K个8位端口或32K个16位端口。
对I/O空间的访问用IN或OUT两个指令。
I/O端口地址分派,能够查手册。
如:40H~43H时钟/按时器,60H~63H为8255通信芯片的接口。
2.外设与主机的信息互换传送的信息分为三类:①操纵信息:CPU把操纵信息从端口输出到对应外设接口的操纵寄放器中,告知外设应做什么。
②状态信息:把外设的状态寄放器中的内容送到对应的端口中,以便CPU了解外设状态。
6__输入输出和中断
图6-3为无条件输入方式应用实例,CPU可以随时 读入开关的状态,开关闭合时,对应的数据位为0,开关 打开时,对应的数据位为1。图6-4为无条件输出方式的 应用实例,当某输出数据位为1时,对应的发光二极管点 亮,反之,则熄灭。
图6-3 无条件输入方式
图6-4 无条件输出方式
6.2.2 查询传送方式
为了与I/O接口的信息交换,CPU就像为内存单元分 配地址那样为每个端口分配一个地址(称为端口地址)。 当一个I/O接口有多个端口时,为管理方便,通常是为其 分配一个连续的地址块,这个地址块中最小的那个地址称 为接口的基地址。
所有的端口都需要编址,常用的编址方式有两种:一 是I/O端口与内存单元统一编址;二是I/O端口独立编址。 (1) I/O端口与内存统一编址 该编址方式又称为存储器映射编址方式,即将每个 I/O端口都当作一个存储单元对待。CPU将地址空间的一 部分划给I/O接口,在此范围内,给每个端口分配一个具 体的地址,故每个端口地址将占用存储器的一个地址。 统一编址的优点是:不需要设置专门的访问I/O端口 的指令,可以用访问外部RAM的指令来访问I/O端口,为 访问外设带来了很大的灵活性;端口地址可以有较大的编 址空间,安排较灵活。 统一编址的缺点是:I/O接口占据了一部分地址空间, 减少了内存可用的地址范围;从指令形式上不易区分当前 指令是对RAM进行操作还是对端口进行操作。
图6-1 接口的基本构成
①数据输入/输出寄存器 —— 暂存输入/输出的数据 ②命令寄存器 —— 存放控制命令,用来设定接口功 能、工作参数和工作方式 ③状态寄存器 —— 保存外设当前状态,以供CPU读 取 ④译码电路——根据地址总线信息选中某一个寄存器。 ⑤控制逻辑——控制各部分协调工作。
(2)接口电路传送的信息 图6-2为CPU通过接口与外设的连接示意图。通过 接口传送的信息包括数据信息、状态信息和控制信息。
汇编语言ch6
6
中国铁道出版社出版
汇编语言程序设计
程序查询控制 I/O 方式
I/O 指令是主机与外设进行通信的最基本途径 指令是主机与外设进行通信的最基本途径 功能调用和BIOS例行程序中的输入/输出 例行程序中的输入/ 。DOS 功能调用和 例行程序中的输入 功能也是由IN和 指令完成的。 功能也是由 和OUT指令完成的。 指令完成的 状态寄存器的第 位是否为1 例:循环测试某状态寄存器的第2位是否为 循环测试某状态寄存器的第 位是否为
;中断处理程序
中国铁道出版社出版
汇编语言程序设计
DOS 功能调用(21H)存取中断向量: 功能调用( 中断向量: )存取中断向量 设置中断向量: 设置中断向量: AH = 25H AL = 中断类型号 DS : DX = 中断向量 INT 21H 取中断向量: 取中断向量: AH = 35H AL = 中断类型号 INT 21H 返回时送 ES : BX = 中断向量
用户可利用保留的中断类型号 扩充自己需要的中断功能。 扩充自己需要的中断功能。
003FC
类型255的(IP) 的 类型 类型255的(CS) 的 类型 中国铁道出版社出版
15
汇编语言程序设计
CPU中断过程: 中断过程: 中断过程
(1)取中断类型:CPU ← type N )取中断类型: (2)保护现场:FLAGS、CS、IP入栈 )保护现场: 、 、 入栈 (3)IF=0, TF=0 ) :(4× ) (4)取中断向量:( ×N)→ IP )取中断向量:( (4×N+2)→ CS × + ) (5)转中断处理程序 )
例:编写一个中断处理程序,要求在主程序运行期间, 编写一个中断处理程序,要求在主程序运行期间, 秒响铃一次, 每隔 10 秒响铃一次,并显示 ‘bell’
微机系统与接口:第六章 输入输出与中断
第六章 输入输出与中断
6.2 CPU与外设数据传送方式
❖ 程序
START: MOV DL,0F8H
;D4=1,启动
MOV AX,SEG DSTOR
MOV ES,AX
LEA DI,DSTOR
AGAIN: MOV AL,DL
AND AL,0EFH
状态端口 译码输出
第六章 输入输出与中断
6.2 CPU与外设数据传送方式
❖ 查询输入方式程序:
POOL:
IN AL,STATUS_PORT TEST AL,80H JE POOL
IN AL,DATA _PORT
;读状态口 ;设状态信息在D7位 ;READY=0,未准备好,
继续查询
;准备好,读数据
第六章 输入输出与中断
➢ (一)无条件传送(同步传送)
✓ 对象:简单的外设,如开关、继电器、7段显示器等。 ✓ 指令:IN ,OUT ✓ 数据量:少
至输出设备的数 据
锁存器 CE
AB
M/IO
端口地址 译码
&
WR
三态 缓冲器
CE
来自输入设备的数据
&
RD
第六章 输入输出与中断
6.2 CPU与外设数据传送方式
❖ 例:同步传送数据采集系统
6.2 CPU与外设数据传送方式
❖ 3、例:一个采用查询方式的数据采集系统
DB
CPU
8 bits
03 02
A/D
READY D4模拟信号8 bits04
D0,D1,D2
UA0
MUX
UA7
…..
采集要求: 1、初始化 2、停止A/D转换 3、启动转换,查READY状态 4、若READY=1,则从 03 口读数 5、设置下一通道和内存单元
输入输出与中断(回顾)
设置新中断向量
保存原中断向 量 设置新中断向 量 执行新中断处 理 调用原中断处 理 恢复原中断向 量
; ES = 0 MOV ES:[N*4], OFFSET ISR MOV ES:[N*4+2], SEG ISR
执行新中断处理
保存原中断向 量 设置新中断向 量 执行新中断处 理 调用原中断处 理 恢复原中断向 量
汇编语言程序设计 Assembly Language Programming
第六章 输入/输出与中断
输入/输出
指令格式: IN AL/AX, PORT/DX
OUT PORT/DX, AL/AX
பைடு நூலகம்
举例: 无条件方式、查询方式
中断
中断相关概念 完整中断程序的编写 例子
中断过程
主 程 序 中断请求 主 程 序 中断返回
完整中断程序的编写
保存原中断向 量 设置新中断向 量 执行新中断处 理 调用原中断处 理 恢复原中断向 量
保存原中断向量
保存原中断向量 设置新中断向 量 执行新中断处 理 调用原中断处 理 恢复原中断向 量
OLDISR DW ?,? ; ES = 0 MOV AX, ES:[N*4] MOV OLDISR[0], AX MOV AX, ES:[N*4+2] MOV OLDISR[2], AX
ISR PROC FAR PUSH AX …… STI ;便于中断嵌套 …… CLI EOI (End Of Interrupt) POP AX …… IRET ;中断返回 ISR ENDP
调用原中断处理
保存原中断向 量 设置新中断向 量 执行新中断处 理 调用原中断处 理 恢复原中断向 量
OLDISR DW ?,? PUSHF CALL DWORD PTR OLDISR
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第六章输入/输出和中断
前面已经讲过有关输入/输出的问题,主要是用DOS中断调用INT 21H来完成键盘输入以及屏幕显示。
对于计算机来说,仅有这种输入/输出还不够,因为DOS的中断调用无法实现对其它外设的控制。
关于如何用汇编程序实现主机与外设之间的信息交换,将是本章的主要内容。
6.1I/O设备与数据传送方式
一.主机与外设之间数据的传送方式
计算机与外设之间传送数据有如下4中方式:
1.无条件传送方式:适合于CPU与外设同步的情况。
直接传送,高速外设与主机之间数据传送。
2.查询传送方式:适合于低速外设与主机之间数据传送。
3.中断传送方式:适合于低速外设与主机之间数据传送。
4.直接存贮器(又称DMA)传送方式:适合于高速外存与主机的数据传送。
其中:无条件传送和查询传送,直接在端口上利用IN和OUT 指令传送数据。
中断传送:在DOS及BIOS层上通过系统功能调用的中断指令实现。
直接存贮方式:在端口上,采用通道技术实现。
在计算机准备好接收,外设准备好传送数据时,外设向CPU发一个请求DMA传送信号,此时CPU让出总线控制权,使外设与主存在短时间内成批传送数据。
二.外设与主机传送的接口与信息
1.端口与接口
计算机的外设都是通过接口连接到系统上,每个接口由一组寄存器组成,寄存器都有一个称为I/O端口的地址编码。
也就是,每一台外设都通过硬件接口与主机端口相连,并交换信息。
接口的组成:设备状态寄存器、设备控制寄存器、数据寄存器。
上述寄存器在I/O空间中都有固定编码。
I/O端口的地址空间:允许设置64K个8位端口或32K个16位端口。
对I/O空间的访问用IN或OUT两个指令。
I/O端口地址分配,可以查手册。
如:40H~43H时钟/定时器,60H~63H为8255通讯芯片的接口。
2.外设与主机的信息交换
传送的信息分为三类:
①控制信息:CPU把控制信息从端口输出到对应外设接口的控制寄存器中,告诉外设应做什么。
②状态信息:把外设的状态寄存器中的内容送到对应的端口中,以便CPU了解外设状态。
③数据信息:需要交换的数据(8位、16位)。
6.2程序直接控制I/O方式
直接I/O方式有两种:
①无条件传送方式:不查询外设状态寄存器的状态,直接用IN或OUT指令实现CPU与外设信息传送。
该方式的特点是:CPU 与外设必须同步工作。
②查询传送方式:查询外设状态和控制寄存器中的内容,确定是否传送。
特点:CPU与外设不同步。
一.IN和OUT指令
通过前面的学习,我们已经知道,外设与主机传送信息,必须用IN和OUT指令。
1.输入指令IN
功能:从外设寄存器取信息送入AX或AL。
4种形式:
IN AL, PORT 功能:(PORT)→AL
IN AX, PORT 功能:(PORT+1,PORT)→AX
IN AL, DX 功能:([DX])→AL
IN AX, DX 功能:([DX])→AX
由AL或AX决定取几个端口的内容。
2.输出指令OUT
功能:将AX或AL内容送到外设寄存器中。
4种形式:
OUT PORT, AL 功能:(AL)→PORT
OUT PORT, AX 功能:(AX)→PORT(2个8位口)OUT DX, AL 功能:(AL)→[DX]
OUT DX, AX 功能:(AX)→[DX]
同样,由AL或AX决定送到几个端口。
如:
IN AL, 40H
OUT 80H, AL
MOV DX, 379H
IN AL, DX
注意:端口地址>255,就放到DX中。
二.程序直接控制传送方式
1.无条件传送方式
特点:不查询外设状态,直接用IN和OUT指令传送信息。
采用这种方式,必须保证外设与CPU在传送数据的过程中,具有相同速度(同步)。
例:扬声器发声程序。
已知扬声器的控制寄存器的端口地址为61H,硬件结构如下:
程序通过I/O指令,使设备控制寄存器的b1位为0或1(交替为0或1),与门的输入为0和1交替的电信号,输出为一个脉冲电流,经放大后,送扬声器使之发声。
2.查询传送方式
特点:查询外设状态,条件满足时传送。
适合于低速外设与CPU 传送信息。
①输入
输入之前,查询数据是否准备好,若准备好则输入,否则等待。
流程:
例:串行通讯I/O。
串行通讯端口:采用8250芯片,数据寄存器端口地址为3F8H,状态寄存器端口地址为3FDH,其中b0位是输入数据数据准备位,b5位是输出数据准备位。
串行口输入程序:
② 输出
输出之前,要查询外设是否“忙”,若“忙”则等待,否则输出数据。
流程:
例:串行口输出子程序。
查询方式的缺点:CPU 反复等待状态位,浪费大量CPU 资源。
6.3 中断传送方式
为了解决查询方式下,CPU 等待外设,浪费大量CPU 资源的问
题,提出了中断传送方式。
引入中断之后,有如下优点:
①提高CPU效率
②可以处理突发事件
③提高了计算机工作的灵活性
在中断方式下,程序设计的主要任务:设置中断向量、编制中断处理程序。
一.中断的概念
中断是一种使CPU中止正在执行的程序,而转去处理特殊事件的操作,处理结束之后,又返回到断点处继续往下执行。
中断的处理过程:①中断请求、②中断响应、③中断处理、④中断返回。
中断系统:实现中断的软硬件设施。
其中,硬件有:8259A、中断源、中断请求等。
软件有:中断向量表、中断处理程序。
二.中断源(内中断/外中断)
内中断
来自CPU内部事件:
①程序中使用的INT指令产生的中断;
②CPU的某些错误结果产生的中断(除法、溢出、单步)。
内中断的处理特点:
①中断类型号一般在指令中;
② 不受中断允许标志位IF 的影响。
外中断
由外设控制器、协处理器等CPU 以外的事件引起的中断,称为外中断。
外中断的处理特点:
① 中断类型号由8259A 提供,或由自制电路来提供; ② 受中断允许标志位IF 的影响(IF=1,响应中断)。
8086/8088中断源:
不可屏蔽中断请求由硬件故障引起:掉电、存贮器错、总线奇偶校验错等。
8086系统中断优先级: 其中,“INT n ”可处理256种中断,n 的范围:
除法错、INTO (溢出中断指令)、“INT n ” 单步中断
NMI INTR
BIOS 中断:10H ~1FH DOS 中断:20H ~3FH 自由中断:40H ~FFH 三. 中断向量表
1. 中断向量表的结构
中断向量表就是各种中断类型的处理程序的入口地址表。
内存中从00000H ~003FFH 用于存放中断向量表。
中断类型:0~FFH ,每个类型的中断占4个字节。
如:INT 4AH
中断向量地址 = 4AH*4 = 128H
2. 中断类型号的获取
(1) 除法错、单步中断、不可屏蔽中断NMI 、断点中断、溢出中断(中断号0~4)。
中断类型号由CPU 芯片内的部件自动提供。
(2) 软中断INT n ,执行时从指令流中读出类型号。
(3)
外中断
①标准外设,利用8259A提供的类型号;
②非标准外设,自制电路通过接口提供给总线,获得类型号。
3.设置或取出中断向量指令
(1)设置中断向量指令
功能:把由AL指定的中断类型的中断向量DS:DX放入中断向量表中。
(AH)=25H
(AL)=中断类型号
DS:DX=中断向量
INT 21H
(2)取出中断向量指令
功能:把AL中指定的中断类型的中断向量从中断向量表中取出送到ES:DX中。
(AH)=35H
(AL)=中断类型号
INT 21H
四.软中断及中断的有关指令
1.软中断
形式:INT n
功能:
①(FLAGS)→↓(SP)同时0→IF、TF
②(CS)→↓(SP)(4*n+2)→CS
③(IP)→↓(SP)(4*n)→IP
2.中断返回
形式:IRET。
功能:
①↑(SP)→IP
②↑(SP)→CS
③↑(SP)→FLAGS
五.举例
在系统定时器(中断类型为8)的中断处理程序中,有一条中断指令INT 1CH,时钟中断每发生一次(约每秒18.2次),都要调用一次中断类型为1CH的处理程序,1CH的处理程序只有一条IRET 指令,实际上什么工作也不做,只是为用户提供一个中断号。
如果有一个定时要完成的工作,就可以利用1CH中断来完成。
如:编写一个中断处理程序,要求在主程序运行过程中,每隔10秒钟响铃一次,同时显示“The bell is ring!”。
1CH为用户的中断类型,可能被其它程序所引用,因此对于一个新的中断程序,必须做如下工作:
①主程序初始化部分,先保存当前中断向量表的内容;
②在主程序结束部分,恢复保存的1CH向量。
程序:。