发信人: twotiger()
整理人: sle(2000-04-08 08:37:31), 站内信件
|
这是我读书时的作业,我看这里很多人都在研究这些东西,就拿出来献丑了
所用微机硬盘主引导记录(Dos 6.22)
(一) 读出硬盘主引导记录
-a
2476:0100 B80102 MOV AX,0201
2476:0103 BB0002 MOV BX,0200
2476:0106 B90100 MOV CX,0001
2476:0109 BA8000 MOV DX,0080
2476:010C CD13 INT 13
2476:010E CD20 INT 20
-g
Program terminated normally
//*************************
(二) 硬盘主引导记录注释清单
-u es:0200 0289
2476:0200 FA CLI ;中断屏蔽
2476:0201 33C0 XOR AX,AX
2476:0203 8ED0 MOV SS,AX ;SS = 0
2476:0205 BC007C MOV SP,7C00 ;设置堆栈指针 ss:sp = 0:7c00
2476:0208 8BF4 MOV SI,SP
2476:020A 50 PUSH AX
2476:020B 07 POP ES ;ES = 0
2476:020C 50 PUSH AX
2476:020D 1F POP DS ;DS = 0
2476:020E FB STI ;开中断
2476:020F FC CLD ;正方向传递
2476:0210 BF0006 MOV DI,0600 ;将主引导区记录从
2476:0213 B90001 MOV CX,0100 ;0:7c00-7dffH 搬至
2476:0216 F2 REPNZ ;0:0600-07ffH
2476:0217 A5 MOVSW
2476:0218 EA1D060000 JMP 0000:061D ;从061d继续执行
2476:021D BEBE07 MOV SI,07BE ;第一个分区表指针-->SI
2476:0220 B304 MOV BL,04
2476:0222 803C80 CMP BYTE PTR [SI],80
2476:0225 740E JZ 0235 ;是主引导分区
2476:0227 803C00 CMP BYTE PTR [SI],00
2476:022A 751C JNZ 0248 ;是否错误自举标志
2476:022C 83C610 ADD SI,+10 ;不是,检查下一个分区
2476:022F FECB DEC BL
2476:0231 75EF JNZ 0222
2476:0233 CD18 INT 18 ;没有可自举分区,引导Rom Bas ic
2476:0235 8B14 MOV DX,[SI] ;DH = 磁头号 DL = 驱动号
2476:0237 8B4C02 MOV CX,[SI+02] ;CX = 柱号,首扇区号
2476:023A 8BEE MOV BP,SI
2476:023C 83C610 ADD SI,+10
2476:023F FECB DEC BL
2476:0241 741A JZ 025D
2476:0243 803C00 CMP BYTE PTR [SI],00
2476:0246 74F4 JZ 023C ;是否错误自举标志
2476:0248 BE8B06 MOV SI,068B ;"Invalia partition Table" -->
2476:024B AC LODSB ; 错误信息输出子程序
2476:024C 3C00 CMP AL,00 ; if end of display ,jmp 025b
2476:024E 740B JZ 025B ;
2476:0250 56 PUSH SI ;
2476:0251 BB0700 MOV BX,0007 ;
2476:0254 B40E MOV AH,0E ;
2476:0256 CD10 INT 10 ;
2476:0258 5E POP SI ;
2476:0259 EBF0 JMP 024B ;
2476:025B EBFE JMP 025B ;死循环
2476:025D BF0500 MOV DI,0005 ;试读5次
2476:0260 BB007C MOV BX,7C00
2476:0263 B80102 MOV AX,0201
2476:0266 57 PUSH DI
2476:0267 CD13 INT 13 ;读出活动分BOOT程序
2476:0269 5F POP DI ;到0:7c00处
2476:026A 730C JNB 0278 ;如正确,转 0278
2476:026C 33C0 XOR AX,AX
2476:026E CD13 INT 13 ;失败,硬盘复位
2476:0270 4F DEC DI
2476:0271 75ED JNZ 0260 ;未够5次,再试
2476:0273 BEA306 MOV SI,06A3 ; "Error loading
2476:0276 EBD3 JMP 024B ;operating system" -->SI
2476:0278 BEC206 MOV SI,06C2
2476:027B BFFE7D MOV DI,7DFE
2476:027E 813D55AA CMP WORD PTR [DI],AA55 ;引导模块最后字是否为AA 55H
2476:0282 75C7 JNZ 024B ; "Missing operating
2476:0284 8BF5 MOV SI,BP ; system" -->SI
2476:0286 EA007C0000 JMP 0000:7C00 ;转执行BOOT程序
//*************************
(三) 硬盘主引导记录数据区
-d es:028a 03ff
2476:0280 49 6E 76 61 6C U.u.....| ..Inval
2476:0290 69 64 20 70 61 72 74 69-74 69 6F 6E 20 74 61 62 id partit ion tab
2476:02A0 6C 65 00 45 72 72 6F 72-20 6C 6F 61 64 69 6E 67 le.Error loading
2476:02B0 20 6F 70 65 72 61 74 69-6E 67 20 73 79 73 74 65 operatin g syste
2476:02C0 6D 00 4D 69 73 73 69 6E-67 20 6F 70 65 72 61 74 m.Missing operat
2476:02D0 69 6E 67 20 73 79 73 74-65 6D 00 00 80 47 20 10 ing syste m...G .
2476:02E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ......... .......
2476:02F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ......... .......
2476:0300 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ......... .......
2476:0310 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ......... .......
2476:0320 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ......... .......
2476:0330 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ......... .......
2476:0340 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ......... .......
2476:0350 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ......... .......
2476:0360 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ......... .......
2476:0370 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ......... .......
2476:0380 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ......... .......
2476:0390 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ......... .......
2476:03A0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ......... .......
2476:03B0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 ......... ..
硬盘分区表
2476:03be 80 01 ..
2476:03C0 01 00 06 0F 7F 30 3F 00-00 00 B1 B0 04 00 00 00 .....0?.. .......
2476:03D0 41 31 05 0F FF 38 F0 B0-04 00 80 FF 07 00 00 00 A1...8... .......
2476:03E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ......... .......
2476:03F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 55 AA ......... .....U.
硬盘分区表
偏移量 用途 标志 头 扇 柱
1BE 分区1开始 80 01 01 00
1C2 分区1结束 06 0F 7F 30
1C6 分区1相对扇区数 3F 00 00 00
1CA 分区1扇区数 B1 B0 04 00
1CE 分区2开始 00 00 41 31
1D2 分区2结束 05 0F FF 38
1D6 分区2相对扇区数 F0 B0 04 00
1DA 分区2扇区数 80 FF 07 00
1FE 主引导记录有效标志 55 AA
-q
//********************
(四) 回答问题
Page 76 Execise 3
(1) 该硬盘划分成几个分区,那个分区为自举分区?
答:该硬盘划分成 2 个分区,第一个分区为自举分区
(2) 该分区从属于那个操作系统,其FAT格式如何?
答:该分区从属于MsDos操作系统,其FAT格式为 32位的DOS
(3) 指出该分区首.末扇区所在的头.柱.扇区号.
答: 首扇区 Head = 01 h
Cylimder = 0 h
Sector = 1 h
末扇区 Head = 0f h
Cylimder = 130 h
Sector = 3f h
(4) 指出该分区的扇区总数(十进制).
答:该分区的扇区总数 = 4b0b1 h = 307377 D
(5) 指出该硬盘的容量.
答:第一分区的扇区总数 = 4b0b1 h = 307377 D
第二分区的扇区总数 = 7ff80 h = 524160 D
隐含的扇区总数
= 3f h = 63 D (此值由BOOT引导扇区的BPB表偏移1ch所得)
所以,硬盘容量 = 831600 D 个扇区,
即 415800 K Bytes
即 406.0546875 M Bytes
00/04/024:59 PM
-- ※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.103.135.144]
|
|