从第5章开始写起,第一部分主要是介绍写基础知识,看书即可,从第5章开始涉及代码编写。
这些文章的主要结构如下:
- 总结书中涉及的知识点。
- 调试和验证书中的代码部分。
1:知识点
1.1 主引导扇区
在电脑已启动就会去读0面0道1扇区,这个扇区就是主引导扇区(main boot sector)。
程序从0X7C00开始,一个扇区是512字节(0X200),所以主引导扇区是从0X7C00--0X7E00。主引导扇区的最后两个字节是0X55,0XAA。BIOS检查该标志,如果有效,则跳转到0X7C00继续执行。后续的操作系统的自举代码由MBR加载到内存之后,跳转到操作系统的入口地址继续执行。
1.2 8086的地址空间
8086总共20根地址线,访问2^20(1M地址),其中:
0x00000----0x9FFFF为常规内存
0XF0000--0xFFFFF(64K)为BIOS所用
0XA000-0XEFFFF(320K)由外围设备提供。
地址0XB8000---0XBFFFF就是留给显示用的,就是我们操作该地址就可以操作显卡,把显卡这段地址表示成段地址:偏移地址的形式,则表示为段地址0XB800,偏移地址是从0x0000----0xFFFF。
用段寄存器ES来定义段的开始,intel规定不允许将一个立即数送到段寄存器,比如:
mov es,0xb800
只允许通用寄存器和内存单元送到段寄存器
mov 段寄存器,通用寄存器
mov 段寄存器,内存单元
1.3 显存的访问
要把一个字符显示在屏幕