2012-05-07 108 views
1

我正試圖編寫簡單的程序,它將替換標準鍵盤中斷與自定義的應該只減少一些變量。但是,如果沒有舊的處理程序調用,它將無法工 這裏是我的中斷服務程序:自定義鍵盤中斷處理程序

handler proc 
    push ax 
    push di 
    dec EF 
    ;pushf  ;when these to instructions commented keyboard interrupts handling hangs 
    ;call [OLD] 
    mov al,20h 
    out 20h,al 
    pop di 
    pop ax 
    iret 
handler endp 

什麼樣的行動我也應該執行在我的處理程序,使其工作沒有舊的處理程序? 謝謝。

回答

1
  1. 您需要保存DS在堆棧上,並將其設置爲你的程序正確的值,那麼它的iret之前恢復。

  2. 這一部分:

    mov al,20h 
    out 20h,al 
    

    響應中斷。如果你打電話給BIOS中斷處理程序,那麼你不應該這樣做,因爲BIOS處理程序會這樣做。

+0

但似乎確認無效,因爲即使我的處理程序只包含dec,出口20h到端口20h和iret,然後處理程序將只執行第一次,不會再被調用。也許我應該添加其他任何東西? – Filipp