【发布时间】:2012-01-12 12:52:31
【问题描述】:
我是组装世界的新手,
我正在尝试编写一些汇编代码来与串行、并行、VGA、键盘等硬件设备进行通信。
我在 x86 英特尔处理器的实模式下执行此操作,方法是从我个人编写的 boostrap 引导我的代码以加载我的汇编代码。
嗯,根据我从阅读教程中收集到的知识,对我来说最简单的方法是使用 BIOS INT 服务例程 (ISR),另一方面,最长的方法是访问硬件的不同寄存器,例如例如:串口的状态寄存器和控制寄存器......
Q1:我说得对吗?
我可以使用 BIOS INT 与 VGA 和串行硬件通信,但我找不到 USB 控制器的任何 BIOS 中断..?!
Q2:您能帮我解决这个问题,以便能够与 USB 端口和其他剩余端口进行通信,让它通用吗?
第三季度:
【问题讨论】:
-
为什么要在汇编中编码?为什么不在操作系统(即 Linux 的某些程序)之上编写代码?你的目标是什么(学习汇编、编写操作系统)?今天的编译器生成的汇编代码比大多数人编写的要好。
-
这就像一部你看到人类与恐龙作战的电影。时代不合时宜,USB 是在 32 位操作系统普及之后很久才发明的。从来没有对它的 16 位支持,没有意义。
-
OP的问题很严重。我认为诸如“如果已安装某些软件,您为什么不以某种方式执行”之类的答案。作为汇编程序员,您几乎不会假设已经安装了任何软件,即使该软件是 OS 或 BIOS。假设您正在编写一个 BIOS 模块。