显示器端口
你需要通过谷歌预先了解的概念:I/O ports
目标:学习如何使用VGA卡数据端口
我们通过I/O寄存器和端口与设备交互
打开drivers/ports.c
测试内联汇编的C代码。它有点不一样,比如源和目标操作数顺序,以及有趣的分配操作数变量
当你理解了概念,打开kernel/kernel.c
作为一个例子使用
在这个例子鸿,我们将测试I/O 端口,这个端口和屏幕光标位置匹配。特别的,我们将查询值为14的端口0x3d4
作为请求光标位置的高字节,值为15的相同端口作为低字节
当这个端口被查询了,将把结果保存到0x3d5
端口
不要错过使用gdb
去监控C变量的机会,因为我们仍然不能在屏幕上打印。为了做到这一点,在一个特定的行设置一个断点, breakpoint kernel.c:21
并使用print
命令打印测试值。现在我们花了一些时间在交叉编译的GDB上,你不高兴吗? ;)
最后,我们使用查询到的光标位置,在那个地方写一个字符