bookstack

32位输出

你需要通过谷歌预先了解的概念:32-bit protected mod, VGA, video memory

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

32位模式允许我们使用32位寄存器和内存地址,保护内存,虚拟化内存等其他好处。但是我们将关闭BIOS中断,并且需要编码GDT(后面会讲到)

这节内容,我们将在32位模式下写一个新的字符串打印程序,我们将不使用BIOS中断,不是使用int 0x10, 而是直接处理VGA视频内存.VGA内存起始地址为0xb8000 ,有文本模式,这点非常有利于避免处理直接像素

在80x25的表格里获取特定字符的公式为:

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

每个字符占用两个字节(一个用于ASCII,一个用于颜色等),我们可以看到内存结构是根据行级联的

打开`32bit-print.asm` 阅读代码。总会在屏幕最上方打印字符串,但是我们将写一个高级的程序来代替它

不幸的是,我们想在还不能从引导扇区调用这个程序,因为我们仍然不知道怎么写GDT和进入保护模式。一旦我们理解了代码,直接跳到下一节