第六章 习题与思考题
典型例题解析
船用靠球例6-1 试述PC微机中断系统的分类与特点。 答:PC微机系统中断包括硬件(外部)中断和软件(内部)中断两大类。硬件中断包括不可屏蔽中断NMI和可屏蔽中断INTR。它们都由外部硬件产生。软件中断包括软件中断INT nH和CPU内部特殊中断,它们由内部中断指令或执行程序过程中出现异常产生的。软件中断又有DOS中断和BIOS中断之分。
硬件中断的特点是:
(1)硬中断是外部事件而引起的中断,因此,硬件中断具有随机性和突发性。
(2)在硬件中断响应周期,CPU需要发中断回答信号(非屏蔽硬件中断不发中断回答信号)。
(3)硬件中断的中断号由中断控制器提供(非屏蔽硬件中断的中断号由系统指定为02H)
(4)硬件中断一般是可屏蔽的(非屏蔽硬件中断是不可屏蔽的)。
编织袋折边器
软件中断的特点是:
(1)软件中断是执行中断指令而产生的,无需外部施加中断请求信号。在程序需要调用某个中断服务程序时,只要安排一条相应中断指令,就可转去执行所需要的中断程序,因此,中断的发生不是随机的,而是由程序安排好的。 (2)在软件中断响应周期,CPU不需要发中断回答信号。
(3)软件中断的中断类型号是在指令中直接给出,因此,不需要使用中断控制器。
(4)软件中断是不可屏蔽的。
例6-2 试述可编程控制器8259A的作用。
答:可编程控制器8259A在协助CPU处理中断事务中所起的作用主要是:
(1)接受和扩充外部设备的中断请求。外设的中断请求,并非直接送到CPU,而是通过8259A接受进来,再由它向CPU提出中断请求。一片8259A可授受8个中断请求,经过级联可扩展到8片8259A,能接受64个中断请求。
(2)进行中断优先级排队。外设的中断优先级排队,并不是CPU安排,而是由8259A安排的。即由8259A中断请求输入引脚(IR)的编号决定的。连到IR0上的外设中断优先级最高,连到IR7上的外设中断优先级最低。
(3)向CPU提供中断类型号。其过程是先在8259A初始化时,将中断源的中断类型号写入8259A的ICW2,当CPU响应中断,进入中断响应周期,用中断回答信号INTA2,再从8259A读取这个中断类型号。
例6-3 试述中断向量表的作用及构成。
答:中断向量也即中断服务程序入口地址,系统中所有的中断服务程序入口地址集中起来放到存储器的某一区域内,这个存放中断向量的存储区就叫中断矢量表。中断向量表提供了每一个中断服务程序唯一的确定的入口地址,该入口地址包括4个字节,低2个字节的内容为中断服务程序的偏移地址IP,高2个字节的内容为中断服务程序的段基值CS。.把系统中所有的中断向量集中起来存入到存储器的某一存储区内,这个存放中断向量的存储区就叫中断向量表或中断服务程序入口地址表(中断服务程序首址表)。实模式下,规定把存储器的0000~3FFH共1024个地址单元作为中断向量存储区。 中断向量表的格式,即每个中断向量的4个字节在中断向量表的存放规律是,向量的偏移量(IP)放在两个低字节单元中,向量的基址(CS)放在两个高字节单元中。
例6-4某8086微机系统由两片8259A级联构成中断系统,如图6.3所示。从片8259A接主片的IR2,主片的IR3和IR5有中断引入,中断类型号为33H,35H。两个中断服务程序在同一段内,段基址为2000H,偏移地址分别为1500H和2000H。从片IR4和IR6上有中断请求引入,类型号分别为44H,46H,中断服务程序在同一段内,段基址为3000H,偏移地址为4000H和4700H,试分别写出主8259A和从8259A的初始化程序,将4个中断服务程序的入口地址装入中断向量表中。
初始化编程:
由于是级联方式,所以,主片8259A和从片8259A应分别初始化,且要ICW3。假设对主片8259A的使用要求是:主8259A有级联输入且从IR2引入;中断请求信号为边沿触发,中断类型号为30H~37H;采用特殊全嵌套方式,非缓冲方式,非自动EOI结束方式(即普通EOI结束方式);屏蔽IR2,IR3,IR5以外的中断源,主片的端口地址为3F50H,3F51H。
根据上述使用要求可编写主8259A的初始化程序:
MOV AL,11H ;设置ICW1主8259A采用级联方式,边沿触发
MOV DX,3FF50H ;ICW1的口地址
OUT DX,AL
MOV AL,30H ;设置ICW2即设置中断类型码基值,本例中为30H
MOV DX,3F51H ;ICW2口地址
OUT DX,AL
MOV AL,04H ;设置ICW3,主片的IR2上接有从片8259A的INT端
OUT DX,AL
MOV AL,11H ;设置ICW4,特殊全嵌套、非缓冲方式、非自动EOL结束方式
OUT DX,AL
MOV AL,0DH ;设置OCW1,允许IR2,IR3,IR5中断,其他中断均屏蔽
OUT DX,AL
MOV AL,20H ;定义OCW2,普通EOI结束方式
MOV DX,3F50H
OUT DX,AL
对从片的初始化:
假设对从片8259A的使用要求是:从片8259A接主片的IR2上,中断申请信号为边沿触发;中断类型号别为40Hudiab~47H,从片的端口地址为3F52H,3F53H;优先级采用特殊全嵌套方式,结束方式采用非自动结束EOI,非缓冲方式;采用普通EOI结束方式,屏蔽IR4,IR6以外的中断源。
根据上述对从片8259A的使用要求,其初始化程序如下:
MOV AL, 11H ;设置ICW1,级联方式,边沿触发,要ICW4
MOV DX, 3F52H ;8259A的偶地址端口
OUT DX, AL
MOV AL, 40H ;设置ICW2即设置中断类型码基值,引入中断类型号为40H~47H
MOV DX, 3F53H ;8259A奇地址端口
OUT DX, AL
MOV AL, 02H ;设置ICW3,从片接在主片的IR2端
OUT DX, AL
MOV AL, 11H ;设置ICW4,特殊全嵌套、非缓冲方式,非自动EOI结束方式
OUY DX, AL
MOV AL, 0AFH ;设置OCW1,允许IR4,IR6,屏蔽其他中断源
OUT DX, AL
MOV DX,3F52H
MOV AL, 20H ;设置OCW2,普通方式
OUT DX, AL
中断向量装入:
将4个中断服务程序的入口地址装入中断向量表,向量地址的装入方法很多,本例中用DOS功能调用法。方法是:
使用25号功能调用,先将功能调用号25送AH,再将中断类型号送入AL,将中断服务程序的段基址和偏移地址送入DS:DX,然后用INT 21H调用即可。
本例中将4个中断服务程序的入口地址装入中断向量表的程序如下:
MOV AX ,2000H ;送主片的服务程序所在段的段基址
MOV DS, AX
MOV DX, 1500H ;送入偏移地址
MOV AL, 33H ;中断类型号33H号送AL
MOV AH, 25H ;功能调用号送AH
INT 21H
MOV DX, 2000H ;第二个偏移地址送DX
MOV AL, 35H ; 送中断类型号35H
INT 21H
MOV AX, 3000H ;送从片的中断服务程序入口地址的段基址
MOV DX, AX
MOV DX, 4000H ;送从片的服务程序的偏移地址
MOV AL, 44H ; 送中断类型号
MOV AH, 25H
INT 21H
MOV DX, 4700H ;送另一个入口地址的偏移地址
MOV AL, 46H ;送中断类型号
INT 21H
例6.2:在IBM PC/XT 62联轴器弹簧芯总线的IRQ2端输入一中断请求信号,该中断请求信号的中断源可由62芯总线CLK 输出的时钟经8253定时/计数器产生,也可由一分频电路直接分频产生。每产生一次中断,要求CPU 响应后在CRT 上显示字符串“THIS IS A 8259A INTRERRUPT!”,中断十次后,主机返回DOS 状态,不再响应中断请求。
解: 已知 PC/XT 中8259A 地址为:偶地址20H,奇地址21H,并且使用系统的中断类型号为08H~0FH,IRQ
2对应的中断类型号为0AH。程序流程如图6.4所示
INTA00 EQU 20H ;PC/XT系统中8259A的偶地址端口
INTA01 EQU 21H ;PC/XT系统中8259A的奇地址端口
DATA SEGMENT
MESS DB‘THIS IS A 8259A INTRERRUPT!’,OAH,ODH,‘$’
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX , CS
MOV DS , AX ;设DS指向代码段
MOV DX , OFFSET INT-PROC
MOV AX , 250AH ;设0AH号中断向量
INT 21H
CLI pgd-476;关中断
MOV DX , INTA01
IN AL , DX ;允许IRQ2中断
AND AL , 0FBH
OUT DX , AL
MOV BX , 10 ;设置中断次数10
STI ;开中断
LL: JMP LL ;循环等待中断
INT-PROC PROC ;中断服务程序
MOV AX , DATA
MOV DS , AX ;将DS指向数据段
MOV DX , OFFSET MESS
MOV AH , 09H
INT 21H ;显示发生中断的信息
MOV DX , INT00
MOV AL ,砂浆机 20H
OUT DX , AL ;发中断结束命令EOI