Khi*_*ilo 4 assembly interrupt bios
我是大会世界的新手,
我正在尝试编写一些汇编代码来与串行、并行、VGA、键盘等硬件设备进行通信。
我在 x86 英特尔处理器的实模式下执行此操作,通过从我个人编写的用于加载汇编代码的 boostrap 启动我的代码。
好吧,根据我从阅读教程中收集到的知识,对我来说最简单的方法是使用 BIOS INT 服务程序 (ISR),另一方面,最长的方法是访问硬件的不同寄存器,例如:串口状态寄存器和控制寄存器....
Q1:我说的对吗?
我可以使用 BIOS INT 与 VGA 和串行硬件进行通信,但是我找不到 USB 控制器的任何 BIOS 中断......?!
Q2:你能帮我解决这个问题,让我能够与 USB 端口和其他剩余的端口进行通信,只是让它通用吗?
问题 3:
正如 Alex 所说,USB 没有通用的 BIOS 级别支持。但是,已经有人尝试为 USB 设备制作实模式 DOS 驱动程序。我找到了一个包含一些您应该可以使用的源代码的页面:http : //bretjohnson.us/source/source.htm
根据 GEUB 手册 ( http://www.gnu.org/software/grub/manual/html_node/Installing-GRUB-using-grub_002dinstall.html ),无错误的BIOS 会将 USB 公开为硬盘驱动器。因此,您可以像使用普通硬件一样使用硬盘驱动器中断(例如 INT 0x13)来探测和访问 USB。BIOS 对 CDROM 执行相同的操作(请参阅http://wiki.osdev.org/El-Torito无仿真模式)。我认为 BIOS 会为所有支持的引导选项执行此操作,但我还没有找到任何文档来支持此操作。