现在的位置: 首页 > 综合 > 正文

操作系统1——引导扇区的理解

2014年02月18日 ⁄ 综合 ⁄ 共 1185字 ⁄ 字号 评论关闭

在操作系统这个方面,我记得自己经常听到主引导记录这个名词,但是对于它的理解并不深,只知道它在系统加载的时候很重要。现在我想自己写一个操作系统,但是想到第一步该怎么做呢?书上说是用汇编写引导程序。那么这个引导程序是什么呢?它正是我们经常所说的主引导记录,或者说,它存储在引导扇区上,即我们所说的boot sector。

我们知道,当计算机电源被打开的时候,他会先进行加电自检,然后寻找启动盘,如果计算机选择从软盘启动,计算机就会检查软盘的0面0磁道1扇区,如果发现它是以0xaa55结束的话,那么BIOS就认为它是一个引导扇区,当然引导扇区的结构我们会在下面介绍。一旦BIOS发现了引导扇区,那么它就会将这512字节的内容,装载到内存的0000:7c00处,然后跳转到该位置处将控制权彻底交给这段引导代码。到此为止,计算机不再由BIOS中固有的程序来控制,转而由操作系统的一部分来控制。

那么主引导记录的定义是什么呢?

主引导记录(MBR,Master Boot Record)是位于磁盘最前边的一段引导(Loader)代码。它负责磁盘操作系统(DOS)对磁盘进行读写时分区合法性的判别、分区引导信息的定位,它由磁盘操作系统(DOS)在对硬盘进行初始化时产生的。


主引导扇区由三个部分组成(共占用512个字节):

  1.主引导程序即主引导记录(MBR)(占446个字节)

  可在FDISK程序中找到,它用于硬盘启动时将系统控制转给用户指定的并在分区表中登记了的某个操作系统。

  2.磁盘分区表项(DPT,Disk Partition Table)

  由四个分区表项构成(每个16个字节)。

  负责说明磁盘上的分区情况,其内容由磁盘介质及用户在使用FDISK定义分区时决定。(具体内容略)

  3.结束标志(占2个字节)

  其值为AA55,存储时低位在前,高位在后,即看上去是55AA(十六进制)。

其中四个分区表项的结构是:

第1个字节表示:是否是系统分区

第234字节表示:该分区的开始磁头,扇区以及柱面

第5字节表示:分区类型

第678字节表示:分区结束的开始磁头,扇区以及柱面

后面的8个字节,前四个用来表示:该分区之前的所有分区的所有扇区数

后四个字节用来表示:该分区的扇区总数


下面贴一段引导程序:

%define _BOOT_DEBUG_
%ifdef _BOOT_DEBUG_
org 0100h
%else
org 07c00h
%endif
;org 07c00h
mov ax, cs
mov ds, ax
mov es, ax
call DispStr
jmp $
DispStr:
mov ax, BootMessage
mov bp, ax
mov cx, 16
mov ax, 01301h
mov bx, 000ch
mov dl, 0
int 10h
ret
BootMessage: db "Hello,OS World!"
times 510-($-$$) db 0

dw 0xaa55

抱歉!评论已关闭.