我正在尝试通过端口
64h
和60h
. 我已经编写了与Borland Turbo Assembler(TASM)和Linker(TLINK)兼容的汇编代码来做到这一点。我试图从网络上的文章中获取有关连接键盘控制器的足够信息,但不幸的是,到目前为止,在让我的代码获得预期结果方面没有成功。
以下是我已经做过的总结:
- 我通过读取端口读取状态寄存器并最初
64h
获取字节 。(00010100b)
- 在向控制器发送任何命令之前,我已经包含了一个循环来等待IBF标志(状态寄存器的第 1 位)以确保它被清除
(IBF = 0)
。 - 在上述循环之后,我
通过 port 向控制器发送了一个简单的命令,例如
AAh
(Controller Self Test)或ADh
(Disable Keyboard Interface)64h
。 - 在发送命令后包含另一个循环,以确保并确定OBF标志(状态寄存器的位 0)已设置
(OBF = 1)
。
在这个阶段问题就出现了,当我通过读取端口检查状态寄存器64h
时,我看不到控制器没有更新OBF和IBF,因为我认为至少OBF应该是,我从状态寄存器得到
的是字节(00011100b)
表示命令已发送到控制器,因为“位 3”已设置。虽然只是在命令ADh
(禁用键盘界面)我看到我的键盘停止响应。
以及我使用的系统信息:
- 奔腾4,
- 视窗 XP SP3,
- Windows 命令提示符 (cmd),
- Borland Turbo Assembler(TASM) 和 Linker(TLINK) 版本 5,
- 带有 PS/2 连接器的 FCR-8900 键盘,
- 通过 USB-2-PS/2 连接到第二个 PS/2 端口的 USB 鼠标,
PS/2 端口是6 针 DIN,我相信并检查了两次。
尽管有这些 PS/2 端口,我还是使用了来自网络的几个片段,这些片段将我的系统报告为AT 系统,我也无法理解。
我感谢任何分享任何经验或帮助的人。
谢谢...