2012-03-05 91 views
3

我有一個問題掛鉤詮釋09h我已經改變了指針,我的新的ISR,如果我在Windows上調試,每次我按下一個鍵時觸發中斷。但在VMWare中,似乎只有一次觸發,沒有更多。我在DOS 6.22中測試過,發生的情況完全一樣。掛鉤詮釋09h中斷

我的代碼如下所示:

MyIsr:
pusha
pushf
;tell PIC that interrupt has finished
mov al,0x20
out 0x20,al
popf
popa
iret


如果我使用一個USB鍵盤我可以發送相同的命令,如PS/2?

+2

嘗試從IVT保存先前ISR指針您覆蓋它並從ISR而不是ACK的調用之前:荷蘭國際集團的IRQ。在CALL之前記住PUSHF:舊指針(模擬int-call) – 2012-03-05 14:49:27

+0

如果我使用USB鍵盤,我可以發送像Ps/2一樣的命令嗎? – 2012-03-06 13:13:05

回答

1

這裏可能有很多問題,因爲您還沒有發佈完整的代碼編寫視圖。你能解釋一下你準備完成什麼嗎?

如果一個ISR被調用而沒有處理,你將無法做任何事情,所以記住這一點。您的問題可能與您如何在中斷向量表中安裝ISR有關。

  • 在實模式下,你用INT 21H,AH = 25H做
  • 在保護模式下,DJGPP下,你需要使用DPMI功能(使用INT 21H功能,或者使用C函數。見在內存中運行時,也需要鎖定ISR的內存,因爲內存可以「分頁」(因爲我們並不真正「知道」何時運行),所以內存可以「分頁」。

無論如何,你的ISR應該看起來更像如下:

newInt9: 

enter 0,0 
push eax 

in al, 60h 
mov [raw_key], al 

mov al, 20h 
out 20h, al 

pop eax 
leave 
iret  

; ENDPROC

+0

嗯,我試圖得到按鍵我在實模式下工作MS-DOS 6.22另一件事是它使用USB鍵盤與傳統支持啓用。 而在我原來的功能我不會讓進入和離開堆棧幀。我會用PS/2鍵盤測試,然後我會告訴你結果 – 2012-03-23 12:44:12