微机原理与应用第6章中断.docx
- 文档编号:26926502
- 上传时间:2023-06-24
- 格式:DOCX
- 页数:23
- 大小:77.44KB
微机原理与应用第6章中断.docx
《微机原理与应用第6章中断.docx》由会员分享,可在线阅读,更多相关《微机原理与应用第6章中断.docx(23页珍藏版)》请在冰豆网上搜索。
微机原理与应用第6章中断
第六章中断(interruption)
§6.1中断处理(interruptprocessing)
一.中断
为提高CPU利用率而采用的CPU与外设交换信息的一种重要方式
指计算机的CPU暂时终止它正在执行的程序,转去执行请求中断的外设或事件的中断服务程序,待处理完后又返回执行被暂时终止的程序这样一个过程
中断与调用子程序的最主要差别在于,调用子程序是在主程序中预先安排好的,中断处理则可能是随机的
二.中断的用途
1.实现分时操作
2.实现实时处理
3.实现故障处理
三.中断系统应具有的功能
1.能自动实现中断与返回
2.能实现中断优先
3.能实现多重中断
四.中断处理过程
中断处理过程包括:
中断请求、中断响应、中断处理、中断返回
1.中断请求
2.中断响应
<1>关中断
<2>保护断点
<3>转到中断服务子程序首地址:
CS:
IP=入口地址
3.中断处理与返回
<1>保护现场:
可用PUSH
<2>中断服务
<3>恢复现场:
可用POP
<4>开中断
<5>返回
(P161,F7-1)
§6.28086/8088中断系统(8086/8088interruptsystem)
一.中断源
外部中断和部中断,或称硬件中断和软件中断,外部中断又分可屛蔽中断和非屛蔽中断(P164,F7-3)
·可屛蔽中断请求INTR
·非屛蔽中断请求NMI
·部中断:
通过软件调用由CPU自己启动中断过程,部中断是非屛蔽型的
INTn,(n=0~255)可调用所有中断子程序
INTO,溢出中断(n=4),标志OF=1时产生中断
除法出错(n=0),除数为0时产生INT0
单步(n=1),TF=1时每执行一条指令产生一次INT1
断点中断(n=3),可插在程序任何处产生中断,同样用来调试程序
单步方式适用于较小程序,断点方式适用于较长程序
DEBUG设置程序断点时将INT3单字节指令(CCH)写入断点处指令的第一字节位置(原字节保存起来),程序执行到INT3时发生中断,一般显示当前寄存器容与指定存储器容,结束后取回保存字节恢复原指令
软件中断特点:
<1>中断类型号n由指令指定或隐含
<2>8088不运行中断响应周期INTA
<3>除单步中断外,其优先级比硬件中断高
<4>所有中断里,单步中断优先级最低,它可用IF=0来屛蔽
二.与中断有关的指令
INTn;SP←SP-2,[SP+1,SP]←Flags,IF←0,TF←0
SP←SP-2,[SP+1,SP]←CS,CS←[TYPE×4+2]
SP←SP-2,[SP+1,SP]←IP,IP←[TYPE×4]
IRET;IP←[SP+1,SP],SP←SP+2
CS←[SP+1,SP],SP←SP+2
Flags←[SP+1,SP],SP←SP+2
CLI;IF←0,禁止可屛蔽中断和单步中断
STI;IF←1
三.中断向量表
256种类型,位于000~3FFH的1KB空间
(见P166,F7-4)
IP=[n×4]
CS=[n×4+2]
例:
INT21H,n×4=84H,则IP←[85H,84H],CS←[87H,86H]
四.中断处理顺序
·8086/8088各类中断的优先级别为:
除法出错,INTn,INTO高
NMI
INTR
单步中断低
·中断处理顺序如下流程:
(详见P169,F7-6)
·CPU在响应中断后,自动完成:
Flags入栈
清除IF、TF
CS入栈、IP入栈
取中断向量到IP、CS中转入中断子程
·中断返回执行IRET使Flags出栈,IF、TF恢复到中断前状态
·在用户编写的中断服务子程序中,要考虑是否需要保护现场(Flags,CS,IP以外的寄存器容)
五.中断响应周期时序
CPU响应INTR请求的中断,首先产生两个中断响应总线周期,每个周期4T(P168,F7-5)
第一个INTA周期,CPU使地址/数据总线高阻,并在T2~T4发INTA给8259A,使之准备中断类型码
第二个INTA周期,CPU发INTA,8259A接收到该信号后送中断类型码n到数据总线D7~D0,CPU读取n后据此找到中断子程序入口地址
CPU获取n的三个途径:
默认的,指令给出的,外部提供的
六.中断响应条件
1.可屛蔽中断:
INTR有效,IF=1,没有部中断,NMI无效,没有总线请求
2.非屛蔽中断:
NMI有效,没有部中断,没有总线请求
§6.3BIOS和DOS
一.BIOS(基本输入/输出系统,BasicI/OSystem)
程序采用中断方式,向用户或操作系统提供一些主要外设控制功能,包括开机自检,显示器,通讯接口,键盘和打印机等的字符传送,图形发生等(程序写在主板上的ROM中)
在中断向量表中,
n=0~4CPU规定的5个专用中断
n=5~1FHROMBIOS使用
n=20H~FFHDOS和BASIC保留,用户可用60H~67H
实际DOS使用20H~3FH,40H~7FH系统未用
地址类型码功能
0~30除法错误
4~71单步
8~B2NMI
C~F3断点指令
10~134溢出
14~175打印屏幕
18~1B6保留
1C~1F7保留
20~238电子钟定时(18.21秒)
24~279键盘
28~2BA保留
2C~2FB异步通讯口2
30~33C异步通讯口1
34~37D硬盘
38~3BE软盘
3C~3FF打印机
40~4310视频I/O驱动
44~4711设备检测
48~4B12存储器容量检测
4C~4F13磁盘(软、硬)I/O驱动
50~5314RS232I/O驱动
54~5715盒式磁带I/O
58~5B16键盘I/O
5C~5F17打印机I/O
60~6318ROMBASIC入口码
64~6719自举引导程序(BOOT)
68~6B1A一日时间
6C~6F1B键盘中断(CTRL-BREAK)控制
70~731C用户定时器报时
74~771DCRT初始化参数表
78~7B1E磁盘参数表
7C~7F1F图形字符集(ASCII码)
n=8~F是8级可屛蔽中断
BIOS经常用到的中断调用有:
·INT5H打印屏幕
同时按Ctrl和PrtSc或部调用INT5H可将屏幕容打出
·INT10HCRT显示
16种功能,AH=功能号,用来设置显示模式、光标形状和位置、读光标位置、屏幕上滚和下滚、置彩色调色板、写点、读点等
AH=1为设置光标形状,2为设置光标位置,7为屏幕下翻
·INT13H软盘I/O,硬盘I/O
对软盘,6种功能,作软盘系统复位、读/写扇区等
对硬盘,21种功能,作硬盘系统复位、读/写扇区、诊断、格式化等
·INT14H串行I/O通讯
向RS232通讯端提供I/O字节流,4个功能用来设定波特率、收发数据等
·INT16H键盘I/O
3个功能用来读字符、判键符等
·INT17H打印机I/O
用来打印字符
CMOS(ComplementaryMetal-Oxide-SemiconductorTransistor)互补金属氧化物半导体,用来存放计算机硬件配置和系统时钟信息的RAM,128字节,BIOS可对这些系统参数读出与设置.
二.DOS(磁盘操作系统,DiskOperatingSystem)
用于帮助用户建立和管理程序与数据,管理计算机系统设备
BIOS固化在ROM中,DOS则由磁盘装入,DOS包括:
<1>引导记录(bootrecord)
每次启动时自动装入存,并由它装入DOS的其他部分
<2>IBMBIO.COM(或IO.SYS)
提供DOS到ROMBIOS的接口,可以进行数据从存到外设的读写,是DOS的核心
<3>IBMDOS.COM(或MSDOS.SYS)
提供系统与用户程序的接口,含有一个文件管理程序和一系列子程序,用户可在DOS状态下用INT指令调用它们
<4>COMMAND.COM
命令处理程序,接收打入的命令并运行相应的程序,它包括:
常驻部分
初始化部分
暂存部分
DOS设立了20H~27H的中断如下
地址类型码功能
80~8320程序结束,返回DOS
84~8721系统功能调用
88~8B22结束(退出)地址
8C~8F23CTRL-BREAK退出地址
90~9324标准错误出口地址
94~9725绝对磁盘读
98~9B26绝对磁盘写
9C~9F27程序结束驻留退出
A0~FF28~3FDOS保留
100~1FF40~7F未用(60~67为用户保留)
200~3C380~F0BASIC使用
3C4~3FFF1~FF未用
<1>INT20H
终止正在运行的程序,并返回DOS。
仅适用于.COM文件,不适用于.EXE文件
(对.EXE文件的终止可用INT27H或INT21H中的功能4CH)
<2>INT23H
按下Ctrl-Break停止程序运行,有时可按Ctrl-C
<3>INT27H
程序终止驻留存并返回DOS,留下的程序被视为DOS的一部分
例:
退出并驻留,保留足够大空间给该程序代码和数据
┇
START:
┇
┇程序代码
MOVDX,OFFSETPGM_END
INT27H
┇
PGM_ENDEQU$数据
ENDSTART
<4>INT21H
DOS功能调用,可分为I/O设备、文件操作和其他功能调用
调用时先将功能号送AH,若有参数,将参数送相应的寄存器,然后执行INT21H
·I/O设备功能调用
AH=01H:
从键盘输入一个字符并显示,出口AL=键入字符
02H:
显示器输出字符,DL=ASCII字符
05H:
打印机输出字符
08H:
读键盘,检查Ctrl-Break,但不显示
09H:
显示字符串,DX=ASCII字符串首地址,字符串以﹩结束
0AH:
输入字符串
0BH:
检查键盘输入状态(与01H,08H功能不同是无键按下不等待)
┇
·文件操作功能调用
13H:
删除文件
3CH:
建立文件
3DH:
打开文件DS:
DX=ASCII字符串,AL=0读,AL=1写,AL=2读/写
3EH:
关闭文件BX=文件号(即文件代号,文件把柄——handle)
3FH:
写文件BX=文件号,CX=写盘字节数,DS:
DX=缓冲区首址
40H:
读文件BX=文件号,CX=写盘字节数,DS:
DX=缓冲区首址
4BH:
装入和执行一个程序(分装入执行和装入不执行)
┇
·其他功能调用
00H:
退出用户程序并返回DOS(类似INT20H)
25H:
设置中断向量,AL=n,DS:
DX=入口地址
2AH:
取日期,出口CX:
DX=日期,CX=年(1980-2099),DH=月,DL=日
2BH:
设置日期,入口……
2CH:
取时间,出口CX:
DX=时间,CH=小时,CL=分,DH=秒,DL=1/100秒
2DH:
设置时间,入口……
30H:
取DOS版本号,出口AL=版本号,AH=发行号
31H:
终止用户程序并驻留存,入口AL=退出码,DX=程序长度
35H:
取中断向量,入口AL=n,出口ES:
BX=入口地址
常用于修改和恢复中断向量(P180,E7-7)
4CH:
终止当前程序并返回调用程序,入口AL=退出码
它能终止.COM和.EXE文件也能关闭由3CH和3DH打开的文件
┇
例:
从键盘读一个字符显示在屏幕上并存入TAB单元
MOVAH,1
INT21H
MOVTAB,AL
┇
例:
若被0除转移到ZERO-DIV的中断处理
MOVAH,25H;功能号
MOVAL,0;中断类型号
MOVDX,SEGZERO-DIV;中断子程段地址
MOVDS,DX
MOVDX,OFFSETZERO-DIV;中断子程偏移地址
INT21H
┇
ZERO-DIV:
┇
┇
例:
把字符串“YOUAREWELCOME!
”显示出来
codesegment
assumecs:
code
org100h
begin:
movdx,offsetdata
movah,09h
int21h
int20h
datadb“YOUAREWELCOME!
$”
codeends
endbegin
§6.4中断优先级管理(interruptprioritylevelmanagement)
按优先顺序将中断源的中断请求线集中在一个端口(中断寄存器)上,并赋予地址
一.用软件确定中断优先级
有中断请求时,可用程序判断
INAL,PORT;输入状态
TESTAL,80H;查询A#
JNZSEV7;若A#请求转A#服务
TESTAL,40H;
JNZSEV6
┇
或:
INAL,PORT
SHLAL,1
JCSEV7
SHLAL,1
JCSEV6
┇
二.用硬件优先排队电路
三.8259A可编程中断控制器PIC
可管理8级硬件中断,若使用9片8259A组成主从级联形式则可管理64级中断
主要功能为:
<1>判断一个中断请求输入信号IR是否有效
<2>中断优先判决(8个输入IR0~IR7,一个输出INT)
<3>将获得优先权(即被响应)的IRi的中断向量(类型号)送至数据总线
1.8259A部结构与引脚
NMOS工艺制造,双列28脚,单一+5V电源
(见P170,F7-7)
D7~D0:
数据总线,三态双向(经缓冲接至CPU)
RD:
读信号,输入(用于读IRR、ISR、IMR和n)
WR:
写信号,输入(用于写ICW、OCW)
A0:
命令选择地址输入(接8088的A0或8086的A1)
CS:
片选输入(接地址译码器)
CAS2~CAS0:
级联线(主输出,从输入)
SP/EN:
从设备编程/允许缓冲器,双向(输入SP,输出EN)
INT:
中断请求,输出(至CPU)
INTA:
中断响应,输入(来自CPU)
IR7~IR0:
中断请求,输入(来自中断源)
Vcc、GND:
电源、地
2.8259A的初始化命令字ICW和操作命令字OCW
四个初始化命令字(InitializationCommandWord)
ICW1:
8259A复位,清IMR,设优先级,选择中断触发方式,单器件/级联方式选择,有无ICW4
ICW2:
设置中断向量
ICW3:
级联方式下8259A作为主或从芯片说明
ICW4:
自动或正常清除ISR,嵌套方式,缓冲方式下8259A作为主或从设备工作
三个操作命令字(OperationCommandWord)
OCW1:
设置或清除对中断源的屏蔽(Mi=1屏蔽,Mi=0开放)
OCW2:
设置优先级是否循环,循环方式,中断结束方式
OCW3:
设置查询方式,特殊屏蔽方式,读8259A寄存器IRR、ISR、IMR的当前状态
·IBMPC/XT的硬件中断管理采用一片8259APIC,以单器件方式工作,BIOS中用I/O地址20H和21H对8259A编程初始化中断类型号为08H~0FH(对应IRQ0~IRQ7)
·80386微机使用2片8259以级联方式工作,主8259地址20H和21H,中断类型号为08H~0FH(对应IRQ0~IRQ7),从8259地址A0H和A1H,中断类型号为70H~77H(对应IRQ8~IRQ15),系统总线上B4端给用户使用的IRQ2现在是IRQ9,对应的中断处理程序如下:
PUSHAX
MOVAL,20H
OUT0A0H,AL;中断结束
POPAX
INT0AH;改向0AH中断(IRQ2)
IRET
也就是说,用户可把IRQ9当作IRQ2来使用,设置的是IRQ2的中断向量,请求引脚是IRQ9,还应开放IRQ2和IRQ9的屏蔽位
·ICW和OCW简要说明(只介绍对8086/8088有用的位)
1.初始化命令字ICW有四个
<1>ICW1
A0
D7
D6
D5
D4
D3
D2
D1
D0
0
A7
A6
A5
1
LTIM
ADI
SNGL
IC4
复位8259A,清除IMR,设优先级IR0~IR7等
选择中断输入信号触发方式,LTIM=0上跳边沿触发,LTIM=1高电平触发
单器件(SNGL=1)/级联(SNGL=0)方式选择
有无ICW4(IC4=0无,IC4=1有)(8086/8088必须有)
ICW1的特征是A0=0,D4=1
(D7、D6、D5、D2只在8080/8085系统用)
<2>ICW2
A0
D7
D6
D5
D4
D3
D2
D1
D0
1
T7
T6
T5
T4
T3
中断向量
高5位用户设,低3位8259A自动设置IR0~IR7编码
<3>ICW3
A0
D7
D6
D5
D4
D3
D2
D1
D0
主
1
S7
S6
S5
S4
S3
S2
S1
S0
A0
D7
D6
D5
D4
D3
D2
D1
D0
从
1
×
×
×
×
×
ID2
ID1
ID0
在级联方式下用(ICW1的SNGL=0)
对主8259A,Si=1说明对应的IRi接从8259A,Si=0说明没有从8259A
对从8259A,ID2~ID0为从8259A的INT端到主8259A的IR的编码(0~7,这时从8259A相当于主8259A的一个中断源)
<4>ICW4
A0
D7
D6
D5
D4
D3
D2
D1
D0
1
0
0
0
SFNM
BUF
M/S
AEOI
µPM
选择8086/8088系统(µPM=1)还是8080/8085系统(µPM=0)
选择自动EOI(AEOI=1)还是正常EOI(AEOI=0)方式清除ISR
选择特殊嵌套(SFNM=1)还是一般嵌套(SFNM=0)方式
缓冲方式下(BUF=1)决定8259A作为主设备(M/S=1)或从设备(M/S=0)工作
非缓冲方式下(BUF=0)M/S无效
因此其初始化流程如下:
(P174,F7-10)
IBMPC/XTBIOS中用I/O地址20H和21H,对8259A编程初始化
MOVAL,13H;ICW1,边沿触发,单片8259A,要ICW4
OUT20H,AL;ICW1送到ICW1口地址
MOVAL,8;ICW2,中断类型号08H~0FH
OUT21H,AL;中断向量地址送ICW2口地址
MOVAL,9;ICW4,一般嵌套方式,缓冲方式
OUT21H,AL;非自动结束中断方式(应送EOI命令)
MOVAL,0FFH;OCW1屏蔽所有中断(必要时再开放)
OUT21H,AL;送到OCW1口地址
2.操作命令字OCW有三个
<1>OCW1
A0
D7
D6
D5
D4
D3
D2
D1
D0
1
M7
M6
M5
M4
M3
M2
M1
M0
用来设置或清除对中断源的屏蔽
Mi=1对中断源(对应IRi)屏蔽,Mi=0开放
OCW1的特征是A0=1
<2>OCW2
A0
D7
D6
D5
D4
D3
D2
D1
D0
0
R
SL
EOI
0
0
L2
L1
L0
用来设置优先级是否进行循环、循环的方式和中断结束的方式
其中R、SL、EOI组合成各种操作,L2、L1、L0为优先级编码
RSLEOI
001一般EOI中断结束
011特殊EOI
101自动循环EOI
100设置循环AEOI方式自动循环(R、SL=10)
000取消循环AEOI方式
111自动循环的特殊EOI特殊循环(R、SL=11)
110设置优先级命令
010无操作
L2L1L0IR级别(特殊循环被指为最低的)
0000
0011
0102
0113
1004
1015
1106
1117
OCW2的特征是A0=0,D4D3=00
<3>OCW3
A0
D7
D6
D5
D4
D3
D2
D1
D0
0
0
ESMM
SMM
0
1
P
RR
RIS
用来设置查询方式,特殊屏蔽方式,读8259A寄存器IRR、ISR的当前状态
ESMM、SMM=11特殊屏蔽方式,ESMM、SMM=10一般屏蔽方式
RR、RIS=11可读ISR,RR、RIS=10可读IRR
P=1,8259A发送查询命令
对CPU的IF=0时INTR不起作用,可用软件查询来实现,查询命令通过OCW3的P=1发出,8259A接到后,若有中断请求,则读出该中断级别,送到数据总线.数据格式:
A0
D7
D6
D5
D4
D3
D2
D1
D0
0
I
—
—
—
—
W2
W1
W0
I=1有中断,0无中断,W2~W0为最高优先级的中断请求服务编码
OCW3的特征是A0=0,D4D3=01
以下程序段可将IBMPC/XT机8259A当前IRR、ISR、IMR状态读出存入100H开始单元
MOVSI,100
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 应用 中断