引导扇区原理分析与编码实践.docxVIP

  • 59
  • 0
  • 约 22页
  • 2017-02-01 发布于重庆
  • 举报
引导扇区原理分析与编码实践

引导扇区原理分析与编码实践学院:信息工程学院专业:计算机应用技术学号: 姓名:目录一.引言1二.关键技术分析12.1软盘启动步骤12.2本文中引导扇区的功能22.3引导扇区数据组织方式分析22.3.1 FAT表格式分析42.3.2 根目录区存储格式分析4三.引导程序设计53.1程序设计总体流程53.2 程序编码与分析7四.程序运行结果17引言现代PC机的启动过程一般遵循着一定的顺序。在机器加电启动后,BIOS首先进行加电自检,其主要工作包括:CPU、内存及硬盘等关键设备的检测,即插即用设备的检测等。此后,计算机会将磁盘0柱面0磁头1扇区中的512B的内容读入内存0000:7C00地址处,然后跳转到该地址处进行程序的执行,而这一扇区中的512字节内容我们称之为引导扇区,可见,引导扇区虽小,但在系统启动过程中却有着不可替代的作用。本文主要基于软盘介质进行操作系统引导扇区工作原理及其简单实现方法的研究,并基于理论进行实际的引导扇区代码编写,最后在Bochs虚拟机中进行代码调试。关键技术分析2.1软盘启动步骤软盘的启动步骤主要有以下几步:机器上电。BIOS加电自检。BIOS在内存中的起始地址为0FFFF:0000,BIOS的加电自检就是从地址0FFFF:0000开始执行。BIOS加电自检的主要工作是检测系统运行的关键硬件设备是否工作正常,并且会依据检测结果更新ESCD(扩展系统配置数据)。计算机将A盘0磁道0磁头1扇区的内容读入内存0000:7C00处并跳转到该内存地址处进行执行。在读取过程中,计算机并不检查该扇区的内容是什么。检查0000:7DFE是否等于0xAA55,若不等于则转去尝试其他启动设备,如果没有其他启动设备则显示“No ROM BASIC”然后死机。跳转到0000:7C00处执行MBR中的程序。启动系统。2.2本文中引导扇区的功能引导扇区只有512字节的空间,所以其执行的代码功能有限,操作系统要启动一定需要其他的诸如内核代码的程序装入内存并且执行才能够进行下去。而引导扇区启动以后其控制权就在引导扇区中,由此不难推测引导扇区必须从磁盘中读出这些程序并且放入正确的内存位置,然后跳转到这些后继执行的程序中继续运行才能够保证系统的正常启动。基于以上分析,本文实现的引导程序会从软盘中读取指定名字的loader可执行文件,然后跳转到loader文件的入口地址处执行。其loader可执行程序可以是任一可正确执行的com文件。2.3引导扇区数据组织方式分析引导扇区是整个软盘的第0个扇区,在这个扇区中有一个很重要的数据结构叫做BPB(BIOS Parameter Block),引导扇区的格式如表(1)所示。表(1) FAT12引导扇区格式名称偏移长度内容本文设定值BS_jmpBoot03一个短跳转指令Jmp LABEL_STARTnopBS_OEMName38厂商名AngelBPB_BytsPerSec112每扇区字节数0x200BPB_SecPerClus131每簇扇区数0x1BPB_RsvdSecCnt142Boot记录占用多少扇区0x1BPB_NumFATs161共有多少FAT表0x2BPB_RootEntCnt172根目录文件最大值0xE0BPB_TotSec16192扇区总数0xB40BPB_Media211介质描述符0xF0BPB_FATSz16222每FAT扇区数0x9BPB_SecPerTrk242每磁道扇区数0x12BPB_NumHeads262磁头数0x2BPB_HiddSec284隐藏扇区数0BPB_TotSec32324如果BPB_TotSec16是0,这个值记录扇区数0BS_DrvNum361中断13的驱动器号0BS_Reserved1371未使用0BS_BootSig381扩展引导标记(29h)0x29BS_VolID394卷序列号0BS_VolLab4311卷标Angel OSBS_FileSysType548文件系统类型FAT12引导代码及其他62448引导代码,数据及其他填充字符等代码结束标志51020xAA550xAA55紧接着引导扇区的是两个完全相同的FAT表,每个表占用9个扇区。第二个FAT表之后是根目录区的第一个扇区。根目录区的后面是数据区,如图(1)所示。数据区根目录区FAT2FAT1引导扇区图(1) 软盘结构2.3.1 FAT表格式分析软盘中的每一个扇区容量为512字节,对于小于512字节的文件来说,FAT表的用处并不大,但如果文件大于512字节,我们需要使用FAT表来找到所有的簇(扇区)。FAT表有两个,FAT2可以看做是FAT1的备份,他们通常是一样的。在FAT表中,每12位称为一个FAT项,代表一个簇。第0个和第1个FAT项始终不使用,从第2个FAT项开始表示数据区的每一个簇,也就是说

文档评论(0)

1亿VIP精品文档

相关文档