现在的位置: 首页 > 技术文章 > 正文

磁盘引导程序原理及简介

2013年12月08日 技术文章 ⁄ 共 894字 ⁄ 字号 磁盘引导程序原理及简介已关闭评论 ⁄ 阅读 2,132 次
引导程序

引导程序

一、介绍

  • 系统开机或者重启
  1. BIOS 加电自检 ( Power On Self Test -- POST )。BIOS执行内存地址为 FFFF:0000H 处的跳转指令,跳转到固化在ROM中的自检程序处,对系统硬件(包括内存)进行检查。
  2. 读取主引导记录(MBR)。当BIOS检查到硬件正常并与 CMOS 中的设置相符后,按照 CMOS 中对启动设备的设置顺序检测可用的启动设备。BIOS将相应启动设备的第一个扇区(也就是MBR扇区)读入内存地址为0000:7C00H 处。
  3. 检查0000:7DFEH-0000:7DFFH(MBR的结束标志位)是否等于55AAH,若不等于则转去尝试其他启动设备,如果没有启动设备满足要求则显示"NO ROM BASIC"然后死机。
  4. 当检测到有启动设备满足要求后,BIOS将控制权交给相应启动设备。启动设备的MBR将自己复制到0000:0600H处, 然后继续执行。
  5. 根据MBR中的引导代码启动引导程序。

二、几个问题

  • 为什么需要磁盘引导程序


为什么需要磁盘引导程序而不是直接载入操作系统?或许是因为历史原因,BIOS最初是为最原始的8位PC所创,8位的PC磁盘很小,所以BIOS只能先载入磁盘引导程序然后通过磁盘引导程序导入操作系统。

  • 磁盘引导程序为什么要从1扇区,0磁头,0磁道加载到7c00H处


“引导程序加载器--int19”。由于BIOS加载磁盘引导程序时需要调用系统中断int19来加载引导程序,而这个中断指定了将磁盘1扇区,0磁头,0磁道加载到7c00H处。

  • 磁盘引导程序为什么最大只能是512字节


“A bootstrap must be exactly512 bytes long because of the two byte check and the one sector limitation.”
“一个引导程序必须为512字节,因为他的大小有一个扇区的限制,最后两个字节需要设置为'0xAA55'。”

  • 磁盘引导程序为什么是16位


因为DOS系统是16位,X86系统都向后兼容引导时的16位模式。

×