1

我正在尝试通过端口 64h60h. 我已经编写了与Borland Turbo Assembler(TASM)Linker(TLINK)兼容的汇编代码来做到这一点。我试图从网络上的文章中获取有关连接键盘控制器的足够信息,但不幸的是,到目前为止,在让我的代码获得预期结果方面没有成功。

以下是我已经做过的总结:

  1. 我通过读取端口读取状态寄存器并最初64h获取字节 。(00010100b)
  2. 在向控制器发送任何命令之前,我已经包含了一个循环来等待IBF标志(状态寄存器的第 1 位)以确保它被清除 (IBF = 0)
  3. 在上述循环之后,我 通过 port 向控制器发送了一个简单的命令,例如AAh(Controller Self Test)ADh(Disable Keyboard Interface)64h
  4. 在发送命令后包含另一个循环,以确保并确定OBF标志(状态寄存器的位 0)已设置(OBF = 1)

在这个阶段问题就出现了,当我通过读取端口检查状态寄存器64h时,我看不到控制器没有更新OBFIBF,因为我认为至少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 系统,我也无法理解。

我感谢任何分享任何经验或帮助的人。
谢谢...

4

0 回答 0