Java中的中断服务例程

Java中的中断服务例程,java,eclipse,assembly,Java,Eclipse,Assembly,这个问题听起来可能有点奇怪。我想完全控制我的键盘。在汇编语言中,可以通过更改键盘端口中运行的ISR地址来实现。在Java中可能吗?我如何才能找到我的键盘端口号,以及如何将键盘端口中的请求重定向到我的ISR?绝对没有办法满足您的要求。 虽然用Java编写ISR非常困难,但问题与编程语言的选择无关。相反,它与用户模式/内核模式权限分离有关 在现代操作系统上,中断服务例程完全在内核中处理,内核受到硬件的保护,不受用户空间(读作:“您”)的影响。要在引导到Windows时在此级别与硬件交互,需要编写内核

这个问题听起来可能有点奇怪。我想完全控制我的键盘。在汇编语言中,可以通过更改键盘端口中运行的ISR地址来实现。在Java中可能吗?我如何才能找到我的键盘端口号,以及如何将键盘端口中的请求重定向到我的ISR?

绝对没有办法满足您的要求。

虽然用Java编写ISR非常困难,但问题与编程语言的选择无关。相反,它与用户模式/内核模式权限分离有关

在现代操作系统上,中断服务例程完全在内核中处理,内核受到硬件的保护,不受用户空间(读作:“您”)的影响。要在引导到Windows时在此级别与硬件交互,需要编写内核模式设备驱动程序。对于Windows想要独占控制的键盘这样的硬件来说,这可能还不够

如果您想在这一级别上使用硬件,最好将系统(或虚拟机)实际引导到DOS(不是DOSBox,不是命令提示符,而是实际的DOS),然后刷新16位实模式英特尔汇编,以及


如果您试图编写键盘记录程序,或者在键盘与正在运行的应用程序的交互方面搞砸了,您可以研究一下。

DOS是最后一个常用的操作系统,用户代码可以链接ISR并接触x86 i/o端口。你是在DOS上运行Eclipse吗?不是。我是在64位平台上使用Windows7,你说的是哪个文件?你不能在Java中这样做。除非您编写特殊的设备驱动程序,否则Windows不会让您靠近键盘端口。我可能听起来很愚蠢,但在64位机器上可以进行16位模式编程。64位机器是否可以使用dos是的。所有x86处理器仍以与原始版本相同的16位“实模式”开机。我以前在masm32编辑器中编写asm程序。但这在我的64位m/c中不起作用。更具体地说,没有安装link563.exe。我在哪里写程序?有好的编辑器吗