第8章DOS与BIOS中断及程序设计.ppt
《第8章DOS与BIOS中断及程序设计.ppt》由会员分享,可在线阅读,更多相关《第8章DOS与BIOS中断及程序设计.ppt(128页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、高等高等教教育出版社育出版社王成端王成端 主主编2008.6汇编语言程序设计(第汇编语言程序设计(第汇编语言程序设计(第汇编语言程序设计(第2 2版)版)版)版)普通高等教育“十一五”国家级规划教材汇编语汇编语言程序言程序设计设计高等高等教教育出版社育出版社 本章讲述中断的相关知识及本章讲述中断的相关知识及DOSDOS与与BIOSBIOS中断功能调用,中中断功能调用,中断是断是CPUCPU与外设交换数据的一种方式,而且是最常用的一种方与外设交换数据的一种方式,而且是最常用的一种方式。式。DOSDOS与与BIOSBIOS中断功能调用是系统提供给汇编语言程序员的中断功能调用是系统提供给汇编语言程序
2、员的大量代码段(子程序),这些代码段都以中断方式进行工作,大量代码段(子程序),这些代码段都以中断方式进行工作,利用它们可以极大地简化汇编程序设计。本章中要求掌握中断利用它们可以极大地简化汇编程序设计。本章中要求掌握中断的概念、中断源、中断矢量表、中断响应条件、中断响应过程的概念、中断源、中断矢量表、中断响应条件、中断响应过程以及以及DOSDOS功能调用的概念、调用方法及基本的功能调用的概念、调用方法及基本的I/OI/O功能调用、磁功能调用、磁盘文件读写等内容。盘文件读写等内容。8.1 8086/8088中断系统 8.2 DOS中断与系统功能调用 8.3 BIOS中断功能调用 实训一 PC机间
3、的相互通信:中断方式实训二 发声程序设计实训三 彩色图形程序设计实训四 磁盘文件操作设计 v第第8 8章章 中断与系统功能调用中断与系统功能调用 汇编语汇编语言程序言程序设计设计高等高等教教育出版社育出版社8.1 8086/80888.1 8086/8088中断系统中断系统 8.1.1 8.1.1 中断基本知识中断基本知识 在在7.27.2节中曾经提到,节中曾经提到,CPUCPU与外设交换信息时,若用直与外设交换信息时,若用直接接I/OI/O方式,效率虽高,安全性不强。若用查询方式,安全性方式,效率虽高,安全性不强。若用查询方式,安全性有保障,但效率不高。为了使高速工作的有保障,但效率不高。为
4、了使高速工作的CPUCPU与低速工作的外与低速工作的外设之间,既能安全地交换数据,又有较高的效率,人们经常设之间,既能安全地交换数据,又有较高的效率,人们经常采用中断传送方式。采用中断传送方式。v第第8 8章章 中断与系统功能调用中断与系统功能调用 汇编语汇编语言程序言程序设计设计高等高等教教育出版社育出版社1.1.中断中断 中断是指计算机的中断是指计算机的CPUCPU暂时中止它正在执行的主程序,转暂时中止它正在执行的主程序,转去执行请求中断的那个外设或事件的中断服务(处理)程序,去执行请求中断的那个外设或事件的中断服务(处理)程序,待处理完毕之后,又返回主程序接着被中断处继续执行,这样待处理
5、完毕之后,又返回主程序接着被中断处继续执行,这样的一个过程就称为中断。的一个过程就称为中断。在中断传送方式下,外设有在中断传送方式下,外设有“事事”时向时向CPUCPU发中断申请,发中断申请,无事时无事时CPUCPU完全可以处理自己的业务。这种方式既安全又高效,完全可以处理自己的业务。这种方式既安全又高效,因而应用很广。因而应用很广。v第第8 8章章 中断与系统功能调用中断与系统功能调用 汇编语汇编语言程序言程序设计设计高等高等教教育出版社育出版社2.2.中断源中断源 引起中断的原因或发出中断申请的来源,称为中断源。中断源有引起中断的原因或发出中断申请的来源,称为中断源。中断源有以下几种;以下
6、几种;外设中断源:一般有键盘、打印机、磁盘、磁带等,工作中要外设中断源:一般有键盘、打印机、磁盘、磁带等,工作中要求求CPUCPU为它服务时,会向为它服务时,会向CPUCPU发送中断请求。发送中断请求。故障中断源。当系统出现某些故障时(如存储器出错、运算溢故障中断源。当系统出现某些故障时(如存储器出错、运算溢出等),相关部件会出等),相关部件会向向CPUCPU发出中断请求,以便使发出中断请求,以便使CPUCPU转去执行故障处转去执行故障处理程序来解决故障。理程序来解决故障。软件中断源。在程序中向软件中断源。在程序中向CPUCPU发出中断指令(发出中断指令(8086/80888086/8088为
7、为INTINT指指令),可迫使令),可迫使CPUCPU转去执行某个特定的中断服务程序,而中断服务程序转去执行某个特定的中断服务程序,而中断服务程序执行完后,执行完后,CPUCPU又回到原程序中继续执行又回到原程序中继续执行INTINT指令后面的指令。指令后面的指令。为调试而设置的中断源。系统提供的单步中断和断点中断,可为调试而设置的中断源。系统提供的单步中断和断点中断,可以使被调试程序在指行一条指令或执行到其个特定位置处时,自动产以使被调试程序在指行一条指令或执行到其个特定位置处时,自动产生中断,从而便于程序员检查中间结果,寻找错误所在。生中断,从而便于程序员检查中间结果,寻找错误所在。v第第
8、8 8章章 中断与系统功能调用中断与系统功能调用 汇编语汇编语言程序言程序设计设计高等高等教教育出版社育出版社3.3.外部中断与内部中断外部中断与内部中断 根据中断源是来自根据中断源是来自CPUCPU内部还是外部这一角度,通常人们将所内部还是外部这一角度,通常人们将所有中断源分为两类:外部中断源和内部中断源,对应的中断称为外有中断源分为两类:外部中断源和内部中断源,对应的中断称为外部中断和内部中断。部中断和内部中断。(1)(1)外部中断源和外部中断外部中断源和外部中断 外部中断源即硬件中断源,它们来自外部中断源即硬件中断源,它们来自CPUCPU外部。外部。8086/8088 CPU8086/8
9、088 CPU提供了两个引脚来接收外部中断源的中断请求信号:可屏蔽中断请提供了两个引脚来接收外部中断源的中断请求信号:可屏蔽中断请求引脚和非屏蔽中断请求引脚。求引脚和非屏蔽中断请求引脚。通过可屏蔽中断请求引脚输入的中断信号叫可屏蔽中断,对这通过可屏蔽中断请求引脚输入的中断信号叫可屏蔽中断,对这种中断请求种中断请求CPUCPU可响应也可不响应,具体取决于标志寄存器中可响应也可不响应,具体取决于标志寄存器中IFIF标标志位的状态。通过非屏蔽中断请求引脚输入的中断请求信号叫非屏志位的状态。通过非屏蔽中断请求引脚输入的中断请求信号叫非屏蔽中断。这种中断请求蔽中断。这种中断请求CPUCPU必须无条件响应
10、。必须无条件响应。v第第8 8章章 中断与系统功能调用中断与系统功能调用 汇编语汇编语言程序言程序设计设计高等高等教教育出版社育出版社(2)(2)内部中断源和内部中断内部中断源和内部中断 内部中断源是来自内部中断源是来自CPUCPU内部的中断事件,这些事件都是特定内部的中断事件,这些事件都是特定事件,一旦发生,事件,一旦发生,CPUCPU即调用预定的中断服务程序去处理。内部即调用预定的中断服务程序去处理。内部中断主要有以下几种情况:中断主要有以下几种情况:除法错误除法错误:当执行除法指令时,如果除数为当执行除法指令时,如果除数为0 0或是商数超或是商数超过了最大值,过了最大值,CPUCPU会自
11、动产生类型为会自动产生类型为0 0的除法错误中断。的除法错误中断。软件中断软件中断执行软件中断指令时,会产生软件中断。执行软件中断指令时,会产生软件中断。8086/80888086/8088的系统中,的系统中,设置了三条中断指令设置了三条中断指令,分别是:分别是:v第第8 8章章 中断与系统功能调用中断与系统功能调用 汇编语汇编语言程序言程序设计设计高等高等教教育出版社育出版社 中断指令中断指令INT nINT n:用户可以用用户可以用INT n INT n 指令来产生一个类型指令来产生一个类型为为n n的中断的中断,以便让以便让CPUCPU执行执行n n号中断的中断服务程序,通常这号中断的中
12、断服务程序,通常这样做的目的是该中断服务程序的功能正是当前软件所需要的。样做的目的是该中断服务程序的功能正是当前软件所需要的。断点中断断点中断INT 3INT 3:执行断点指令执行断点指令INT 3INT 3,将引起类型为将引起类型为3 3的的断点中断,这是调式程序专用的中断。断点中断,这是调式程序专用的中断。溢出中断溢出中断INTOINTO:如果标志寄存器中溢出标志位为如果标志寄存器中溢出标志位为1 1,在执,在执行了行了INTOINTO指令后,产生类型为指令后,产生类型为4 4的溢出中断。的溢出中断。v第第8 8章章 中断与系统功能调用中断与系统功能调用 汇编语汇编语言程序言程序设计设计高
13、等高等教教育出版社育出版社单步中断单步中断 当标志寄存器的标志位当标志寄存器的标志位TFTF置置1 1时,时,8086/8088 CPU8086/8088 CPU处于单步处于单步工作方式。工作方式。CPUCPU每执行完一条指令,自动产生类型为每执行完一条指令,自动产生类型为1 1的单步中的单步中断,直到将断,直到将TFTF置置0 0为止。单步中断和断点中断一般仅在调试程为止。单步中断和断点中断一般仅在调试程序内使用。序内使用。v第第8 8章章 中断与系统功能调用中断与系统功能调用 汇编语汇编语言程序言程序设计设计高等高等教教育出版社育出版社 为了解决多个中断源同时申请中断时响应的先后顺序问题,
14、为了解决多个中断源同时申请中断时响应的先后顺序问题,系统将所有的中断源划分为四级,以系统将所有的中断源划分为四级,以0 0级为最高,依次降低等,级为最高,依次降低等,各级情况如下:各级情况如下:0 0级级-除单步中断以外的内中断源除单步中断以外的内中断源1 1级级-不可屏蔽中断源不可屏蔽中断源2 2级级-可屏蔽中断源可屏蔽中断源3 3级级-单步中断源单步中断源 不同级别的中断源同时申请中断时不同级别的中断源同时申请中断时,CPUCPU根据级别高低依次根据级别高低依次决定服务顺序。决定服务顺序。v第第8 8章章 中断与系统功能调用中断与系统功能调用 汇编语汇编语言程序言程序设计设计高等高等教教育
15、出版社育出版社4.4.中断类型号中断类型号 由于系统中存在许多中断源,当有中断发生时,就有由于系统中存在许多中断源,当有中断发生时,就有CPUCPU如何识别中断源是谁的问题,只有知道了中断源是谁,如何识别中断源是谁的问题,只有知道了中断源是谁,CPUCPU才才能调用相应的中断服务程序来为其服务。为了标记中断源,能调用相应的中断服务程序来为其服务。为了标记中断源,人们给系统中的每个中断源指定了一个唯一的编号,称为中人们给系统中的每个中断源指定了一个唯一的编号,称为中断类型号。断类型号。CPUCPU对中断源的识别就是获取当前中断源的中断类对中断源的识别就是获取当前中断源的中断类型号。方法如下:型号
16、。方法如下:v第第8 8章章 中断与系统功能调用中断与系统功能调用 汇编语汇编语言程序言程序设计设计高等高等教教育出版社育出版社 可屏蔽硬件中断:可屏蔽硬件中断:CPUCPU在准备响应其中断请求时,会给在准备响应其中断请求时,会给它发一个中断请求响应信号,硬件中断源在收到这一信号后会它发一个中断请求响应信号,硬件中断源在收到这一信号后会将自己的类型号通过系统数据线发送给将自己的类型号通过系统数据线发送给CPUCPU。软件中断:在中断指令软件中断:在中断指令INT n INT n 中,参数中,参数n n即为中断类型即为中断类型号。号。除上面两种情况外,其余中断都是固定类型号:这主要除上面两种情况
17、外,其余中断都是固定类型号:这主要是内部中断,如除法错(类型是内部中断,如除法错(类型0 0)、单步中断(类型)、单步中断(类型1 1)、)、INT INT 3 3(类型(类型3 3)、)、INTOINTO(类型(类型4 4)等。外部中断中非屏蔽中断也是)等。外部中断中非屏蔽中断也是固定类型号(类型固定类型号(类型2 2)。)。8086/80888086/8088系统中中断类型号范围为系统中中断类型号范围为0 0FFHFFH,即最多即最多256256个个中断源。在中断源。在PCPC机中,这机中,这256256个中断类型号的分配情况如表个中断类型号的分配情况如表8-18-1所所示。示。v第第8
18、8章章 中断与系统功能调用中断与系统功能调用 汇编语汇编语言程序言程序设计设计高等高等教教育出版社育出版社5.5.中断系统中断系统 为了实现中断的功能而设置的各种硬件和软件,统称为为了实现中断的功能而设置的各种硬件和软件,统称为中断系统。中断系统的硬件部分应能完成中断信号的发出以中断系统。中断系统的硬件部分应能完成中断信号的发出以及两个或更多个中断源同时提出中断请求时的优先权排队及两个或更多个中断源同时提出中断请求时的优先权排队(因多个硬件中断源共用一条(因多个硬件中断源共用一条8086/80888086/8088可屏蔽中断请求输入可屏蔽中断请求输入引脚)。另外在引脚)。另外在CPUCPU响应
19、中断时还要能向响应中断时还要能向CPUCPU提供中断源的中提供中断源的中断类型号。中断系统的软件部分要在内存中准备好各个中断断类型号。中断系统的软件部分要在内存中准备好各个中断源所需的中断服务程序,然后将中断服务程序的地址填在指源所需的中断服务程序,然后将中断服务程序的地址填在指定位置的表格(中断矢量表)中,以便定位置的表格(中断矢量表)中,以便CPUCPU执行时能找到它。执行时能找到它。v第第8 8章章 中断与系统功能调用中断与系统功能调用 汇编语汇编语言程序言程序设计设计高等高等教教育出版社育出版社6.CPU6.CPU响应中断的条件响应中断的条件 对于中断,对于中断,CPUCPU并不总是会
20、予以响应,这取决于中类型及标志寄并不总是会予以响应,这取决于中类型及标志寄存器中存器中IFIF(中断允许标志位)的状态。具体为:中断允许标志位)的状态。具体为:内部中断内部中断 总是响应。总是响应。外部中断外部中断 非屏蔽中断非屏蔽中断:CPU:CPU总是响应。在硬件设计时只将那些如果总是响应。在硬件设计时只将那些如果CPUCPU不不作及时处理会产生十分严重后果的外部紧急事件才作为非屏蔽中断源。作及时处理会产生十分严重后果的外部紧急事件才作为非屏蔽中断源。可屏蔽中断可屏蔽中断:绝大多数硬件中断源都是可屏蔽中断源。这种中绝大多数硬件中断源都是可屏蔽中断源。这种中断源的中断请求断源的中断请求CPU
21、CPU既可以响应,也可以不响应,这取决于既可以响应,也可以不响应,这取决于IFIF位,若位,若该位为该位为0 0(称为关中断),则(称为关中断),则CPUCPU不会响应;若该位为不会响应;若该位为1 1(称为开中断)(称为开中断),则,则CPUCPU将会响应。将会响应。IFIF位的状态可由当前运行的程序来设置,故位的状态可由当前运行的程序来设置,故CPUCPU是是否响应可屏蔽中断请求取决于当前运行程序的要求。否响应可屏蔽中断请求取决于当前运行程序的要求。v第第8 8章章 中断与系统功能调用中断与系统功能调用 汇编语汇编语言程序言程序设计设计高等高等教教育出版社育出版社8.1.2 8.1.2 中
22、断矢量表与中断响应过程中断矢量表与中断响应过程 1.1.中断矢量表中断矢量表 CPUCPU在响应中断时,要执行该中断源对应的中断服务程序,在响应中断时,要执行该中断源对应的中断服务程序,可可CPUCPU如何知道这段程序在哪儿呢?答案是如何知道这段程序在哪儿呢?答案是CPUCPU通过查找中断矢通过查找中断矢量表来得知。中断服务程序的地址叫中断矢量,将全部中断矢量表来得知。中断服务程序的地址叫中断矢量,将全部中断矢量集中在一张表中,叫中断矢量表。中断矢量表的位置固定在量集中在一张表中,叫中断矢量表。中断矢量表的位置固定在内存的最低内存的最低1K1K字节中,即字节中,即00000H00000H003
23、FFH003FFH处。这张表中存放着处。这张表中存放着所有中断服务程序的入口地址,而且根据中断类型号从小到大所有中断服务程序的入口地址,而且根据中断类型号从小到大依次排列,每一个中断服务程序的入口地址在表中占依次排列,每一个中断服务程序的入口地址在表中占4 4个字节:个字节:前前2 2字节为偏移量,后字节为偏移量,后2 2字节为段地址。因系统中共有字节为段地址。因系统中共有256256个中断个中断源,而每个中断服务程序入口地址又占四个字节,故中断矢量源,而每个中断服务程序入口地址又占四个字节,故中断矢量表共占表共占256*4=1K256*4=1K个字节。如图个字节。如图8-28-2所示。所示。
24、v第第8 8章章 中断与系统功能调用中断与系统功能调用 汇编语汇编语言程序言程序设计设计高等高等教教育出版社育出版社00000H00000H0 0号中断中断服务程序的偏移量(低字节)号中断中断服务程序的偏移量(低字节)0 0号中断中断服务程序的偏移量(高字节)号中断中断服务程序的偏移量(高字节)00002H00002H0 0号中断中断服务程序的段地址(低字节)号中断中断服务程序的段地址(低字节)0 0号中断中断服务程序的段地址(高字节)号中断中断服务程序的段地址(高字节)00004H00004H1 1号中断中断服务程序的偏移量(低字节)号中断中断服务程序的偏移量(低字节)1 1号中断中断服务程
25、序的偏移量(高字节)号中断中断服务程序的偏移量(高字节)00006H00006H1 1号中断中断服务程序的段地址(低字节)号中断中断服务程序的段地址(低字节)1 1号中断中断服务程序的段地址(高字节)号中断中断服务程序的段地址(高字节)003FCH003FCH255255号中断中断服务程序的偏移量(低字节)号中断中断服务程序的偏移量(低字节)003FDH003FDH255255号中断中断服务程序的偏移量(高字节)号中断中断服务程序的偏移量(高字节)003FEH003FEH255255号中断中断服务程序的段地址(低字节)号中断中断服务程序的段地址(低字节)003FFH003FFH255255号中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DOS BIOS 中断 程序设计
限制150内