OS专题-开始编写32位打印函数
OS专题-开始编写32位打印函数
弄了这么长时间的16位实模式,现在我们要开始使用32位模式了,它们的主要差别在于32位模式允许我们使用32位寄存器和内存寻址、受保护的内存、虚拟内存和其他优势,但是我们会丢失 BIOS 提供的中断向量表,并且我们需要编写GDT。
全局描述表(GDT Global Descriptor Table):在保护模式下一个重要的数据结构。
现在我们开始操作VGA显存,因为之前的ISR已经不能使用,我们只能从显存入手,VGA显存的地址是从0xb8000
开始的,它也存在一种文本模式,这样我们就可以避免直接像素了。访问$80 * 25$网格上的字符的工时如下:
$$
address = 0xb8000 + 2 * (row * 80 + col)
$$
每个字符占两个字节(一个是ASCII码值,一个是颜色配置),我们来写一下对应的打印函数,在lib
文件夹中新建32_print.asm
,代码如下:
现在先理解就好,因为我们还没有编写GDT并真正进入保护模式,所以暂时无法运行查看效果。
OS专题-开始编写32位打印函数
https://blog.cikaros.top/doc/44b6e221.html