微型计算机:第7章 中断系统_第1页
微型计算机:第7章 中断系统_第2页
微型计算机:第7章 中断系统_第3页
微型计算机:第7章 中断系统_第4页
微型计算机:第7章 中断系统_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第7章中断系统7.1中断的基本概念7.28086的中断结构7.3可编程中断控制器8259A7.4中断调用7.1中断的基本概念7.1.1中断与中断源1.中断在CPU正常运行程序时,由于内部事件、外部事件或由程序预先安排的事件所引起的CPU暂时停止正在运行的程序,而转去执行请求CPU服务的内部/外部事件或预先安排事件的服务程序,待服务程序处理完毕后又返回去继续执行被暂停的程序2.中断源发出中断请求的外部设备或引起中断的内部原因称为中断源常见的中断源有(1)故障中断,如电源掉电、内存奇偶错等;(2)软件中断,如CPU执行某些指令或操作引起的中断等;(3)输入输出设备中断,如打印机、CRT、磁盘等;(4)实时时钟,如定时器提供的实时信号等。3.中断识别即找出是哪一个中断源发出的中断请求中断识别的目的是要形成该中断源的中断服务程序的入口地址,以便CPU将此地址置入CS:IP寄存器,从而实现程序的转移7.1.2中断系统的功能中断系统是指实现中断功能的软硬件的统称1.正确识别中断请求,实现中断响应、中断处理及中断返回2.实现中断优先级排队3.实现中断嵌套7.1.3中断处理过程一个完整的中断处理过程包括中断请求、中断判优、中断响应、中断处理和中断返回五个基本阶段。图7-1中断处理过程判优逻辑进行优先排队中断源提出中断请求CPU执行完当前指令CPU取下一条指令中断请求信号有效?CPU允许中断否?CPU关闭中断保护程序断点找出中断源,形成中断服务程序入口地址,并转向中断服务程序保护现场

执行中断服务程序恢复现场CPU开放中断

返回原程序断点处中断请求中断判优中断响应中断处理中断返回是是否否

1.中断请求中断请求是中断过程的第一步。中断源产生中断请求的条件,因中断源而异2.中断判优由于中断产生的随机性,可能出现两个或两个以上的中断源同时提出中断请求的情况。这时就必须要求设计者事先根据中断源的轻重缓急,给每个中断源确定一个中断级别——优先权。3.中断响应中断优先权确定后,发出中断申请的中断源中优先权最高的中断请求就被送到CPU的中断请求引脚上。4.中断处理中断处理通常是由中断服务程序完成的。中断服务程序一般按下面模式设计(1)保护现场(2)执行中断服务程序(3)恢复现场5.中断返回通常在中断返回前,要求执行一条开中断指令,以便让CPU能再次响应中断,然后执行中断返回指令,返回到原程序的中断断点处继续原程序的执行。7.1.4中断判优的方法1.软件查询判优IRQ0IRQ1IRQ2IRQ3IRQ4IRQ5IRQ6IRQ7≥1并行输入接口

INTRD0~D7

CPU图7-2软件查询判优电路中断请求寄存器断点保护IRQ0?IRQ1?IRQ7?中断返回中断源0的中断服务程序中断源1的中断服务程序中断源7的中断服务程序NNNYYY图7-3软件查询程序流程图2.链式电路判优链式判优的基本思想是将所有的中断源构成一个链(称为菊花链),各中断源在链中的前后顺序是根据中断源优先级别的高低来排列的,排在链前面高优先级别的中断会自动封锁低优先级别的中断CPUINTAINTR≥1A≥1B1#I/O7#I/O接口接口≥1≥1≥1≥11≥111图7-4链式优先权排队电路0#I/O接口3.专用硬件方式在微型机中普遍使用一种可编程的中断控制器(如Intel8259A)实现中断优先级的管理。4.中断的多级嵌套一个中断请求尚未处理完,又转而处理新的中断请求,称为中断的多级嵌套或称为多级中断请求中断响应中断响应请求中断返回中断返回低级中断服务程序高级中断服务程序图7-5两级中断嵌套的示意图实现多级中断需要注意的两个问题:(1)实现多重中断的重要条件是在中断服务执行过程中必须开放中断。(2)必须加入屏蔽本级和较低级的中断请求的环节,保证只有高级中断源才能中断低级的中断处理。7.28086的中断结构7.2.18086的中断类型8086具有强有力的中断系统,可以处理256种不同的中断。如果将这些中断进行分类,则可以分为两大类:外部中断和内部中断。INTn指令中断逻辑INT3INTO指令除数为指令指令中断0中断NMIINTR非屏蔽中断请求可屏蔽中断请求中断控制器(8259A)软件中断硬件中断图7-68086的中断源类型1.外部中断(1)非屏蔽中断NMI。用户不能用软件屏蔽的中断。(2)可屏蔽中断INTR。8086的INTR中断请求信号来自中断控制器8259A,是电平触发方式,高电平有效。2.内部中断(1)专用中断。在中断向量表中,类型号0~4中除了类型号2的NMI非屏蔽中断外,其余均为专用的软件中断,它们通常是由某个标志位引起的中断。①0型中断——除法出错中断。②1型中断——单步中断。③3型中断——断点中断(INT)。④4型中断——溢出中断(INTO指令)(2)指令中断——INTn指令,其类型号就是给定的n。

类型0中断入口(除法出错)类型1中断入口(单步中断)类型2中断入口(NMI)类型3中断入口(断点中断)类型4中断入口(溢出中断)类型5中断入口类型31中断入口类型32中断入口类型255中断入口IPCSIPCSIPCS00000400800C01001407C0803FC专用中断系统备用供用户使用图7-7中断向量表7.2.2中断向量和中断向量表2011年11月9日星期三7.2.3中断向量的装入下面介绍几种填写中断向量表的方法例7-1用MOV指令写入中断向量。假设中断向量号为60H,中断服务程序的段基址是SEG_INTR,偏移地址是OFFSET_INTR,则填写中断向量表的程序段为:

┇CLI

;关中断CLD

;内存地址加1MOVAX,0MOVES,AX;给ES赋值为0MOVDI,60H*4;中断向量指针→DIMOVAX,OFFSET_INTR;中断服务程序偏移值→AXSTOSW;AX→[DI][DI+1]中,然后DI+2MOVAX,SEG_INTR;中断服务程序的段基址→AXSTOSW;AX→[DI+2][DI+3]STI;关中断

┇例7-2将中断服务程序的入口地址直接写入中断向量表。

MOVAX,00HMOVES,AX

MOVBX,60H*4;中断号×4→BXMOVAX,OFFSET_INTR

;中断服务程序偏移值→AX

MOVES:[BX],AX;装入偏移地址

MOVAX,SEG_INTR;中断服务程序的段基址→AXMOVES:[BX+2],AX;装入段基址

┇7.2.48086的中断响应过程1.内部中断响应过程(1)将类型号乘4,计算出中断向量的地址;(2)CPU的标志寄存器入栈,以保护各个标志位,此操作类似于PUSHF指令。(3)清除IF和TF标志,屏蔽新的INTR中断和单步中断(4)保存断点,即把断点处的IP和CS值压入堆栈,先压入CS值,再压入IP值。(5)根据第一步计算出来的地址从中断向量表中取出中断服务程序的入口地址(段和偏移),分别送至CS和IP中。(6)转入中断服务程序执行。内部中断具有如下一些特点:①中断由CPU内部引起,中断类型号的获得与外部无关,CPU不需要执行中断响应周期去获得中断类型号。②除单步中断处,内部中断无法用软件禁止,不受中断允许标志IF的影响。③内部中断何时发生是可以预测的,这有点类似于子程序调用。2.外部中断响应过程(1)非屏蔽中断响应。(2)可屏蔽中断响应。CLKALELOCKINTAD7~D0T1T2T3T4T1T2T3T4

第一个总线周期INTA第二个总线周期INTA中断类型号图7-88086对INTR的中断响应时序IRET指令的操作取指令执行指令执行完毕?内部中断?NMI?INTR?TF=1?IF=1?NYYYYYYYNNNNNNN类型号=0~255类型号=2中断响应读取类型号类型号=1保护FLAGSTEMP←TFTF=IF=0CS、IP入栈计算向量表地址低字→IP高字→CSNMI?转入中断服务程序TEMP=1?执行中断服务程序恢复CS和IP恢复FLAGS返回被中断的程序图7-9中断响应和中断处理流程7.3可编程中断控制器8259A7.3.18259A的内部结构和引脚特性1.8259A的内部结构读/写逻辑数据总线缓冲器数据总线缓冲器中断服务寄存器ISR中断请求寄存器IRR优先权分析器PR中断屏蔽寄存器IMR控制逻辑INTAINTIR0IR7图5-98259A内部结构框图D7~D0RDWRCAS0CAS1CAS2SP/ENA0CS2.8259A的引脚特性D7D6WRD5D4D3CSRDD2D1D0CAS0CAS1GNDINTIR2IR1IR0INTAVCCA0IR6IR5IR4IR3IR7SP/ENCAS2图7-108259A引脚信号282726252423222120191817161512345678910111213147.3.28259A的工作过程1.中断源通过IR0~IR7向8259A发中断请求,使得8259A的中断请求寄存器IRR的相应位置1。2.IRR中经中断屏蔽寄存器IMR允许后的置位位进入优先权判别器PR,PR将其中最高优先权的中断请求从INT输出,送至CPU的INTR端。3.若CPU处于开中断状态,则在当前指令执行结束后,启动中断响应总线操作,发出两个负脉冲作为响应信号。

4.8259A接收到第一个负脉冲,完成如下工作:(1)使ISR相应位置1,表示CPU已为该中断请求服务。(2)使IRR的相应位清0。5.8259A接收到第二个负脉冲,将中断类型号送上数据总线。中断类型号由用户编程和中断请求引脚IRi的序号i共同决定(CPU读取中断类型号,经响应过程后,进入中断服务程序,直到服务结束返回)。6.若8259A工作在自动结束中断方式AEOI,则8259A清除ISR的相应位,否则直至中断服务结束,发出EOI命令,才能使ISR中的相应位清0。7.3.38259A的工作方式8259A有多种工作方式,这些工作方式可以通过初始化命令字(ICW1~ICW4)和操作命令字(OCW1~OCW4)来设置。

1.中断屏蔽方式

(1)普通屏蔽方式。利用操作命令字OCW1,使屏蔽寄存器IMR中的一位或数位置1来屏蔽一个或数个中断源的中断请求。若要开放某一个中断源的中断请求,则将IMR中相应的位置0。

(2)特殊屏蔽方式。在某些场合,执行某一个中断服务程序时,要求允许另一个优先级比它低的中断请求被响应,此时可采用特殊屏蔽方式可通过OCW3的D6D5=11来设定。

2.中断嵌套方式

(1)全嵌套方式。

在此种方式下,中断优先级按IR0~IR7顺序进行排队,并且只允许中断级别高的中断源去中断级别低的中断服务程序,但不能相反。这是8259A最常用的方式。在对8259A进行初始化以后,没有设置其他优先级方式,则自动按此方式工作。

(2)特殊全嵌套方式。

与全嵌套方式基本相同,所不同的是在特殊全嵌套方式下,当执行某一级中断服务程序时,可响应同级的中断请求,从而实现对同级中断请求的特殊嵌套(8259A级联使用时,某从片的8个中断源对主片来说,可以认为是同级的)。

特殊全嵌套方式用于多片级联。3.优先级控制方式

(1)优先级自动循环方式。在这种方式下,优先级顺序不是固定不变的,一个设备得到中断服务后,其优先级自动降为最低。其初始的优先级顺序规定为IR0,IR1,IR2,…,IR7

该方式用于系统中多个中断源优先级相等的场合

(2)优先级特殊循环方式。这种方式与优先级自动循环方式惟一的区别是,其初始的优先级不是固定IR0为最高,然后开始循环,而是由程序指定IR0~IR7中任意一个为最高优先级,然后再按顺序自动循环,决定优先级。

4.中断结束方式

(1)自动中断结束方式。在中断服务程序中,中断返回之前,不需要发出中断结束命令就会自动清除该中断源所对应的ISR位(实际上在CPU发出第二个INTA信号时,8259即自动清除ISR中的对应位)。这种方式用在多个中断不会嵌套的系统中。

(2)非自动中断结束方式。在中断服务程序返回之前,必须发中断结束命令才能使ISR中的当前服务位清除。7.3.48259A的级联电路因一块8259A最多只能管理8级中断,在多于8级中断的系统中,必须将多块8259A级联使用,如图7-12地址总线数据总线地址总线D7~D0SP/ENINTA0CSD7~D0CAS0CAS1CAS2从片8259AIR7IR0IR1图7-12参与8259A组成的级联中断系统图地址译码8086/8088CPUINTR地址译码INTAWRRD接总线驱动器的OE端接数据总线IOWCMCE/PDENIORC8288总线驱动器SP/ENCAS0CAS1CAS2主片8259A地址IR0IR1A0IR7驱动器INTA连接其他芯片来自其他从片外设的中断申请7.3.58259A的编程命令1.初始化命令字ICW写在奇地址中NNYY写ICW1写ICW2写ICW3要ICW4?写ICW4级联?初始化完写在偶地址中图7-128259A初始化流程与处理器接口

A0RD*WR*CS*功能

0100110000101010×110×××1写入ICW1、OCW2和OCW3写入ICW2~ICW4和OCW1读出IRR、ISR和查询字读出IMR数据总线高阻状态数据总线高阻状态如何进一步区分各个端口地址?ICW1(A0=0

)×××1LTIM0SNGLIC4D7D6D5D4D3D2D1D0×——表示可以任意为1为0都可以(建议为0)1——只能为1,作为标志中断触发方式:LTIM=1,电平触发方式LTIM=0,边沿触发方式规定单片或级连方式:SNGL=1,单片方式SNGL=0,级连方式是否写入ICW4IC4=1,要写入ICW4IC4=0,不写入ICW4,即ICW4规定的位全为0ICW2(A0=1

)T7T6T5T4T3×××D7D6D5D4D3D2D1D0设置中断向量号T7~T3为中断向量号的高5位低3位由8259A自动确定:IR0为000、IR1为001、……、IR7为111ICW3(A0=1

)S7S6S5S4S3S2/ID2S1/ID1S0/ID0D7D6D5D4D3D2D1D0级连命令字主片8259A:Si=1对应IRi接有从片;否则IRi没有连接从片从片8259A:ID0~ID2编码说明从片INT引脚接到主片哪个IR引脚(3)ICW3的格式和含义如是主片,格式如下:

如是从片,则ICW3的格式如下:

如何判断谁是主片?ICW4(A0=1

)000SFNMBUFM/SAEOIμPMD7D6D5D4D3D2D1D0嵌套方式:特殊全嵌套方式(SFNM=1),主片采用的方式普通全嵌套方式(SFNM=0)数据线的缓冲方式:缓冲方式(BUF=1),M/S定主从。非缓冲方式(BUF=0),引脚决定主片/从片选择(缓冲方式,由软件选择)主片(M/S=1)从片(M/S=0)中断结束方式:自动中断结束(AEOI=1)非自动中断结束(AEOI=0),8086发EOI命令给8259微处理器类型:16位80x86(PM=1)8位8080/8085(PM=0)2.

操作命令字OCW8259A工作期间,可以随时接受操作命令字OCWOCW共有3个:OCW1~OCW3写入时没有顺序要求,需要哪个OCW就写入那个OCWD7D6D5D4D3D2D1D0

OCW1(A0=1

)M7M6M5M4M3M2M1M0D7D6D5D4D3D2D1D0屏蔽命令字内容写入中断屏蔽寄存器IMRDi=Mi对应IRi,为1禁止IRi中断;为0允许IRi中断。各位互相独立。利用顺序与ICW2~ICW4区分开OCW2(A0=0

)(1)设置优先级循环方式(2)组成两类中断结束命令: 一般的中断结束命令 特殊的中断结束命令RSLEOI00L2L1L0D7D6D5D4D3D2D1D0R、SL和EOI配合使用产生中断结束EOI命令和改变优先权顺序L2~L0的3位编码指定IR引脚利用D4/D3与ICW1~OCW3区分开OCW3(A0=0)

功能: (1)设置和撤销特殊屏蔽方式 (2)设置中断查询方式 (3)设置对内部寄存器的读出命令(1)初始化命令字ICW1——芯片控制字(2)初始化命令字ICW2——中断类型号命令字ADIA0D7

D6

D5

D4

D3

D2

D1

D00LTIM1SNGLICW4A0D7D6D5

D4

D3

D2

D1

D0T7T61T3T4T5(3)初始化命令字ICW3——主/从片初始化字主片ICW3的格式如下:

A0D7

D6

D5D4D3D2D1D01IR0从片ICW3的格式如下:

ID2

A0D7

D6

D5

D4D3

D2

D1

D0001000ID1ID0(4)初始化命令字ICW4——方式控制字M/SA0

D7

D6

D5

D4

D3

D2D1D0001

BUFBUSFNM0PMAEOI

A0D7D6D5D4D3D2D1D012.操作命令字OCW(1)操作命令字OCW1——屏蔽操作命令字

(2)操作命令字OCW2——中断方式命令字

A0D7D6D5D4D3D2D1D0RSL1L0L1L200EOI(3)操作命令字OCW3——状态操作命令字

A0D7D6D5D4D3D2D1D00ESMM0RISRRP10SMM7.3.68259A编程举例例7-3以IBMPC/AT(80286)微机中的8259A为例说明其初始化编程方法(1)分析在286以上的PC机中,共使用了两片8259A(新型的PC中已将中断控制器集成到了芯片组中,但功能上与8259A完全兼容),两片级联使用,共可管理15级中断。各级中断的用途如表7-1所示。中断向量地址指针

00020H 00024H 00028H 001C0H 001C4H 001C8H 001CCH 001D0H 001D4H 001D8H 001DCH 0002CH 00030H 00034H 00038H 0003CH8259A引脚 主片IR0

主片IR1

主片IR2

从片IR0

从片IR1

从片IR2

从片IR3

从片IR4

从片IR5

从片IR6

从片IR7

主片IR3

主片IR4

主片IR5

主片IR6

主片IR7中断类型号08H09H0AH70H71H72H73H74H75H76H77H0BH0CH0DH0EH0FH优先级

0(最高)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15(最低)中断源定时器键盘从片8259A

时钟/日历钟

IRQ9(保留)

IRQ10(保留)IRQ11(保留)IRQ12(保留)协处理器硬盘控制器IRQ15(保留)异步通信口(COM2)异步通信口(COM1)并行打印机2软盘驱动器并行打印口1表7-1IBMPC/AT的中断源和类型号(2)设计①8259A初始化编程;主片8259A的初始化

MOVAL,11H;写入ICW1,设定边沿触发,级联方式

OUT20H,ALJMPINTR1;延时,等待8259A操作结束,下同INTR1:MOVAL,08H

;写入ICW2,设定IRQ0的中断类型号为08HOUT21H,ALJMPINTR2INTR2:MOVAL,04H;写入ICW3,设定主片IRQ2级联方式

OUT21H,ALJMPINTR3INTR3:MOVAL,11H;写入ICW4,设定特殊全嵌套方式,一般EOI方式

OUT21H,AL┇;从片8259A的初始化

MOVAL,11H

;写入ICW1,设定边沿触发,级联方式

OUT0A0H,ALJMPINTR5INTR5:MOVAL,70H

;写入ICW2,设定从片IR0,即IRQ8的中断类型号为70HOUT0A1H,ALJMPINTR6INTR6:MOVAL,02H

;写入ICW3,设定从片级联到主片的IRQ2OUT0A1H,ALJMPINTR7INTR7:MOVAL,01H

;写入ICW4,设定普通全嵌套方式,一般EOI方式

OUT0A1H,AL┇②级联工作编程;读ISR的内容

MOVAL,0BH;写入OCW3,读ISR命令

OUT0A0H,ALNOP;延时,等待8259A操作结束

INAL,0A0H;读出ISR┇;向从片发EOI命令

MOVAL,20HOUT0A0H,AL;写从片EOI命令

┇;向主片发EOI命令

MOVAL,20HOUT20H,AL;写主片EOI命令

┇7.4中断调用7.4.1DOS和BIOS中断的调用方法1.将入口参数送入指定的调用寄存器,如果没有入口参数,就不需要这一步。2.将功能号送入AH寄存器,将子功能号送入AL寄存器,如果没有子功能号,不需要送AL。3.产生一个软中断INTn,转入子程序入口。4.通过CPU的返回寄存器返回中断处理结果——出口参数。如果没有返回值,也就不需要返回寄存器。例7-4使用INT21H的2BH系统功能设置日期为2004年5月1日。其程序段为:MOVDL,1;入口参数送入指定寄存器:把日子放入DL中MOVDH,5;把月份放入DH中MOVCX,2004

;把年份放入CX中,CX中的年份值是以1980为基准的偏移值SUBCX,1980;减去1980才为年份设定值MOVAH,2BH;设置日期功能号送入AH寄存器INT21H;执行DOS调用CMPAL,0FFH;根据出口参数AL=00H,设置成功;AL=FFH,判断失败JEERROR;不成功,转错误处理┇;成功,往下执行ERROR:(略)7.4.2DOS系统功能调用1.字符设备I/O控制字符设备包括键盘、显示器、打印机、串行通信接口等。通过DOS系统功能调用可以实现单个字符或字符串的输入与输出控制例7-5从键盘输入一个字符,并同时在显示屏上输出,当键入字符‘$’时,则停止操作。

DON1:MOVAH,O1H;置单字符输入

INT21HCMPAL,‘$’;是结束字符吗

JZDON2;是,转向DON2MOVDL,ALMOVAH,02H;显示输出字符

INT21HJMPDON1DON2:INT0;程序结束功能号功能入口参数出口参数Ctrl-c处理01H等待从键盘输入一个字符并显示它无AL=键入字符能02H显示1个字符DL=要显示字符的ACCII码无能03H从COM1接收1个字符无AL=接收的字符能04H从COM1发送1个字符DL=发送字符的ASCII码无能05H向打印机输出1个字符DL=打印字符的ASCII码无能06H立即从键盘输入1个字符或向显示器输出1个字符DL=FFH为输入;DL≠FFH为输出,且DL=输出字符DL=FFH,立即从键盘接收1个字符至AL;若无码可读,则返回ZF=1;DL≠FFH,无出口参数能07H等待从键盘输入一个字符无AL=键入字符否08H等待从键盘输入一个字符无AL=键入字符能09H显示一个字符串DS:DX=显示字符串的首地址无能0AH从键盘接收1个字符串存入缓冲区,并显示它DS:DX=输入字符串缓冲区地址无能表7-2字符设备的系统功能例7-6从键盘输入一串字符,并在显示屏上显示出来。注意09H功能显示字符串时是以‘$’符号结束的,因此,要显示的字符串一律以‘$’结尾DATASEGMENTBUFSIZEDB50;最多可键入50个字符ACTLENDB?;实际键入的字符数CHRASDB50DUP(20H);实际键入的字符从此开始存放

DB‘$’;为显示而加的字符串结束符DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA┇MOVDX,OFFSETBUFSIZE;键入缓冲区起始偏移地址送DXMOVAH,0AH;字符串输入功能

INT21H;输入字符串并放入缓冲区┇

MOVDX,OFFSETCHARS;输入的字符串起始地址送DXMOVAH,09H;字符串显示功能

INT21H;显示键入的字符串┇2.文件管理功能号功能入口参数出口参数3CH建立文件DS:DX=ASCIIZ字符串首地址CX=文件属性AX=句柄(文件号)CF=0,成功;CF=1,出错3DH打开文件DS:DX=ASCIIZ字符串首地址AL=访问码(0-读,1-写,2-读写)AX=句柄(文件号)CF=0,成功;CF=1,出错3EH关闭文件BX=句柄(文件号)无3FH读文件BX=句柄(文件号)CX=欲读的字节数DS:DX=读缓冲区首址AX=实际读出的字节数CF=0,成功;CF=1,出错40H写文件BX=句柄(文件号)CX=欲写的字节数DS:DX=写缓冲区首址AX=实际写入的字节数CF=0,成功;CF=1,出错41H删除文件BX=ASCIIZ字符串首地址无42H移动文件读/写指针BX=句柄(文件号)CX:DX=移动距离(字节数)AL=移动方式码(0-从头移,1-从当前位置移,2-从尾移)DX:AX=新的指针位置(新位置距文件头的距离)CF=0,成功;CF=1,出错表7-3文件管理的DOS系统功能例7-7在磁盘中建立一个文件,并显示完成的结果。假设BUF1中存放正常信息,BUF2中存放错误信息

LEADX,FILEBUFMOVCX,0MOVAH,3CH;建立文件

INT21HJCERRORLEADX,BUF1;无错,提示正常信息

MOVAH,09HINT21HJMPDONERROR:LEADX,BUF2;有错,提示错误信息

MOVAH,09HINT21HDON:INT0;程序结束例7-8打开某文件,并向其中写入内容。LEADX,FILENAMEMOVAL,1;置写方式MOVAH,3DH;打开文件INT21HDON1:LEADX,FILEBUF;字符串输入MOVAH,0AHINT21HMOVCH,0MOVCL,FILEBUF+1;实际输入个数CMPCL,0JZDON2MOVBX,文件代码号LEADX,FILEBUF+2MOVAH,40H;写入文件INT21HDON2:MOVAH,3EH;关闭文件MOVBX,文件代码号INT21HDON3:INT0;程序结束3.定时系统功能号功能入口参数出口参数2AH取日期无CX=年(1980~2099),DH=月(1~12)DL=日(1~31),AL=星期(0~6)2BH置日期CX=年(1980~2099)DH=月(1~12)DL=日(1~31)AL=00H,设置成功AL=FFH,失败2CH取时间无CH=小时(0~23),CL=分(0~59)DH=秒(0~59),DL=1%秒(0~99)2DH置时间CH=小时(0~23)CL=分(0~59)DH=秒(0~59)DL=1%秒(0~99)AL=00H,设置成功AL=FFH,失败表7-4定时系统的DOS系统功能例7-9设置22:10:25时间MOVCH,22;小时值送入CHMOVCL,10;分值送入CLMOVDH,25;秒值送入DHMOVDL,00;1%秒值送入DLMOVAH,2DH;设置时间功能号INT21H;执行DOS调用CMPAH,0FFH;设置成功否JEERROR;不成功,转出错处理┇;成功,继续执行ERROR:(略)4.中断向量的修改中断向量的修改步骤如下:(1)用35H号功能,获取原中断向量,并保存在字变量中。(2)用25H号功能,设置新中断向量,取代原中断向量,以便当中断发生后,转移到新的中断服务程序中。(3)新中断服务程序完毕后,利用25号功能恢复原中断向量。功能号功能入口参数出口参数25H设置中断向量DS:DX=所设置中断向量的段基址:偏移量AL=欲设置中断向量所对应的中断号无35H取中断向量AL=欲取中断向量所对应的中断类型号ES:BX=取得的中断向量的段基址:偏移量表7-5中断向量修改的DOS系统功能例7-10假设原中断程序的中断类型号为n,新中断程序的入口地址的段基址为SEG_INTR,偏移地址为OFFSET_INTR中断向量修改的程序段为:

MOVAH,35H;取原中断向量

MOVAL,nINT21H

MOVOLD_OFF,BXMOVBX,ESMOVOLD_SEG,BX;保存原中断向量(ES:BX)MOVAL,n;中断类型号MOVAH,25H;设置新中断向量(DS:DX)MOVDX,SEG_INTRMOVDS,DX;DS指向新中断服务程序段基址MOVDX,OFFSET_INTR;DX指向新中断服务程序偏移地址INT21H┇

MOVAH,25H;恢复原中断向量

MOVAL,nMOVDX,OLD_SEGMOVDS,DXMOVDX,OLD_OFFINT21H7.4.3BIOS功能调用BIOS的基本功能是控制和驱动系统的外部设备,如磁盘驱动器、显示器、键盘、打印机、异步串行通信接口等类型号功能类型号功能05H屏幕打印中断13H磁盘I/O调用06H(保留)14H串口I/O调用07H(保留)15H磁带I/O调用08H系统时钟中断(IRQ0)16H键盘I/O调用09H键盘中断(IRQ1)17H打印机I/O调用0AHIRQ2的级联输入18H磁带BASIC入口(热启动)0BH异步串口2中断(IRQ3)19H系统重置(冷启动)0CH异步串口1中断(IRQ4)1AH读/写时钟参数0DH并口2中断(IRQ5)1BH键盘Ctrl-Break中断入口0EH软盘中断(IRQ6)1CH间隔时钟中断处理0FH并口

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论