大家都知道操作系统利用中断来与外设进行交互。80xx86兼容机使用两片级联的8259A可编程中断控制芯片组成一个中断控制器,用于实现与I/O设备的交互。可编程意味着我们可以为不同的外设(时钟,键盘,鼠标等)分配不同的中断号,从而执行不同的中断处理过程。
BIOS初始化这个中断控制器时将中断号8分配给了时钟控制器,因而下面我们通过将中断向量表中的8号描述符设为我们的中断程序地址,进而实现时钟中断程序。我们在中断程序中打印字符'E',每打2000次后再从头开始打,为了能够看出重复打印的效果,满2000次后更换颜色。
LATCH equ 11930
VIDEO_DS equ 0x18
[SECTION text]
[BITS 32]
startup_32:
mov eax,0x10
mov ds,ax
lss esp,[init_stack] ;mem low->reg,mem high->ss
call setup_idt ;初始化IDT中断向量表
call setup_gdt ;初始化GDT
mov eax,0x10 ;初始化完GDT后重新加载ds,es,fs,gs,ss,sp
mov ds,ax
mov es,ax
&n
本文介绍了操作系统如何利用中断与外设交互,特别是在80x86系统中,通过8259A中断控制器处理时钟中断。文章通过设置中断向量表,实现了时钟中断程序,该程序在接收到中断后打印字符'E',每打印2000次后改变颜色,展示了基本的中断处理流程。
订阅专栏 解锁全文
1702

被折叠的 条评论
为什么被折叠?



