加电引导

2019-04-13 16:22发布

上电后CPU置位  CS:IP 被设置成0xF000:0xFFF0  即第一条指令位于物理地址0xFFFF0 处。 而出现了80386后拥有了段描述符高速缓冲寄存器,它的内容硬编为0xFFFF0000,并且段限长初始化为0xFFFF(64KB),这时第一条指令指向物理地址0xFFFFFFF0处,即BIOS程序入口。 BIOS ROM只读存储器连接在总线上,当地址总线出现属于它的地址范围的信号时,它在数据总线上输出它的内容。即BIOS映射到某一内存范围。   BIOS 的工作负责板上的硬件检查和初始化例如显卡,键盘,IDE控制器等,并且把这些硬件的功能设置到中断向量表以便外部程序使用它们。 最后它的0x19号中断从启动设备第0个扇区读取512字节内容到物理内存地址0x7C000。 这512字节内容即引导扇区,它以最后的第511和第512字节字节内容分别为0x55和0xAA视为合法。 然后cpu指向0x7c00处的指令,我们第一行代码就要从0x7c00那里编写。   对于80386及其后的BIOS 它还会把一些重要的与以前的BIOS ROM兼容的东西(如冷启动代码本身)拷贝到640k~1M的传统BIOS地址空间。