中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-25 07:22
中国DOS联盟论坛 » DOS疑难解答 & 问题讨论 (解答室) » Re: MS-DOS引导程序剖析 精华I 查看 6,276 回复 5
楼 主 Re: MS-DOS引导程序剖析 发表于 2003-06-01 00:00 ·  中国 江西 吉安 电信
版主
★★★★
积分 7,296
发帖 1,628
注册 2002-10-16 12:00
23年会员
UID 10
性别 男
状态 离线
发信人: jan1 (精灵), 信区: DOS
标 题: Re: MS-DOS引导程序剖析
发信站: BBS 水木清华站 (Thu Sep 11 19:48:24 1997)

【 在 cq (七支居士) 的大作中提到: 】
: 哪位行家顺手post上来, 不胜感激. 我看过的书上没有说明过.
以下为一个硬盘的分区结构,分为一个pri和一个ext, ext中包含一个logical

C:\>debug
-a100
1876:0100 mov ax,201
1876:0103 mov bx,7c00
1876:0106 mov cx,1 ; col 0, sector 1
1876:0109 mov dx,81 ; Second hard disk, head 0
1876:010C int 13
1876:010E int 3
1876:010F
-g=100

AX=0050 BX=7C00 CX=0001 DX=0081 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1876 ES=1876 SS=1876 CS=1876 IP=010E NV UP EI PL NZ NA PO NC
1876:010E CC INT 3
-d7d80
1876:7D80 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
1876:7D90 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
1876:7DA0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
1876:7DB0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 01 ................
^^ dh for pri-partition
1876:7DC0 01 00 06 3F 60 F3 20 00-00 00 E0 9F 0F 00 00 00 ...?`. .........
^^^^^cx for pri-partition ^^ dh for ext-partition
1876:7DD0 41 F4 05 3F E0 F1 00 A0-0F 00 00 F0 0F 00 00 00 A..?............
^^^^^cx for ext-partition
1876:7DE0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
1876:7DF0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 55 AA ..............U.
-a106
1876:0106 mov cx,f441 ;
1876:0109
-g=100 ; reading col:sec f441, head 0, this is ext-partition

AX=0050 BX=7C00 CX=F441 DX=0081 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1876 ES=1876 SS=1876 CS=1876 IP=010E NV UP EI PL NZ NA PO NC
1876:010E CC INT 3
-d7d80
1876:7D80 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
1876:7D90 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
1876:7DA0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
1876:7DB0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 01 ................
^^ dh for logical driver
1876:7DC0 41 F4 06 3F E0 F1 20 00-00 00 E0 EF 0F 00 00 00 A..?.. .........
^^^^^cx for logical driver
1876:7DD0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
1876:7DE0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
1876:7DF0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 55 AA ..............U.


--
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·

(本文采用S-Term文章拷贝脚本拷贝)
==================================================
[已使用 Gemini 解答]
Gemini 解答

该帖展示了如何通过 DEBUG 工具调用 BIOS 中断 INT 13h 读取硬盘主引导记录(MBR)及扩展分区表,以手动解析分区结构。以下是针对该技术内容的解读:

1. 技术原理:MBR 与分区表结构

帖子通过 INT 13h, AH=02h(读取扇区)直接读取硬盘的第 0 柱面、0 磁头、1 扇区(即 MBR)。MBR 的最后 64 字节(偏移 01BEh01FDh)为分区表,每个分区项占 16 字节。

  • 分区表项格式
    • 偏移 01BEh 开始的 4 个项分别对应四个主分区。
    • 帖子中 7DC0h 处读取的数据 01 00 06 3F 60 F3 20 00 00 00 E0 9F 0F 00,解析如下:
      • 06:分区类型(FAT16)。
      • 3F 60 F3:起始扇区(CHS 格式)。
      • 20 00 00 00:起始逻辑扇区号(LBA 格式,小端序)。
      • E0 9F 0F 00:分区总扇区数。

2. 扩展分区(Extended Partition)的链式结构

帖子演示了如何通过 MBR 中的扩展分区项找到第一个扩展分区的起始位置,并读取该位置的扇区。

  • 链式逻辑:扩展分区表并非简单的数组,而是一个链表。每个扩展分区扇区(EBR)包含两个分区项:
    1. 当前逻辑驱动器的分区信息。
    2. 下一个扩展分区扇区的指针(如果存在)。
  • 代码解读:作者通过 mov cx, f441 修改读取位置,实际上是在跳转到扩展分区表的起始扇区。这种手动遍历是理解 DOS/Windows 早期磁盘管理机制(如 fdisk 如何识别逻辑盘符)的核心。

3. 关键技术细节与局限性

  • INT 13h 的限制:该代码使用传统的 CHS(柱面-磁头-扇区)寻址方式。在 1997 年的技术背景下,这适用于小容量硬盘。对于超过 8GB 的硬盘,CHS 寻址会溢出,必须使用 INT 13h, AH=42h(扩展读功能)配合 LBA 寻址。
  • DEBUG 环境DEBUG 是 DOS 下的实模式调试器,直接操作物理内存和硬件中断。在现代 64 位 Windows 环境下,由于保护模式和权限隔离,直接调用 INT 13h 读取物理磁盘已被操作系统禁止,该方法仅在纯 DOS 环境下有效。
  • 字节序:帖子中提到的 CX 寄存器值(如 F441)在 DEBUG 显示中是按小端序(Little-Endian)处理的,这是 x86 架构的特性,在解析磁盘数据结构时必须时刻注意。

4. 历史背景补充

在 90 年代末,文档获取渠道有限,通过 DEBUG 直接查看磁盘扇区是系统工程师和底层开发者的“基本功”。这种方法虽然原始,但对于排查分区表损坏、引导记录丢失(如 Invalid partition table 错误)具有极高的诊断价值。

结论:该帖提供的是一种手动解析磁盘分区表的教学演示,准确反映了 MBR 和 EBR 的物理布局。但在现代大容量硬盘和 UEFI 引导环境下,该方法已失效,现代分区管理应参考 GPT(GUID Partition Table)规范及 UEFI 引导流程。

本帖最近评分记录 (共 2 条) 点击查看详情
评分人分数时间
zhouhuang +1 2008-07-14 01:25
zzz19760225 +2 2017-10-17 16:03
ko20010214
=================================
大功告成,打个Kiss!
ko20010214@MSN.com
神州优雅Q300C
Intel CeleronM 370处理器 | 256MbDDR内存
40G硬盘 | USB2.0 | IEEE 1394
13.3 ' WXGA 宽屏(16:10) | COMBO光驱
10/100M网卡 | 四合一读卡器
2 发表于 2017-09-21 02:39 ·  中国 海南 海口 电信
超级版主
★★★★
积分 3,673
发帖 2,020
注册 2016-02-01 00:00
10年会员
UID 181465
性别 男
状态 离线
不明觉厉
1<词>,2,3/段\,4{节},5(章)。
3 发表于 2022-10-21 20:57 ·  中国 湖南 常德 电信
初级用户
积分 51
发帖 26
注册 2022-04-17 09:34
4年会员
UID 184621
性别 男
状态 离线
大侠厉害啊,拜倒臣服
4 发表于 2023-07-23 11:29 ·  中国 浙江 台州 移动
初级用户
★★
我是新人
积分 152
发帖 70
注册 2023-07-21 19:34
2年会员
UID 185044
性别 男
来自 浙江省台州市
状态 离线
结果在哪?
5 双系统Dos和Ⅹp同一个硬怎样做什么 发表于 2024-01-01 07:36 ·  中国 广西 电信
初级用户
积分 27
发帖 14
注册 2023-12-31 12:54
2年会员
UID 185519
性别 男
状态 离线
纯Dos和Ⅹp系统共存,不知道怎么安装进入双系统引导界面
6 发表于 2024-02-01 16:21 ·  中国 广东 东莞 联通
初级用户
积分 27
发帖 14
注册 2023-12-31 12:54
2年会员
UID 185519
性别 男
状态 离线
111111111111111111111
论坛跳转: