使用C语言写内核遇键盘屏幕支持难题?这篇教程为你排忧解难!
在我之前的文章中,我介绍了如何构建一个基本的x86内核,该内核可以使用GRUB引导,在保护模式下运行,并在屏幕上打印字符串。
端口的读写操作
read_port:
mov edx, [esp + 4]
in al, dx
ret
write_port:
mov edx, [esp + 4]
mov al, [esp + 4 + 4]
out dx, al
ret
I/O端口是使用x86指令集的一部分——in
和out
指令来访问的。
在read_port
函数中,端口号作为参数传入。当编译器调用你的函数时,它会将所有参数压入堆栈。通过堆栈指针将参数复制到寄存器edx
中。寄存器dx
是edx
的低16位。这里的in
指令读取由dx
指定编号的端口,并将结果存储在al
中。寄存器al
是eax
的低8位。如果你还记得大学课程的内容,函数返回值是通过eax
寄存器接收的。因此,read_port
函数让我们能够读取I/O端口。

扫描二维码关注微信公众号,回复密码,即可获取密码
阅读剩余
版权声明:
作者:讳疾忌医-note
链接:https://www.1217zy.vip/archives/87
文章版权归作者所有,未经允许请勿转载。
THE END