intr

王朝百科·作者佚名  2010-02-20
窄屏简体版  字體:   |    |    |  超大  

函数名: intr

功 能: 改变软中断接口

用 法: void intr(int intr_num, struct REGPACK *preg);

程序例:

#include

#include

#include

#include

#define CF 1 /* Carry flag */

int main(void)

{

char directory[80];

struct REGPACK reg;

printf("Enter directory to change to: ");

gets(directory);

reg.r_ax = 0x3B << 8; /* shift 3Bh into AH */

reg.r_dx = FP_OFF(directory);

reg.r_ds = FP_SEG(directory);

intr(0x21, &reg;);

if (reg.r_flags & CF)

printf("Directory change failed

");

getcwd(directory, 80);

printf("The current directory is: %s

", directory);

return 0;

}

INTR

INTR接受可屏蔽中断请求。在80386中,标志寄存器EFLAGS中的IF标志决定是否屏蔽可屏蔽中断请求。

外部硬件在通过INTR发出中断请求信号的同时,还要向处理器给出一个8位的中断向量。处理器在 响应可屏蔽中断请求时,读取这个由外部硬件给出的中断向量号。处理器对这个中断向量号并没有 规定。但在具体的微机系统中,系统必须通过软件和硬件的配合设置,使得给出的这个中断向量号 不仅与外部中断源对应,而且要避免中断向量号使用冲突情况的出现。可编程中断控制器芯片8259A可 配合80386工作,能够根据设置向处理器提供上述中断向量号,还能处理中断请求的优先级。每 个8259A芯片可以支持8路中断请求信号,如果使用9个8259A芯片(一个主片,8个从片),就可使80386在 单个引脚INTR上接受多达64个中断源的中断请求信号。

处理器不屏蔽来自NMI的中断请求。处理器在响应NMI中断时,不从外部硬件接收中断向量号。与8086/8088一样,在80386中,不可屏蔽中断所对应的中断向量号固定为2。为了不可屏蔽中断的 嵌套,每当接受一个NMI中断,处理器就在内部屏蔽了再次响应NMI,这一屏蔽过程直到执行中断返回指令IRET后才结束。所以,NMI处理程序应以IRET指令结束。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航