中断处理

中断处理主要分为以下几个步骤: 初始化PIC -> 编写中断处理函数 -> 在IDT中注册中断
 
1.  初始化PIC:1) 设定一些模式; 
                       2) 将PIC各管脚接收到的IRQ与中断号对应起来,决定IRQ以哪一号中断通知CPU; 
                       3) 确定主从PIC之间的连接方式。

     PIC(可编程中断控制器,Programmable Interrupt Controller),由于CPU只能处理一个中断,所以需要PIC来帮助处理多个中断。
    
     中断发生以后,如果CPU可以受理这个中断,CPU就会命令PIC发送2个字节的数据。由于电路设计的原因,这两个字节的数据在CPU看来,与从内存读进来的程序是完全一样的。而该传输的数据就是调用BIOS时的INT指令,CPU即执行该数据,也就将数据当作程序来执行的情况。

2.  编写中断处理函数:主要是让CPU从相应设备端口读取数据,然后对读取到的数据进行相应的处理(比如将数据放入队列,在下半部进行处理)。
     
     从端口读取数据的函数(读取一个字节的数据):
               _io_in8:     // io_in8(int port)
                    MOV EDX, [ESP + 4]
                    MOV EAX, 0
                    IN     AL, DL
                    RET
     其中,EAX一般作为返回值返回,所以都将值赋给EAX。

     为了加快中断处理的效率,一般上半部只负责数据的接收,然后将数据存入队列。下半部负责从队列中读取数据并进行处理。

3.  在IDT(中断记录表)中注册中断:
     中断描述符表( Interrupt Descriptor Table,IDT)是一个系统表,它与每一个中断或异常相联系,每一个向量在表中存放的是相应的中断或异常处理程序的入口地址。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值