2014-10-01 57 views
-1

這個問題聽起來有點奇怪。我想完全控制我的鍵盤。在彙編語言中,可以通過更改鍵盤端口中運行的ISR的地址。在Java中可能嗎?如何找到我的鍵盤端口號以及如何將來自鍵盤端口的請求重定向到ISR?Java中的中斷服務例程

+0

DOS是最常用的操作系統,用戶代碼可以鏈接ISR並觸摸x86 I/O端口。你在DOS上運行Eclipse嗎? – Gene 2014-10-01 04:06:44

+0

沒有。我在64位平臺上使用windows 7 – Shantanu 2014-10-01 04:10:12

+0

哪個文件你談論的 – Shantanu 2014-10-01 04:23:16

回答

1

絕對沒有辦法做你在問什麼。

雖然在Java中編寫ISR會非常困難,但問題並不在於與您的編程語言選擇有任何關係。相反,它與用戶模式/內核模式特權分離有關。

在現代操作系統上,中斷服務程序在內核中完全處理,內核受硬件保護,不受用戶空間(讀:「你」)的限制。要在引導進入Windows時在此級別與硬件進行交互,您將需要編寫內核模式設備驅動程序。即使這對於Windows想要獨佔控制的鍵盤等硬件來說也是不夠的。

如果你想玩這個級別的硬件,最好的辦法是將你的系統(或虛擬機)啓動到DOS(不是DOSBox,不是命令提示符,而是實際的DOS),並刷新在您的16位實模式Intel組件上,以及BIOS calls

如果您正在嘗試編寫鍵盤記錄程序,或者因爲鍵盤與正在運行的應用程序的交互作用而發生混亂,您可以查看Win32 hooks

+0

我可能聽起來很愚蠢,但是可以在64位機器上進行16位模式編程。可用於64位機器的dos可以。 – Shantanu 2014-10-02 04:15:02

+0

是的。所有x86處理器仍然在原始[8086](http://en.wikipedia.org/wiki/Intel_8086)所採用的相同的16位「真實模式」中啓動。 – 2014-10-02 04:52:25

+0

我以前在masm32編輯器中編寫我的asm程序。但是這不能在我的64位m/c中工作。更具體地說,link563.exe沒有安裝。我會在哪裏編寫我的程序?任何好的編輯器 – Shantanu 2014-10-02 14:27:34