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和进入保护模式。一旦我们理解了代码,直接跳到下一节