微机原理与应用 第6章 中断.docx

上传人:b****6 文档编号:7983722 上传时间:2023-01-27 格式:DOCX 页数:20 大小:78.73KB
下载 相关 举报
微机原理与应用 第6章 中断.docx_第1页
第1页 / 共20页
微机原理与应用 第6章 中断.docx_第2页
第2页 / 共20页
微机原理与应用 第6章 中断.docx_第3页
第3页 / 共20页
微机原理与应用 第6章 中断.docx_第4页
第4页 / 共20页
微机原理与应用 第6章 中断.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

微机原理与应用 第6章 中断.docx

《微机原理与应用 第6章 中断.docx》由会员分享,可在线阅读,更多相关《微机原理与应用 第6章 中断.docx(20页珍藏版)》请在冰豆网上搜索。

微机原理与应用 第6章 中断.docx

微机原理与应用第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;SPSP-2,[SP+1,SP]Flags,IF0,TF0

SPSP-2,[SP+1,SP]CS,CS[TYPE×4+2]

SPSP-2,[SP+1,SP]IP,IP[TYPE×4]

IRET;IP[SP+1,SP],SPSP+2

CS[SP+1,SP],SPSP+2

Flags[SP+1,SP],SPSP+2

CLI;IF0,禁止可屛蔽中断和单步中断

STI;IF1

三.中断向量表

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=

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1