大家一起写操作系统(3)-时钟中断

  大家都知道操作系统利用中断来与外设进行交互。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
    mov  fs,ax
    mov  gs,ax
    lss esp,[init_stack]
;设置8253定时芯片,把计数器通道0设置成每隔10ms向中断控制器发送一个中断请求
  

你可能感兴趣的:(Linux/Unix)