主引导记录

合集下载

主引导程序和主引导记录mbr

主引导程序和主引导记录mbr
我知道主引导记录mbr,但主引导程序是怎么回事呢?两者一样吗?
引导文件是不是用来引导启动操作系统的?引导文件是不是就是boot.ini之类的东西呢,一般还包括什么?问得比较杂,也怪我有些概念没搞清楚。大家帮帮忙,帮我把一些基本的概念梳理梳理,谢谢啊。我再出5分。
主引导记录包括硬盘的一系列<<参数>>和一段<<主引导程序>>。主引导主要作用是检查分区表是否正确,并且在系统硬件完成自检以后引导具有激活标志的分区上的操作系统(主引导分区),再将控制权交给启动程序(也就是操作系统引导程序,),启动程序判断本分区跟目录前两个文件是不是操作系统的引导文件(以DOS为丽,既是io.sys和msdos.sys,如果是Windows95,Windows98的DOS,则是io.sys)。如果确定存在,就把它读入内存,并把控制权交给该文件,用于操作系统的启动。如果安装多个操作系统,启动程序位于安装操作系统分区的第一个扇区,而boot.ini文件,通常用来确定计算机在重启(引导)过程中显示的可供选取的操作系统类别,具有指定多操作系统引导扇区位置的作用。
MBR由三部分构成:
1.主引导程序代码,占446字节
2.硬盘分区表DPT,占64字节
3.主引导扇区结束标志AA55H
主引导代码实现下列功能:
1.扫描分区表查找活动分区;
2.寻找活动分区的起始扇区;
3.将活动分区的引导扇区读到内存;
4.执行引导扇区的运行代码。
如果主引导代码未完成这些功能,系统显示下列错误信息:
Invalid partition table
Error loading operating system
Missing operating system

硬盘主引导记录(MBR)及其结构详解

硬盘主引导记录(MBR)及其结构详解

硬盘主引导记录(MBR)及其结构详解硬盘的0柱面、0磁头、1扇区称为主引导扇区,FDISK程序写到该扇区的内容称为主引导记录(MBR)。

该记录占用512个字节,它用语硬盘启动时将系统控制权交给用户指定的,并在分区表中登记了的某个操作系统区。

1.MBR的读取硬盘的引导记录(MBR)是不属于任何一个操作系统,也不能用操作系统提供的磁盘操作命令来读取它。

但我们可以用ROM-BIOS中提供的INT13H的2号功能来读出该扇区的内容,也可用软件工具Norton8.0中的DISKEDIT.EXE来读取。

用INT13H的读磁盘扇区功能的调用参数如下:入口参数:AH=2 (指定功能号)AL=要读取的扇区数DL=磁盘号(0、1-软盘;80、81-硬盘)DH=磁头号CL高2位+CH=柱面号CL低6位=扇区号CS:BX=存放读取数据的内存缓冲地址出口参数:CS:BX=读取数据存放地址错误信息:如果出错CF=1 AH=错误代码用DEBUG读取位于硬盘0柱面、0磁头、1扇区的操作如下:A>DEBUG-A 100XXXX:XXXX MOV AX,0201 (用功能号2读1个扇区)XXXX:XXXX MOV BX,1000 (把读出的数据放入缓冲区的地址为CS:1000)XXXX:XXXX MOV CX,0001 (读0柱面,1扇区)XXXX:XXXX MOV DX,0080 (指定第一物理盘的0磁头)XXXX:XXXX INT 13XXXX:XXXX INT 3XXXX:XXXX (按回车键)-G=100 (执行以上程序段)-D 1000 11FF (显示512字节的MBR 内容)2.MBR 的组成一个扇区的硬盘主引导记录MBR 由如图6-15所示的4个部分组成。

·主引导程序(偏移地址0000H--0088H ),它负责从活动分区中装载,并运行系统引导程序。

·出错信息数据区,偏移地址0089H--00E1H 为出错信息,00E2H--01BDH 全为0字节。

主引导记录MBR的结构和作用

主引导记录MBR的结构和作用

主引导记录MBR的结构和作⽤MBR磁盘分区都有⼀个引导扇区,称为主引导记录,英⽂简称为MBR。

1. MBR的结构MBR扇区位于整个硬盘的第⼀个扇区:按照C/H/S地址描述,即0柱⾯〇磁头1扇区:按照LBA地址描述即0扇区。

它是⼀个特殊⽽重要的扇区。

在总共512字节的MBR扇区中,由四部分结构组成:(1) 引导程序引导程序占⽤其中的前440字节,其地址在偏移1B7H处。

(2) Windows磁盘签名Windows磁盘标签占⽤引导程序后的4字节,其地址在偏移1B8H〜偏移1BBH处,是Windows系统对硬盘初始化时写⼊的⼀个磁盘标签。

(3) 分区表偏移1BEH〜偏移1FDH的64字节为DPT (Disk Partition Table,硬盘分区表),这是MBR中⾮常重要的⼀个结构。

(4) 结束标志扇区最后的两个字节“55 AA”(偏移1FEH〜偏移1FFH)是MBR的结束标志。

⽤WinHex查看⼀块硬盘的MBR扇区,其结构如图所⽰。

2. MBR的作⽤MBR扇区在计算机引导过程中起着举⾜轻重的作⽤。

计算机在按下电源键以后,开始执⾏主板的BIOS程序,进⾏完⼀系列检测和配置以后,开始按CMOS中设定的系统引导顺序进⾏引导。

主板BIOS执⾏完⾃⼰的程序后如何把执⾏权交给硬盘呢?交给硬盘后⼜执⾏存储在哪⾥的程序呢?让我们通过了解MBR的作⽤来解开这些疑问吧。

(1) 引导程序的作⽤—计算机主板的BIOS程序在⾃检通过后,会将MBR扇K整个读取到内存中,然后将执⾏权交给内存中MBR扇区的引导程序。

引导程序⾸先会将⾃⼰整个搬到⼀个较为安全的地址中,⽬的是防⽌⾃⼰被随后读⼊的其他程序覆盖,因为引导程序⼀旦被破坏,就会引起计算机死机,从⽽⽆法正常引导系统。

系统下⼀步就会判断读⼊内存的MBR扇R的最后两个字节是否为“55 AA”,如果不是则报错,在屏幕上会列出错误信息。

如果是“55 AA”,接下来引导程序会到分区表中査找是否有活动分区,若有活动分区,则判断活动分区的引导扇区在磁盘中的地址,并将该引导扇区读⼊内存及判断其合法性,如果是⼀个合法的引导扇区,随后的引导权就交给这个引导扇区去引导操作系统了,MBR引导程序的使命也就完成了。

硬盘主引导记录详解

硬盘主引导记录详解

硬盘的数据结构关于一些朋友来讲老是很神密!什么缘故咱们删除的文件用软件能找到?什么缘故咱们格式化了的硬盘数据还能找回来?要回答这一切,你就得对硬盘的数据结构有个清醒的熟悉。

硬盘上的数据由五大部份组成,它们别离是:MBR区、DBR区,FAT区,DIR区和DATA区。

1.MBR(Main Boot Record)区,即主引导记录区,位于整个硬盘的0磁道0柱面1扇区.2.DBR(Dos Boot Record)区,操作系统引导记录区。

位于硬盘的0磁道1柱面1扇区,是操作系统能够直接访问的第一个扇区.3.FAT(File Allocation Table文件分派表)区;4.DIR(Directory)根目录区,记录着根目录下每一个文件(目录)的起始单元,文件的属性等;5.DATA区是真正意义上的数据存储的地址,位于DIR区以后,占据硬盘上的大部份数据空间。

了解了硬盘数据的大体结构,今天咱们把重点放在mbr所在的扇区:主引导扇区。

主引导扇区包括:mbr,dpt和终止标志。

位于硬盘的0磁道0柱面1扇区,用diskman能够读出其中的内容,下面是一次操作的结果:表一:0 1 2 3 4 5 6 7 8 9 A B C D E F00000000 EB48 90D0 BC00 7CFB 5007 501F FCBE 1B7C00000010 BF1B 0650 57B9 E501 F3A4 CBBE BE07 B10400000020 382C 7C09 7515 83C6 10E2 F5CD 188B 148B00000030 EE83 C610 4974 1638 2C74 F6BE 1007 030200000040 8000 0080 68B6 7600 0008 FAEA 507C 000000000050 31C0 8ED8 8ED0 BC00 20FB A040 7C3C FF7400000060 0288 C252 BE81 7DE8 3F01 F6C2 8074 5FB4 00000070 41BB AA55 CD13 7256 81FB 55AA 7550 A041 00000080 7C84 C075 0583 E101 7444 B448 BE00 7FC7 00000090 0442 00CD 1372 3766 8B4C 10BE 057C C644 000000A0 FF01 668B 1E44 7CC7 0410 00C7 4402 0100 000000B0 6689 5C08 C744 0600 7066 31C0 8944 0466 000000C0 8944 0CB4 42CD 1372 05BB 0070 EB7D B408 000000D0 CD13 730A F6C2 800F 84E8 00E9 8D00 BE05 000000E0 7CC6 44FF 0066 31C0 88F0 4066 8944 0431 000000F0 D288 CAC1 E202 88E8 88F4 4089 4408 31C0 00000100 88D0 C0E8 0266 8904 66A1 447C 6631 D266 00000110 F734 8854 0A66 31D2 66F7 7404 8854 0B89 00000120 440C 3B44 087D 3C8A 540D C0E2 068A 4C0A 00000130 FEC1 08D1 8A6C 0C5A 8A74 0BBB 0070 8EC3 00000140 31DB B801 02CD 1372 2A8C C38E 0648 7C60 00000150 1EB9 0001 8EDB 31F6 31FF FCF3 A51F 61FF 00000160 2642 7CBE 877D E840 00EB 0EBE 8C7D E838 00000170 00EB 06BE 967D E830 00BE 9B7D E82A 00EB 00000180 FE47 5255 4220 0047 656F 6D00 4861 726400000190 2044 6973 6B00 5265 6164 0020 4572 726F000001A0 7200 BB01 00B4 0ECD 10AC 3C00 75F4 C300000001B0 0000 0000 0000 0000 4CA6 4CA6 0000 8001000001C0 0100 0BFE 3FD8 3F00 0000 5A31 3500 0000000001D0 01D9 0FFE FFFF 9931 3500 04FF FB00 0000000001E0 0000 0000 0000 0000 0000 0000 0000 0000000001F0 0000 0000 0000 0000 0000 0000 0000 55AA这块10.2G(以下显示为9766MB,误差缘故不用我说明了吧?)的硬盘共分了四个区:分区结构如下:主引导扇区中前446字节--偏移地址从0000H-01BDH为mbr区,寄存着主引导程序,从上面的显示中,读者可能已经看出,那个硬盘以linux系统的grub为引导程序。

怎样修复受损的硬盘主引导记录和引导区

怎样修复受损的硬盘主引导记录和引导区

怎样修复受损的硬盘主引导记录和引导区怎样修复受损的硬盘主引导记录和引导区当系统管理员无法启动系统时,很自然的,就会认为需要重新安装系统了。

然而,相对来说,启动问题是比较容易修复的。

首先,介绍启动进程是如何工作的。

当一台计算机上电之后,系统BIOS告诉计算机从哪个驱动器启动。

然后,计算机尝试从指定的驱动器读取主引导记录。

接着,储存在主引导记录中的代码从驱动器中搜索活动分区。

一旦活动分区被载入,系统定位到引导区。

然后,系统开始执行引导区所指向的文件。

在基于NT内核的Windows操作系统(Windows NT、2000、XP、Vista和Windows Server 2003)中,引导区引起系统执行NT Loader (Ntldr)文件。

简言之,这就是引导进程。

有两种主要的情况会导致引导进程出现错误:1. 如果主引导记录找不到活动分区,或者系统在活动分区上无法定位引导区,那么引导进程就会慢慢的终止。

显示的确切的错误信息会因系统的不同而不同,但是有代表性的是以下三种:● 无效的分区表● 操作系统登陆错误● 缺少操作系统2. 存在引导区,但是没有Ntldr文件或者Ntldr文件已损坏。

如果是这种情况,确切的问题的症状也会有所不同。

系统可能被锁住,或者可能会显示类似于如下的错误信息:● 没有Ntldr文件● Ntldr文件被压缩● 发生硬盘读取错误有几种情况能引起这个问题。

如果Ntldr文件被删除、移动或重命名,或者Ntldr文件被损坏,或者是引导区本身被损坏(或者感染病毒)而导致无法正确定位引导区,这些都会引起这个问题。

如果你之前安装了基于NT内核的操作系统,之后又安装一个不是基于NT内核的操作系统,也会出现这个问题。

例如,你安装了Windows XP,然后又在同一个系统上安装Windows 98,在这种情况下,Windows 98会覆盖原来的引导区,导致引导区不再指向Ntldr 文件。

引导区问题的修复技术有两种基本的技术可以用来修复这些类型的引导区问题:一是使用恢复控制台,另一个是手动修复硬盘的分区表。

主引导记录

主引导记录

二进制形式的主引导记录:0000:0600 33 C0 8E D0 BC 00 7C FB-50 07 50 1F FC BE 1B 7C 3.....|.P.P....| 0000:0610 BF 1B 06 50 57 B9 E5 01-F3 A4 CB BE BE 07 B1 04 ...PW........... 0000:0620 38 2C 7C 09 75 15 83 C6-10 E2 F5 CD 18 8B 14 8B 8,|.u........... 0000:0630 EE 83 C6 10 49 74 16 38-2C 74 F6 BE 10 07 4E AC ....It.8,t....N. 0000:0640 3C 00 74 FA BB 07 00 B4-0E CD 10 EB F2 89 46 25 <.t...........F% 0000:0650 96 8A 46 04 B4 06 3C 0E-74 11 B4 0B 3C 0C 74 05 ..F...<.t...<.t. 0000:0660 3A C4 75 2B 40 C6 46 25-06 75 24 BB AA 55 50 B4 :.u+@.F%.u$..UP. 0000:0670 41 CD 13 58 72 16 81 FB-55 AA 75 10 F6 C1 01 74 A..Xr...U.u....t 0000:0680 0B 8A E0 88 56 24 C7 06-A1 06 EB 1E 88 66 04 BF ....V$.......f.. 0000:0690 0A 00 B8 01 02 8B DC 33-C9 83 FF 05 7F 03 8B 4E .......3.......N 0000:06A0 25 03 4E 02 CD 13 72 29-BE 2D 07 81 3E FE 7D 55 %.N...r).-..>.}U 0000:06B0 AA 74 5A 83 EF 05 7F DA-85 F6 75 83 BE 1A 07 EB .tZ.......u..... 0000:06C0 8A 98 91 52 99 03 46 08-13 56 0A E8 12 00 5A EB ...R..F..V....Z. 0000:06D0 D5 4F 74 E4 33 C0 CD 13-EB B8 00 00 80 49 12 00 .Ot.3........I.. 0000:06E0 56 33 F6 56 56 52 50 06-53 51 BE 10 00 56 8B F4 V3.VVRP.SQ...V.. 0000:06F0 50 52 B8 00 42 8A 56 24-CD 13 5A 58 8D 64 10 72 PR..B.V$..ZX.d.r 0000:0700 0A 40 75 01 42 80 C7 02-E2 F7 F8 5E C3 EB 74 B7 .@u.B......^..t. 0000:0710 D6 C7 F8 B1 ED CE DE D0-A7 00 BC D3 D4 D8 B2 D9 ................ 0000:0720 D7 F7 CF B5 CD B3 CA B1-B3 F6 B4 ED 00 4D 69 73 . (i)0000:0730 73 69 6E 67 20 6F 70 65-72 61 74 69 6E 67 20 73 sing operating s 0000:0740 79 73 74 65 6D 00 00 00-00 00 00 00 00 00 00 00 ystem........... 0000:0750 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0000:0760 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0000:0770 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0000:0780 00 00 00 8B FC 1E 57 8B-F5 CB 00 00 00 00 00 00 ......W......... 0000:0790 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0000:07A0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0000:07B0 00 00 00 00 00 00 00 00-86 D8 00 00 00 00 80 01 ................ 0000:07C0 01 00 06 3F 3F FD 3F 00-00 00 41 A0 0F 00 00 00 ...??.?...A..... 0000:07D0 01 FE 05 3F FF FE 80 A0-0F 00 C0 4F 2F 00 00 00 ...?.......O/... 0000:07E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0000:07F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 55 AA ..............U.;; 反汇编结果;; 0000:7C00~0000:7C1A:初始化各个段寄存器、堆栈指针,最后将主引导记录在内存中搬家,腾出其所占内; 存空间以供装入分区引导记录。

硬盘主引导记录(MBR)及其故障处理

硬盘主引导记录(MBR)及其故障处理

硬盘主引导记录(MBR)及其结构详解硬盘的0柱面、0磁头、1扇区称为主引导扇区,FDISK程序写到该扇区的内容称为主引导记录(MBR)。

该记录占用512个字节,它用语硬盘启动时将系统控制权交给用户指定的,并在分区表中登记了的某个操作系统区。

1.MBR的读取硬盘的引导记录(MBR)是不属于任何一个操作系统,也不能用操作系统提供的磁盘操作命令来读取它。

但我们可以用ROM-BIOS中提供的INT13H的2号功能来读出该扇区的内容,也可用软件工具Norton8.0中的DISKEDIT.EXE 来读取。

用INT13H的读磁盘扇区功能的调用参数如下:入口参数:AH=2 (指定功能号)AL=要读取的扇区数DL=磁盘号(0、1-软盘;80、81-硬盘)DH=磁头号CL高2位+CH=柱面号CL低6位=扇区号CS:BX=存放读取数据的内存缓冲地址出口参数:CS:BX=读取数据存放地址错误信息:如果出错CF=1 AH=错误代码用DEBUG读取位于硬盘0柱面、0磁头、1扇区的操作如下:A>DEBUG-A 100XXXX:XXXX MOV AX,0201 (用功能号2读1个扇区)XXXX:XXXX MOV BX,1000 (把读出的数据放入缓冲区的地址为CS:1000)XXXX:XXXX MOV CX,0001 (读0柱面,1扇区)XXXX:XXXX MOV DX,0080 (指定第一物理盘的0磁头)XXXX:XXXX INT 13XXXX:XXXX INT 3XXXX:XXXX (按回车键)-G=100 (执行以上程序段)-D 1000 11FF (显示512字节的MBR内容)2.MBR的组成一个扇区的硬盘主引导记录MBR由如图6-15所示的4个部分组成。

·主引导程序(偏移地址0000H--0088H),它负责从活动分区中装载,并运行系统引导程序。

·出错信息数据区,偏移地址0089H--00E1H为出错信息,00E2H--01BDH全为0字节。

mbr分区表格式

mbr分区表格式

mbr分区表格式MBR(Master Boot Record,主引导记录)是一种用于硬盘的分区表格式,它记录了硬盘上所有分区的相关信息。

在本文中,我们将详细介绍MBR分区表格式的结构和作用。

一、MBR分区表概述MBR分区表是一种用于BIOS系统的分区表格式,它位于硬盘的第一个扇区,并占据了硬盘的前512字节。

MBR分区表主要记录了硬盘上的主引导码和分区表项信息。

它最多可以记录4个主分区,或者3个主分区和1个扩展分区。

二、MBR分区表结构MBR分区表的结构如下所示:1. 主引导码(446字节):MBR的前446个字节是主引导码,它包含了一个小程序,能够在系统启动时被BIOS加载并执行,从而引导操作系统的安装和启动。

2. 分区表项(64字节):MBR的接下来的64个字节被分为4个分区表项,每个表项占据16个字节。

每个分区表项记录了一个分区的信息,包括分区的起始扇区、分区的大小和分区的活动状态(即该分区是否可以被引导)。

3. MBR签名(2字节):MBR的最后两个字节用于存储MBR的签名,一般为0x55AA。

当BIOS加载MBR时,会检查签名是否正确,以确定MBR的有效性。

三、MBR分区表的作用MBR分区表的作用主要有以下几个方面:1. 引导操作系统:MBR中的主引导码能够启动操作系统的安装和启动过程。

当计算机开机时,BIOS会加载MBR的主引导码,进而引导操作系统的加载和运行。

2. 确定分区的位置和大小:MBR中的分区表项记录了每个分区的起始扇区和分区大小。

操作系统通过读取MBR分区表,可以了解硬盘上每个分区的位置和大小信息,从而正确访问和管理分区中的数据。

3. 标识活动分区:MBR中的分区表项中的"活动"标志位用于标识哪个分区可以被引导。

当计算机启动时,BIOS会加载活动分区的引导程序,并从该分区中启动操作系统。

四、MBR分区表的局限性尽管MBR分区表在过去几十年间被广泛使用,但它也存在一些局限性:1. 分区数限制:MBR分区表最多支持记录4个主分区,或者3个主分区和1个扩展分区。

主引导记录

主引导记录
编制汇编程序结合FDISK重建硬盘的MBR
用汇编语言编制一个内存驻留程序,其控制中断为INT13H,目的是实现阻止对硬盘格式化和硬盘主引导区以外 的写操作,该方法既可解决不丢失硬盘原数据文件,又可修复MBR。
作用
主引导记录是非常重要的一个扇区,其中引导代码用来告诉计算机如何处理分区表,如何定位操作系统等; 分区表用来管理硬盘的分区情况;标志表明该扇区是一个有效的引导记录扇区。
软件层面上的MBR数据恢复方法
Fdisk/MBR命 令修复MBR
FIXMBR修复 MBR
用Win98的引导盘或DOS引导盘引导系统到纯DOS命令提示符下执行“Fdisk/MBR”命令进行无条件重写,主引 导记录一般都能成功,且保留原有数据。Fdisk命令行格式语法为:“Fdisk/参数开关”,其中/MBR参数功能:重新 建立主磁盘的主引导记录。其它的一些隐藏参数,其功能对于有病毒感染主引导扇区时,用来清除病毒时用。需要 提醒的是,隐藏参数危险系数比较大,使用时需谨慎。
图3
(1)硬盘主引导程序,位于该扇区的0-1BDH处。
(2)硬盘分区表,位于1BEH-1FDH处,每个分区表占用16个字节, 4个分区表 (共64字节), 16个字节各字节意 义如表2。
图4
分区状态标记为活动状态时,表示当前分区可以引导操作系统,而非活动状态表示不能引导操作系统。分区从 起始到结束地址部分均以 (H/S/C)记录分区边界。分区起始逻辑扇区及占用总扇区数均以LBA方式表示分区范 围。
组成
主引导记录由三个部分组成:引导程序占用其中的前446字节(偏移0~1BDH),随后的64字节(偏移1BEH~ 1FDH)为DPT(Disk Partition Table,硬盘分区表),最后的两个字节“55 AA”(偏移1FEH~1FFH)是结束 标志。

bootloader里的分类

bootloader里的分类

bootloader里的分类Bootloader是计算机系统中的一个重要组成部分,它负责在计算机启动时加载操作系统,并为操作系统提供必要的硬件支持和初始化工作。

根据其功能和特点的不同,可以将bootloader分为以下几类:1. 主引导记录(MBR):主引导记录是位于硬盘的第一个扇区的512字节的数据块,也是硬盘分区表的存放位置。

MBR中包含引导程序的代码,它负责加载操作系统的引导扇区并将控制权转交给操作系统。

MBR的大小有限,因此其功能相对简单,只能加载操作系统的引导扇区。

2. 操作系统引导程序:操作系统引导程序位于硬盘分区中的特定扇区,通常是MBR引导扇区之后的第一个扇区。

操作系统引导程序负责加载操作系统的核心代码,完成一些必要的初始化工作,并将控制权转交给操作系统。

不同的操作系统有不同的引导程序,如Windows的NTLDR、GRUB等。

3. UEFI引导管理器:UEFI(统一固件接口)引导管理器是一种新一代的引导方式,取代了传统的BIOS引导方式。

UEFI引导管理器提供了更加灵活和功能丰富的引导方式,支持图形界面、网络引导、多操作系统启动等功能。

UEFI引导管理器通常存储在固件芯片中,由固件直接加载执行。

4. 引导加载程序(Bootloader):引导加载程序是操作系统的第一段代码,负责系统的初始化和加载操作系统的核心模块。

引导加载程序通常存储在硬盘分区中的特定位置,由MBR或操作系统引导程序加载执行。

引导加载程序的功能比较复杂,可以支持多操作系统的启动、引导参数的设置、硬件的初始化等。

5. 嵌入式引导程序:嵌入式引导程序是用于嵌入式系统的特定引导程序,它通常存储在闪存、EEPROM等非易失性存储器中。

嵌入式引导程序的功能和特点根据具体的嵌入式系统而有所不同,可以根据需求进行裁剪和扩展。

6. 网络引导程序(Netboot):网络引导程序是通过网络加载操作系统的引导程序,它可以通过PXE(Preboot Execution Environment)等网络协议实现。

【如何修复硬盘主引导记录】PC电脑问答堂

【如何修复硬盘主引导记录】PC电脑问答堂

【如何修复硬盘主引导记录】PC电脑问答堂由于病毒的破坏或操作上的失误,使硬盘主引导记录和分区表损坏,硬盘将无法启动。

① KV3000作为一款着名的杀毒软件,KV3000同样具有非常强大的主引导记录和分区修复的功能。

我们可以先用软盘启动后,执行KV3000,按下F6键,就可查看已经不能引导的硬盘隐含扇区,即查看硬盘0面0柱1扇区主引导信息是否正常,如果在硬盘的0面0柱1扇区,没有找到关键代码,即硬盘分区表关键代码“80”“55 AA ”,那么硬盘本身将不能引导,即使软盘引导后也不能进入硬盘。

这时,可按动翻页键PgDn或PgUp键,在硬盘的隐含扇区内查找,如有,会在表中出现闪动的红色“80”和“55AA”,并响一声来提示你,下行会出现一行提示,“F9 = Save To Side 0 Cylinder 0 Sector 1 ”。

这时,按一下“F9”键,就可将刚找到的、即在表中显示出的原硬盘主引信息, 覆盖到硬盘0面0柱1扇区中,然后,机器会重新引导硬盘,恢复硬盘的起动性能。

② FDISK用FDISK/MBR覆盖主引导记录的代码区,但不重建主分区表。

适用于主引导记录被引导区型病毒破坏或主引导记录代码丢失,但主分区表并未损坏的情况下。

注意:FDISK/MBR并不适用于清除所有引导型病毒,因此要慎用。

③ FIXMBRFIXMBR是专门用于重新构造主引导扇区的小工具,使用方法也简单。

直接运行FIXMBR的情况下它将检查MBR结构,如果发现系统不正常则会出现是否进行修复的提示。

如果回答“YES”,它将搜索分区。

当搜索到相应的分区以后,系统会提示是否修改MBR,回答“YES”则开始自动修复,如果搜索的结果不对,可使用/Z开关符,重新启动系统将恢复到原来的状态。

如果想详细了解FIXMBR的使用方法,可以用/H开关来查看。

修复硬盘分区表① KV3000在KV3000的主菜单上,按下F10键,就可对系统的有关参数和硬盘分区表快速测试,如果硬盘分区表不正常,KV3000会先将坏分区表保存到软盘上以防不测,再自动重建硬盘分区表,使硬盘起死回生。

剖析主引导记录

剖析主引导记录

剖析主引导记录——主引导记录的修复与应用贾立莎摘要:硬盘的0柱面、0磁头、1扇区为主引导扇区,FDISK程序写到该扇区的内容为主引导记录(MBR),该记录占用446个字节,它用于硬盘启动时将系统控制权转移给用户指定的并在分区表中登记了的某个操作系统区,所以要进行主引导记录的备份,恢复,重写等。

用来修复由于主引导记录而引起的系统故障。

关键词:硬盘主引导修复1.主引导记录概述1.1什么是主引导记录MBR就是我们经常说的<硬盘主引导记录>,简单地说,它是由FDISK等磁盘分区命令写在硬盘绝对0扇区的一段数据,它由主引导程序、硬盘分区表及扇区结束标志字(55AA)这3个部分组成。

1.2主引导记录的组成主引导记录由三个部分组成(共占用512个字节):主引导程序区 446 负责检查硬盘分区表、寻找可引导分区并负责将可引导分区的引导扇区(DBR)装入内存;硬盘分区表区 16*4=64 每份16字节的4份硬盘分区表,里面记载了每个分区的类型、大小和分区开始、结束的位置等重要内容;结束标志字区 2 内容总为”55AA”。

这3部分的大小加起来正好是512字节=1个扇区(硬盘每扇区固定为512个字节),因此,人们又形象地把MBR称为“硬盘主引导扇区”。

这个扇区所在硬盘磁道上的其它扇区一般均空出,且这个扇区所在硬盘磁道是不属于分区范围内的,紧接着它后面的才是分区的内容(也就是说假如该盘每磁道扇区数为63,那么从绝对63扇区开始才是分区的内容)。

1.3写主引导记录程序-F 100 FFFF 0-E 7DBE 80 01 01 00 06 0F 66 F9 26 0000 00 9A B1 04 00-E7DCE 00 00 00 00 00 00 00 00 00 00 0000 00 00 01 00-D 7D80-E 7DFE 55 AA-E 7DB5 8B FC 1E 57 8B F5 CB-A 100-E102 03C:\FDISK/MBR-U 100-A 103Mov CX ,41FA-G=100-D7C00-A 106Mov DX ,0180-G=100-Q1.4主引导记录的作用检测分区表链是否正确,如果正确将引导具有激活标志的分区上的操作系统,也就是DBR。

磁盘主引导记录读写

磁盘主引导记录读写

主引导记录工作原理; 下面是DOS汇编部分;ECHO OFF;GOTO END_BATCH ;下面是一些编译设置,因为要编成COM文件,所以是TINY模式(C语言的微型模式).MODEL tiny.CODE ;CODE(代码)STARTUPCODE ;BIOS引导系统把我从硬盘的主引导分区中搬到了存中,我现在的位置是0000:7C00;STARTUP(起始)我终于可以工作了,让我先设置新的堆栈段,数据段,附加段吧!M_0100:CLI ;禁止INTR中断XOR AX,AX ;SS:SP=0000:7C00,因为0000:7C00是我的家,所以我的堆栈当然要在我前面啦MOV SS,AX ;异或逻辑XOR AX,AX的结果是0000MOV SP,7C00H ;等一会我们就要搬家了,所以先把般家的位置准备好,DS:SI=0000:7C00,ES=0000MOV SI,SP ;PUSH AX ;以下是利用堆栈指令来进行转送数据POP ES ;ES=0000PUSH AXPOP DS ;DS=0000STI ; STI(开放INTR中断)CLD ;CLD(0→DF,DF是方向标志位,串操作的指针移动方向从低到高)MOV DI,0600H ;把新家搬到0000:0600的位置吧,因为0000:7C00这个地方要让给DOS引导程序玩啊;注意:系统引导型病毒也会搬家的哦,不过是搬到9FC0:0这个存最高端的1K;存中的,这样既腾出了空间给DOS,又保护了自已不会发现,当然新家就很安全了哦MOV CX,0100H ;串操作的次数:256,因为是字传送,故可传送512字节。

REPNZMOVSW ;新家搬好了,赶快跳过去吧,是0000:061D这个地方,不要跳错了哦:)DB 0EAH,1DH,6,0,0 ;JMP 0000:061D ;终于跳到新家了,我们又可以继续我们的工作了,不过我现在的位置是在0000:061D处M_011D:MOV SI,0600H+PT-M_0100 ;设好分区表的起始位置,我们要一个一个地检查了啊MOV BL,04 ;我们要读4个分区的信息,所以BL=4,BL是我们的计数器哦,不要数错了M_0122:CMP BYTE PTR [SI],80H ; 80H是活动分区标志,如果我们读到了活动分区标志80H的话,快去M_0135这个地方继续工作吧JZ M_0135 ; JZ:结果为零(ZF=1),则转移。

硬盘主引导记录恢复方法

硬盘主引导记录恢复方法

硬盘主引导记录遭到破坏,使硬盘无法正常工作,这是硬盘最常见的故障之一。

这种情况的出现,主要是由于病毒感染、人为的错误操作或系统突然掉电等意外情况引起的。

目前,硬盘已经成为微机系统最重要的硬件资源。

如果硬盘主引导记录遭到破坏,会给用户带来极其严重的损失。

因此,研究一种为用户所接受的,能迅速、安全、有效地重建硬盘主引导记录的方法是十分必要的。

一、主引导记录的结构和功能1.主引导记录的结构MS-DOS操作系统,其硬盘主引导记录是由在给硬盘分区时创建的。

一个完整的硬盘主引导记录共有512个字节,在硬盘中占一个扇区,该扇区位于硬盘的0面0道1扇区。

该记录分为主引导程序区、硬盘分区表和硬盘赋权标识三个部分。

前1BDH字节为主引导程序区。

现在的主引导程序一般占用DAH左右字节,后面为零字节。

这主要是兼顾到其它操作系统、多个操作系统共存以及为将来扩展留有余地。

从1BEH~1FDH为硬盘分区表,可建四个分区表,每个表16个字节,记载每个分区的信息,最后两个字节存放硬盘赋权标志-AA55H。

2.分区表的结构分区表的组成见分区表的内存布局及填写示例。

除相对扇区和实用扇区占4个字节外,其余均为1个字节。

自举标志和系统标志是记录分区性质的参数。

当某一分区被指定为激活分区时,该处标志为80H,而其它分区的该标志为00H。

四个分区表内只能有一个80H标志。

系统标志说明该分区操作系统的类型。

不同系统有不同的代码,DOS系统标志说明有四个,三个是分区代码(01H,04H,06H代表不同DOS版本),一个是扩展分区代码(05H)。

@@07A08300.GIF;附表分区表的内存布局及填写示例@@3.主引导记录的功能主引导记录主要提供硬盘赋权标识、硬盘分区信息、系统主引导程序三种功能。

用硬盘启动系统时,主引导记录的三种功能全部提供,而用软盘启动时,仅提供前两种功能。

二、重建主引导记录的原理和方法1.目前重建主引导记录的方法及其缺点目前使用较广泛的重建主引导记录的方法有以下几种。

MBR主引导记录的介绍

MBR主引导记录的介绍

MBR主引导记录的介绍MBR叫做主引导记录,计算机在加电后会首先访问它,它被存放在存储设备的第一个扇区中,一般会占用512字节,分为:代码区、磁盘标志、保留字、MBR分区表、MBR有效标志字等字段信息。

代码区:主引导记录最开头是第一阶段引导代码。

其中的硬盘引导程序的主要作用是检查分区表是否正确并且在系统硬件完成自检以后将控制权交给硬盘上的引导程序(如GRUB、NTLDR、BOOTMGR)。

它不依赖任何操作系统,而且启动代码也是可以改变的,从而能够实现多系统引导。

分区表:硬盘分区表占据主引导扇区的64个字节(偏移01BEH--偏移01FDH),可以对四个分区的信息进行描述,其中每个分区的信息占据16个字节。

MBR有效标志:55AAH(偏移1FEH-偏移1FFH)最后两个字节,是检验主引导记录是否有效的标志。

计算机引导的顺序如下:1.电脑开机后,BIOS进行自检,BIOS执行内存地址为FFFF:0000H处的跳转指令,跳转到固化在ROM中的自检程序处,对系统硬件(包括内存)进行检查。

2.读取主引导记录(MBR)。

当BIOS检查到硬件正常并与CMOS中的设置相符后,按照CMOS中对启动设备的设置顺序检测可用的启动设备。

BIOS将相应启动设备的第一个扇区(也就是MBR扇区)读入内存地址为0000:7C00H处。

3.检查启动设备的0000:7CFEH-0000:7CFFH(MBR的结束标志位)是否等于55AAH,若不等于则转去尝试其他启动设备,如果没有启动设备满足要求则显示'NO ROM BASIC'然后死机。

4.当检测到有启动设备满足要求后,BIOS将控制权交给相应启动设备。

启动设备的MBR将自己复制到0000:0600H处,然后继续执行。

5.根据MBR中的引导代码启动引导程序。

从主引导记录的结构可以知道,它仅仅包含一个64个字节的硬盘分区表。

由于每个分区信息需要16个字节,所以对于采用MBR型分区结构的硬盘,最多只能识别4个主要分区(Primary partition)。

什么是主引导记录、分区引导记录、主引导引程序、分区表、结束语、引导文件

什么是主引导记录、分区引导记录、主引导引程序、分区表、结束语、引导文件

3、分区表上有四项,每一项表示一个分区,所以一个分区表最多只能表示4个分区。主分 区表上的4项用来表示主分区和扩展分区的信息。因为扩展分区最多只能有一个,所以硬盘 最多可以有四个主分区或者三个主分区,一个扩展分区。余下的分区表是表示逻辑分区的。 这里有必要阐述一点:逻辑区都是位于扩展分区里面的,并且逻辑分区的个数没有限制。
二.查找D盘分区表 根据上面的信息,第二个分区表,也即D盘分区表在(510柱面,0磁头,1扇区)处。读取该扇区,得到分区表如下:
[00 01 41 FE 0b FE FF 7b 3F 00 00 00 bF A3 5D 00 ] [00 00 C1 7C 05 FE FF FF FE A3 5D 00 21 88 56 00 ] [00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ] [00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ] 第一项: (00)(01 41 FE)(0b)(FE FF 7b)(3F 00 00 00 )(bF A3 5D 00) 描述的是D盘的情况。 1.(00):表示D盘不是活动分区。 2.(01 41 FE): (01) 16 = (1) 10 (41) 16 = (0100 0001) 2 (FE) 16 = (1111 1110) 2. 磁头号:(1) 10; 扇区号:(00 0001) 2 = (1) 10. 柱面号:(01 1111 1110) 2 = (510) 10; 故D盘开始扇区为(510柱面,1磁头,1扇区)。 3.(0b):表示D盘的文件系统为FAT32。 4.(FE FF 7b): (FE) 16 = (254) 10 。 (FF) 16 = (1111 1111) 2 (7b) 16 = (0111 1011) 2. 磁头号:(254) 10; 扇区号:(11 1111) 2 = (63) 10. 柱面号:(11 0111 1011) 2 = (891) 10 故D盘结束扇区为(891柱面,254磁头,63扇区)。 5.(3F 00 00 00): 反向,(00 00 00 3F)16 = (63)10,为D盘起始逻辑扇区号(510柱面,1磁头,1扇区)与扩展分区起始逻辑扇区号 (510柱面,0磁头,1扇区)之差。表示D盘前面已有63个扇区,这63个扇区为系统隐藏扇区。 6. (bF A3 5D 00): 反向,(00 5D A3 bF) 16 = (6136767) 10。表明D盘有6136767个扇区。 通过上面得到的起点和分区的大小,可以推导出D盘的结束位置:8193150 + 63 + 6136767 = 14329980号扇区。 即(891柱面,254磁头,63扇区)。与上面的正好吻合。 第二项: (00)(00 C1 7C)(05)(FE FF FF)(FE A3 5D 00)(21 88 56 00) 描述的是E盘的情况。 1. (00): 表示E盘不是活动分区。 2. (00 C1 7C): (00) 16 = (0) 10 (C1) 16 = (1100 0001) 2 (7C) 16 = (0111 1100) 2 磁头号:(0) 10 扇区号:(00 0001) 2 = (1) 10 柱面号:(11 0111 1100) 2 = (892) 10 所以E盘的起始扇区为(892柱面,0磁头,1扇区)。 3. (05): 表示E盘的在扩展分区里面。 4.(FE FF FF): (FE) 16 = (254) 10 (FF) 16 = (1111 1111) 2 (FF) 16 = (1111 1111) 2 磁头号:(254) 10 扇区号:(11 1111) 2 = (63) 10 柱面号:(11 1111 1111) 2 = (1023) 10 但这是不准确的,原因同上。 5.(FE A3 5D 00): 反向,(00 5D A3 FE) 16 = (6136830) 10. 这一项非常重要,它定位了E盘分区表所在扇区。其值为E盘分区表所在扇区号 与扩展分区起始扇区号之差。所以,E盘分区表所在扇区号为: 8193150 + 6136830 = 14329980。即(892柱面,0磁头,1扇区)。 6.(21 88 56 00): 反向,(00 56 88 21) 16 = (5670945) 10.表示E盘共有11807775个扇区。通过上面得到的起点和分区的大小,可以推导出E 盘的结束位置:14329980 + 5670945 = 20000925号扇区,即(1244 柱面,254磁头,63扇区)。

主引导记录(MBR)的反汇编分析

主引导记录(MBR)的反汇编分析

主引导记录(MBR)的反汇编分析1.)首先启动机器到实模DOS下,加载NTFS4DOS程序使程序可以读NTFS分区。

2.)转到引导系统启动的主分区。

输入C:回车转到主分区,输入DEBUG启动到DEBUG界面3.)开始备份MBR主引导记录,-a 100 ;指定开始汇编的位置mov ax,0201 ;AH=功能号0=复位磁盘2=读磁盘3=写磁盘AL=读取的扇区mov bx,7c00 ;bx=读入的内存地址mov cx,0001 ;ch=磁道号cl=扇区号mov dx,0080 ;dh=磁头号dl=驱动器号80h:硬盘Cint 13 调用BIOS中断int 3 异常中断-g =100 ;运行地址100处的程序-d 7c00 l100 ;L加载文件到内存,D转储100个字节长度n MBR.DA T ;指定写入文件的名称-rbx ;显示BX寄存器的内容:0 改变BX寄存器的值为零-rcx ;显示CX寄存器的内容:200 改变CX寄存器的值为200-W 7c00 ;将BX和CX指定的字节数的内容写入文件保存MBR备份到C盘根目录4.)先用Q退出DEBUG再重新进入下5.)加载备份文件到内存6.)开始用自己写的编码代替从7C00开始27个字节的编码Mov ax,cs ;代码段地址送AXMov sp,7c00 ;7C00送堆栈寄存器Sti ;开中断Jmp 7c0c ;跳转到7C0C-T =100 ;从地址100处单步跟踪单步跟踪输入T回车一直跟到跳转到7C0C处CLD ;DF方向标志置零DF=0串操作指令中操作数地址自动递增MOV SI,7C1B ;7C1B地址送SI源变址寄存器MOV DI,061B ;061B地址送DI目的变址寄存器PUSH AX ;AX里保存着CS代码段的地址PUSH DI ;将DI=061B压栈位将来弹出到IP做准备MOV CX,01E5 ;循环传送的字节数REPZMOVSB ;循环把7C1B地址01E5字节的数据复制到061B地址单步跟踪到REPZ MOVSB 后面是一个循环指令用T 1E5执行过去继续T一下看下现在各个寄存器里的值RETF会从堆栈里弹出SP到IP 弹出SP+2到CS这样代码会转到061B地址执行来到了061B地址,先看下反汇编代码MOV SI,07BE ;600h+1BEh,分区表起始偏移为1BEh ;7BE-61B=1A3==419 ,这是说从7C00偏移27字节的地址加上419字节正好是446字节偏移MOV CL,04 ;分区表中有4个分区表项CMP [SI],CH ; 从SI地址取分区起始标志80和CH比较JL 062D ;是活动分区吗?(此时ch中的值为0) JL被减数小于减数则转移;条件成立则转移到062DJNZ 063B ;不等于零则跳到063BADD SI,10 ;SI加16个字节到下个分区表的地址LOOP 0620 ;循环到CMP [SI],CH 继续比较INT 18 没有发现活动分区,无法启动OS,BIOS的Int 18h中断服务程序ROM-Basic 现在的BIOS一般是打印错误信息MOV DX[SI] ;取SI地址值; DX=0180 80是主分区标志MOV BP,SI ;把07BE保存到BPADD SI,+10 ;;SI=07CE || 07BE加了16个字节到下个表头DEC CX ;4个分区表项次数JZ 7C4D ;;4个分区活动标志都检测后跳出去来到064D这里,反汇编下机器码MOV [BP+25],AX ;AX值保存到07BE+37字节处XCHG SI,AX ;SI值和AX=0ED9交换MOV AL,[BP+04] ;07BE +4个字节是文件系统标志MOV AH,06 ;06传送到AHCMP AL,0E ;判断是不是FA T16文件系统JZ 066BMOV AH,0BCMP AL,0C ;判断是不是FA T32文件系统JZ 0665 ;因为是FA T32文件系统跳转成立跳转到0665先汇编下机器码MOV BYTE PTR [BP+25],06JNZ 068F ;MOV BX,55AA ;55AA送BX寄存器PUSH AX ;保护寄存器内容MOV AH,41 ;功能号41HINT 13 ;这个是int 13 扩展功能检测POP AX ;保护寄存器内容JB 068C ; CF=1时是错误AH 里包含错误号CMP BX,AA55 ;比较BX是否是AA55JNZ 068C ;不等于零跳向错误TEST CL,01 ;测试API子集错误跳向068CJZ 068C 跳向错误MOV AL,AHMOV [BP+24],DL查看下寄存器内容现在使用命令g = 0671 0673 不跟入中断执行完INT13后寄存器的变化如图:BX 的内容反转了变成了AA55。

主引导记录分区方案

主引导记录分区方案

以我给的标题写文档,最低1503字,要求以Markdown 文本格式输出,不要带图片,标题为:主引导记录分区方案# 主引导记录分区方案## 引言在计算机系统中,主引导记录(Master Boot Record, MBR)是位于硬盘的第一个扇区的特殊区域。

主引导记录包含引导程序代码和分区表,用于引导操作系统并确定硬盘上的分区情况。

本文将介绍主引导记录分区方案以及相关的概念和流程。

## MBR 分区方案MBR 分区方案是一种被广泛使用的硬盘分区方案。

它使用 32 位表示分区表中的每个分区。

MBR 分区方案允许将硬盘划分为最多四个主分区或者三个主分区和一个扩展分区。

每个主分区或扩展分区可以包含一个逻辑分区。

## 分区表主引导记录包含了一个 64 字节的分区表。

分区表将硬盘上的空间划分为若干个分区,每个分区由起始扇区号、长度和标识符组成。

### 分区类型分区标识符指定了分区类型。

常见的分区类型包括:- 0x00:未使用分区,这个分区没有被分配给任何文件系统。

- 0x01:FAT12 文件系统分区,用于存储小容量的文件系统。

- 0x04:FAT16 文件系统分区,用于存储中等容量的文件系统。

- 0x05:扩展分区,用于创建逻辑分区。

- 0x06:FAT16 文件系统分区。

- 0x07:NTFS 文件系统分区,用于存储较大容量的文件系统。

### 分区表项MBR 分区表可以容纳最多四个分区表项,每个分区表项占据 16 个字节。

每个分区表项包含以下信息:1. 引导标志位:指示该分区是否是启动分区。

2. 起始磁头号、扇区号和柱面号:指示分区的起始位置。

3. 分区类型:指示分区的文件系统类型。

4. 结束磁头号、扇区号和柱面号:指示分区的结束位置。

5. 逻辑起始扇区号:用于逻辑分区。

## 主引导记录主引导记录是位于 MBR 的第一个扇区,它的大小为 512 字节。

主引导记录包含两个主要部分:1. 引导代码:由机器语言编写的引导程序代码,负责加载并运行操作系统。

MBR(主引导记录)

MBR(主引导记录)

MBR(Master Boot Record),中文意为主引导记录。

硬盘的0磁道的第一个扇区称为MBR,它的大小是512字节,而这个区域可以分为两个部分。

第一部分为pre-boot区(预启动区),占446字节;第二部分是Partition table区(分区表),占66个字节,该区相当于一个小程序,作用是判断哪个分区被标记为活动分区,然后去读取那个分区的启动区,并运行该区中的代码。

他是不属于任何一个操作系统,也不能用操作系统提供的磁盘操作命令来读取它。

但我们可以用ROM-BIOS中提供的INT13H的2号功能来读出该扇区的内容,也可用软件工具Norton8.0中的DISKEDIT.EXE来读取。

用INT13H的读磁盘扇区功能的调用参数如下:入口参数:AH=2 (指定功能号)AL=要读取的扇区数DL=磁盘号(0、1-软盘;80、81-硬盘)DH=磁头号CL高2位+CH=柱面号CL低6位=扇区号CS:BX=存放读取数据的内存缓冲地址出口参数:CS:BX=读取数据存放地址错误信息:如果出错CF=1 AH=错误代码用DEBUG读取位于硬盘0柱面、0磁头、1扇区的操作如下:A>DEBUG-A 100XXXX:XXXX MOV AX,0201 (用功能号2读1个扇区)XXXX:XXXX MOV BX,1000 (把读出的数据放入缓冲区的地址为CS:1000)XXXX:XXXX MOV CX,0001 (读0柱面,1扇区)XXXX:XXXX MOV DX,0080 (指定第一物理盘的0磁头)XXXX:XXXX INT 13XXXX:XXXX INT 3XXXX:XXXX (按回车键)-G=100 (执行以上程序段)-D 1000 11FF (显示512字节的MBR内容)mbr MBR组成一个扇区的硬盘主引导记录MBR由如图6-15所示的4个部分组成。

·主引导程序(偏移地址0000H--0088H),它负责从活动分区中装载,并运行系统引导程序。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
; 这里还有个小BUG,前面放行原则是只要状态字节大于等于80h,那么如果这个字节是诸如A0h、E5h之类数值
; 呢?嘿嘿,这个引导记录统统认为是有效的可引导分区了!
0000:062D 8B14 MOV DX,[SI] ;为读分区引导记录做准备:磁头号→DH,驱动器号→DL
0000:062F 8BEE MOV BP,SI ;SI→BP,保存可引导分区表项的指针
0000:07E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0000:07F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 55 AA ..............U.
;
; 0000:063B~0000:064B:执行错误处理——报告错误信息后当机
0000:063B BE1007 MOV SI,0710 ;错误信息字符串偏移+1→SI
0000:063E 4E DEC SI SI-1→SI
0000:063F AC LODSB SI+1→SI
0000:0640 3C00 CMP AL,00 ;
0000:07A0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0000:07B0 00 00 00 00 00 00 00 00-86 D8 00 00 00 00 80 01 ................
;
0000:0631 83C610 ADD SI,+10 其余的分区表项还要检查检查的
0000:0634 49 DEC CX
0000:0635 7416 JZ 064D CX=0则检查顺利通过,转继续
0000:0637 382C CMP [SI],CH ;
0000:0639 74F6 JZ 0631 为零,是合法表项,再查下一表项
;
; 反汇编结果
;
; 0000:7C00~0000:7C1A:初始化各个段寄存器、堆栈指针,最后将主引导记录在内存中搬家,腾出其所占内
; 存空间以供装入分区引导记录。
0000:7C00 33C0 XOR AX,AX ;AX寄存器清0
0000:7C02 8ED0 MOV SS,AX ;SS=0
0000:0720 D7 F7 CF B5 CD B3 CA B1-B3 F6 B4 ED 00 4D 69 73 .............Mis
0000:0730 73 69 6E 67 20 6F 70 65-72 61 74 69 6E 67 20 73 sing operating s
0000:06E0 56 33 F6 56 56 52 50 06-53 51 BE 10 00 56 8B F4 V3.VVRP.SQ...V..
0000:06F0 50 52 B8 00 42 8A 56 24-CD 13 5A 58 8D 64 10 72 PR..B.V$..ZX.d.r
0000:06A0 25 03 4E 02 CD 13 72 29-BE 2D 07 81 3E FE 7D 55 %.N...r).-..>.}U
0000:06B0 AA 74 5A 83 EF 05 7F DA-85 F6 75 83 BE 1A 07 EB .tZ.......u.....
使用长度最短的指令将[BP+25]起始的两个单元清零
这两个单元将被用来存放中间变量
0000:0650 96 XCHG SI,AX ;此时SI清零的最佳指令选择(仅1字节),将服务于0000:06B8
0000:0651 8A4604 MOV AL,[BP+04] 取分区类型(本例是“06”喽——FAT16主DOS分区)
0000:7C1A CB RETF ;跳转到0000:061B(这是一种技巧跳转)
;
; 为直观起见,下面的地址按实际运行时的地址给出。
; 0000:061B~0000:062B:对分区表进行初步检验,一旦检测到某分区表项状态字节大于等于80h,就通过(当
; 然,在此之前如果检测到某项分区表的状态字节小于80h,就转错误处理。当然,如果四个分区项的状态字节
0000:0740 79 73 74 65 6D 00 00 00-00 00 00 00 00 00 00 00 ystem...........
0000:0750 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0000:0760 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0000:0770 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0000:0660 3A C4 75 2B 40 C6 46 25-06 75 24 BB AA 55 50 B4 :.u+@.F%.u$..UP.
0000:0670 41 CD 13 58 72 16 81 FB-55 AA 75 10 F6 C1 01 74 A..Xr...U.u....t
0000:0654 B406 MOV AH,06 ;为扩展INT 13h无法使用做好更改分区类型的准备
0000:0656 3C0E CMP AL,0E ;0Eh:需要用扩展INT 13h访问的FAT16主DOS分区
0000:0658 7411 JZ 066B 0Eh类型的分区转066Bh
0000:065A B40B MOV AH,0B ;
0000:0640 3C 00 74 FA BB 07 00 B4-0E CD 10 EB F2 89 46 25 <.t...........F%
0000:0650 96 8A 46 04 B4 06 3C 0E-74 11 B4 0B 3C 0C 74 05 ..F...<.t...<.t.
0000:0620 38 2C 7C 09 75 15 83 C6-10 E2 F5 CD 18 8B 14 8B 8,|.u...........
0000:0630 EE 83 C6 10 49 74 16 38-2C 74 F6 BE 10 07 4E AC ....It.8,t....N.
0000:065C 3C0C CMP AL,0C ;0Ch:需要用扩展INT 13h访问的FAT32分区
0000:065E 7405 JZ 0665 0Ch类型的分区转0665h先行预处理
0000:0660 3AC4 CMP AL,AH ;0Bh:用传统INT 13h就可以访问的FAT32分区
0000:7C0A 50 PUSH AX
0000:7C0B 1F POP DS 装填数据段寄存器DS=0
0000:7C0C FC CLD 规定其后的串操作为正向串操作
0000:7C0D BE1B7C MOV SI,7C1B ;源指针
0000:7C10 BF1B06 MOV DI,061B ;目的指针
0000:7C13 50 PUSH AX
0000:7C14 57 PUSH DI 看看0000:7C1A——构造一个跳转
0000:7C15 B9E501 MOV CX,01E5 ;
0000:7C18 F3 REPZ ;
0000:7C19 A4 MOVSB 0000:7C1B起始的CX字节传送至0000:061B起始的区域
0000:0600 33 C0 8E D0 BC 00 7C FB-50 07 50 1F FC BE 1B 7C 3.....|.P.P....|
0000:0610 BF 1B 06 50 57 B9 E5 01-F3 A4 CB BE BE 07 B1 04 ...PW...........
0000:064B EBF2 JMP 063F 显示下一个字符,直到遇到提示信息结束为止
;
; 0000:064D~0000:0662:判断可引导分区的分区类型,然后转相应处理程序。
0000:064D 894625 MOV [BP+25],AX BP=指向第一个可引导分区表项的指针,这时AX=0000h
0000:0780 00 00 00 8B FC 1E 57 8B-F5 CB 00 00 00 00 00 00 ......W.........
0000:0790 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0000:7C04 BC007C MOV SP,7C00 ;装填栈指针——SS:SP=0000:7C00
0000:7C07 FB STI 开中断(装填栈指针时为避免硬件中断引起栈混乱应关中断)
0000:7C08 50 PUSH AX
0000:7C09 07 POP ES 装填附加数据段寄存器ES=0
0000:0680 0B 8A E0 88 56 24 C7 06-A1 06 EB 1E 88 66 04 BF ....V$.......f..
0000:0690 0A 00 B8 01 02 8B DC 33-C9 83 FF 05 7F 03 8B 4E .......3.......N
0000:0642 74FA JZ 063E AL=0则表明一条错误信息显示完毕,系统陷入一个死循环
7 ;字符方式显示
0000:0647 B40E MOV AH,0E ;
相关文档
最新文档