geyu avatar

从头写一个操作系统 06

geyu

Published: 11 Apr 2019 › Updated: 11 Apr 2019从头写一个操作系统 06

从头写一个操作系统 06

目标: 在32位保护模式下,打印文字到屏幕上

32位保护模式允许我们使用32位寄存器、32位寻址能力、内存保护、虚拟内存以及其他先进的功能,但是我们失去了BIOS提供的中断(之前用的0x10,就是其中的一个中断),并且还需要编写GDT(后面会介绍)。

这节课我们要编写一个新的print函数,它负责在32位模式下的打印任务,由于没有了中断可以调用,在32位模式下只能直接操纵显存。显存开始的位置是0xb8000,所幸,显卡文字模式可以避免直接操纵像素的麻烦。

满屏的字符将以80列 x 25行的格式排列,访问指定位置字符的方法是:

0xb8000 + 2 * (row * 80 + col)

每个要被显示字符将占用两个字节(一个字节存储ASCII码,一个字节存储字符的样式)。

打开32bit-print.asm看看,它会在屏幕左上角打印字符串,我们随后将会把它抽象成一个接口。

不过,我们仍然无法从启动区调用这个接口,因为我们还不知道如何编写GDT以及进入保护模式。
所以看懂这段代码后,就可以进入下一章,本节没有实验

Leave 从头写一个操作系统 06 to:

Written by

btc bts

Read more #cn posts


Best Posts From geyu

We have not curated any of geyu's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.

More Posts From geyu