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

操作系统1——引导扇区的理解相关推荐

  1. 操作系统编写之引导扇区

    操作系统编写之引导扇区 你可能还没有从刚刚的兴奋中走出来,可是我不得不告诉你,实际上,你刚刚所完成的并不是一个完整的操作系统,而仅仅是一个最最简单的引导扇区(Boot Sector).然而不管我们完成 ...

  2. 30天自制操作系统 - 取代软盘,用U盘写入引导扇区

    背景 作者是在2006年发布此书的(翻译版是在2012年在中国发售),当时可能还能找到带有软驱的计算机.但是时过境迁,现在已经不存在这种老古董东西了. 简单总结一下学习到第三天的一些更变. 更变 书籍 ...

  3. 【OS学习笔记】六 实模式:编写主引导扇区代码

    上一篇文章学习了:计算机的启动过程(点击链接查看上一篇文章) 这篇文章学习记录为:编写主引导扇区代码. 参考:<X86汇编语言-从实模式到保护模式>-李忠.纯学习笔记,更详细内容请阅读正版 ...

  4. 操作系统多重引导规范:Multiboot Specification 0.6.93(中文版)

    Multiboot规范 本文定义了Multiboot规范--提议中的引导过程标准.本文是此规范的0.6.93版. 1. Multiboot规范简介本章描述了一些关于Multiboot规范的粗略的信息. ...

  5. syslinux引导扇区不支持ntfs文件系统_实战 FAT12 文件系统

    1. 引言 经过一系列的文章,我们终于完成了从实地址模式跳转到保护模式,并且实现了分段.分页以及保护模式下的中断与异常机制. 保护模式究竟"保护"了什么 可是我们除了最初的时候,在 ...

  6. 第五章 编写主引导扇区代码

    本章的思路是,在本机上上写一段代码(这些代码的意义是往显存中写一些数据)-->编译成bin文件-->写入到vhd硬盘的引导扇区(即第一扇区,见第四章详述)-->开机从硬盘启动,从而执 ...

  7. 【OS学习笔记】八 实模式:编写主引导扇区代码-另一种更高效的写法

    学习交流加 个人qq: 1126137994 个人微信: liu1126137994 学习交流资源分享qq群: 962535112 上一篇文章,我们用比较原始的方法编写了主引导扇区的代码.点击链接查看 ...

  8. 主引导扇区及主引导记录MBR的详细说明

    引导扇区在每个分区里都存在,但是我们常说的*主引导扇区*是硬盘的 第一物理扇区.它由两个部分组成:即主引导记录MBR和硬盘分区表DPT.在 总共512字节的主引导分区里其中MBR占446个字节(偏移0 ...

  9. 主引导扇区(MBR),分区表(DPT)及活动分区(DBR)

    主引导扇区:硬盘的0柱面.0磁头.1扇区(也叫主引导记录MBR),大小为512Byte. 分区表(DPT):位于主引导分区,从偏移01BEH开始到偏移01FDH结束的64字节. 活动分区DBR:DBR ...

最新文章

  1. [elixir! #0007] [译] 理解Elixir中的宏——part.5 重塑AST by Saša Jurić
  2. Linq 等式运算符:SequenceEqual
  3. OLEDB访问CSV、txt
  4. 【Java】5.3 成员变量和局部变量
  5. Flutter混合开发:Android中如何启动Flutter
  6. vue 限制输入字符长度
  7. pc端jquery左右按钮控制带缩略图的图片切换代码_Web开发实用的图片预览插件,简单零依赖——PhotoSwipe...
  8. python变量的输入
  9. jQuery 入门教程(5): 显示/隐藏内容
  10. 保险条款精解(三) 撞车
  11. 硬件平台选型(1)---SDM 660 VS SDM670
  12. [笔试面试题] 9-数据结构与算法篇
  13. 问题三十七:C++怎么解一元四次方程?(2)——怎么解一元三次方程
  14. 《Core Data应用开发实践指南》一导读
  15. 吴江智慧城市产业化“航母”起航
  16. 数字与静态(HeadfirstJava随笔)(转)
  17. C语言程序设计第五版谭浩强课后答案 第四章习题答案
  18. 截至20161212中国公司在美上市名单
  19. 烽火2640路由器命令行手册-14-桥接配置命令
  20. 携程Android App插件化和动态加载实践

热门文章

  1. 正点原子STM32F103ZET6程序移植到STM32F103C8T6时Delay函数异常问题
  2. windows driver - DeviceIoControl 用法
  3. python如何计算三体运行问题
  4. strcat strcpy的实现
  5. 利用K-Means聚类进行航空公司客户价值分析
  6. 医疗信息系统等保定级备案教程
  7. 替代VS Code的产品Eclipse Theia诞生了
  8. 网络安全(千峰教育)
  9. :last-of-type | CSS属性参考
  10. 6、(六)外汇学习基础篇之货币掉期交易