实模式下内存1MB布局
地址0 ~ 0x9FFFF是DRAM区域
地址0xF0000 ~ 0xFFFFF对应BIOS
地址0xA0000 ~ 0xC7FFF 对应显卡
其中0xB8000 ~ 0xBFFFF对应文本模式适配器,将内容输出到此内存区域,显卡会自动读入字符内容,并将其显示到显示适配器界面,呈现出画面
文本模式下,默认一屏为80*25, 即一行80个字符, 共25行,一个字符由两个字节组成,低端1字节存放字符本身内容,由ASCII码表示,高端1字节表示字符的显示方式
高端1字节从高到低为:KRGB, IRGB
K控制字符是否闪烁, 后面的RGB表示字符的背景色
I控制字体亮度, 后面的RGB表示字体颜色
计算机启动时,强制将cs : ip的值转换为BIOS的入口地址, 即0xffff0
此时cs为0xf000, ip为0xfff0
计算机内存只有1MB, 而BIOS入口地址为0xffff0, 所以留下的空间只有16字节,在这16字节的空间大小内,不可能完成BIOS需要进行的工作**(检查硬件, 基本输入输出,建立中断向量表,最后还要将执行权交给MBR, 也就是跳转到MBR地址)**,所以这里存放的是一条指令(数据更加不可能),jmp far f000: e05b, 这里才是BIOS的真正代码段
BIOS的最后一项任务,是检查0磁头0磁道1扇区的内容是否为MBR
那么BIOS怎样确定是不是MBR呢, 一个扇区大小为512字节,BIOS通过检查最后两字节(即第510,511字节)是否为魔数0x55, 0xaa来确定, 一旦确定, 就把该扇区的代码加载到内存0x7C00处,将执行权交给MBR