大家都知道操作系统利用中断来与外设进行交互。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