一、3.外部硬件中断与进入保护模式

本文详细解析了处理器如何处理外部中断,如NMI和INTR,以及中断标志位的作用。介绍了BIOS创建中断向量表的过程,实时时钟中断的类型和寄存器控制,以及在保护模式下内存管理和中断处理的实现。

外部硬件中断:处理器接两根线NMI传输非屏蔽中断(即无法屏蔽的中断)和INTR传输可屏蔽中断

image-20230731215800052

IR0到IR7优先级依次降低

image-20230731220027450

处理器中中断标志位起决定作用,IF为0时屏蔽所有INTR引脚来的信号都被屏蔽

image-20230731220202828

image-20230731220619331

BIOS创建中断向量表

image-20230731221247135

实时时钟和CMOS RAM

CMOS RAM中的日期和时间通常使用二进制形式的十进制编码(BCD)来表示

image-20230731222012037

实时时钟RTC电路可以发出的中断信号类型:

  • 周期性中断信号
  • 更新周期结束中断
  • 闹钟中断

周期性中断信号

以固定周期进行中断

image-20230731223058346

寄存器A指定时基和速率

image-20230801073234092

寄存器B控制周期性中断是否运行

image-20230731223445947

更新周期结束中断

更新周期:每隔一秒更新时间、检查数据有效性、检查闹钟、写回更新的数据

image-20230801073732792

image-20230801074008211

image-20230801074308231

闹钟中断

image-20230801074555454

实时时钟发出的中断信号的类型判断:

寄存器C只读,读取后自动清零

image-20230801074757680

程序中修改SS寄存器和修改SP寄存器的指令必须相邻,否则可能会在中间发生中断导致栈错误

安装中断处理过程

image-20230801081345297

SECTION code align=16 vstart=0           ;定义代码段(16字节对齐) 
new_int_0x70:
	...
	iret

...
start:
    mov ax,[stack_segment]
    mov ss,ax
    mov sp,ss_pointer
    mov ax,[data_segment]
    mov ds,ax
    mov al,0x70 ; 中断号0x70
    mov bl,4
    mul bl ; 中断号乘4得到中断向量表IVT中对应中断的入口地址所在的地址
    mov bx,ax

    cli ; 关中断,防止中断发生

    push es
    mov ax,0x0000 ; IVT所在段的地址
    mov es,ax
    mov word [es:bx],new_int_0x70 ;写入自定义的中断处理过程的偏移地址

    mov word [es:bx+2],cs ;写入自定义的中断处理过程的段地址
    pop es

启用更新周期结束中断

image-20230801084517320

    mov al,0x0b ; RTC寄存器B
    or al,0x80 ;最高位置1,NMI引脚外接一个与门的输出,输入一个是端口0x70最高位的反相,另一个是NMI中断信号,置1可阻断NMI 
    out 0x70,al ; 0x70为索引端口,用于指定CMOS RAM内的单元
    mov al,0x12 ;设置寄存器B,禁止周期性中断,开放更新
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值