扇區(qū)=128*(2的N次方) 磁道=柱面 容量=磁頭×磁道×每道扇區(qū)×每扇區(qū)字節(jié) 簇是DOS最小單位,,,。當(dāng)創(chuàng)建一個(gè)很小的文件時(shí),如是一個(gè)字節(jié),,則它在磁盤上并不是只占一個(gè)字節(jié)的空間,,而是占有整個(gè)一簇。DOS視不同的存儲(chǔ)介質(zhì)(如軟盤,,硬盤),,不同容量的硬盤,簇的大小也不一樣,。簇的大小可在稱為磁盤參數(shù)塊(BPB)中獲取,。簇的概念僅適用于數(shù)據(jù)區(qū)。簇是DOS進(jìn)行分配的最小單位,,不同的存儲(chǔ)介質(zhì),,不同容量的硬盤,不同的DOS版本,,簇的大小也不一樣,。 物理扇區(qū)編號(hào)(柱面/磁頭/扇區(qū),起始柱面0,,起始磁頭0,,起始扇區(qū)1,bios內(nèi)置中斷程序) 絕對(duì)扇區(qū)編號(hào)(數(shù)字,,起始扇區(qū)為0,,普通人的編法) DOS扇區(qū)編號(hào)(數(shù)字,起始扇區(qū)為0,,操作系統(tǒng)采用) 邏輯扇區(qū)(同上) 絕對(duì)扇區(qū)以及相對(duì)扇區(qū)又叫DOS扇區(qū)只是一個(gè)數(shù)字 使用相對(duì)扇區(qū)編號(hào)時(shí),,DOS是從柱面0磁頭1扇區(qū)1開始,柱面0磁頭0扇區(qū)1-柱面0磁頭0扇區(qū)17(設(shè)每磁道17個(gè)扇區(qū))沒(méi)有相對(duì)扇區(qū)又叫DOS扇區(qū)編號(hào),,只能調(diào)用BIOS訪問(wèn),。 第一個(gè)DOS扇區(qū)編號(hào)為0,該磁道上剩余的扇區(qū)編號(hào)為1到16(設(shè)每磁道17個(gè)扇區(qū)),然后是磁頭號(hào)為2,,柱面為0的17個(gè)扇區(qū),,形成的DOS扇區(qū)號(hào)從17到33。直到該柱面的所有磁頭,。然后再移到柱面1,,磁頭1,扇區(qū)1繼續(xù)進(jìn)行DOS扇區(qū)的編號(hào),,即按扇區(qū)號(hào),,磁頭號(hào),柱面號(hào)(磁道號(hào))增長(zhǎng)的順序連續(xù)地分配DOS扇區(qū)號(hào),。 DH:第一個(gè)DOS扇區(qū)的磁頭號(hào) DC:第一個(gè)DOS扇區(qū)的柱面號(hào) DS:第一個(gè)DOS扇區(qū)的扇區(qū)號(hào) NS:每磁道扇區(qū)數(shù) NH:磁盤總的磁頭數(shù) 則某扇區(qū)(柱面C磁頭H扇區(qū)S)的相對(duì)扇區(qū)號(hào)RS為: RS=(C-DC)×NH×NS+NS(H-DH)+(S-DS) 若已知RS,,DC,DH,,DS,,NS和NH則 S=(RS MOD NS)+DS H=((RS DIV NS)MOD NH)+DH C=((RS DIV NS)DIV NH)+DC DOS磁盤區(qū)域的劃分 高級(jí)格式化好的硬盤,整個(gè)磁盤按所記錄數(shù)據(jù)的作用不同可分為主引導(dǎo)記錄(MBR:Main Boot Record),,Dos引導(dǎo)記錄(DBR:Dos Boot Record),,文件分配表(FAT:File Assign Table),根目錄(BD:Boot Directory)和數(shù)據(jù)區(qū),。前5個(gè)重要信息在磁盤的外磁道上,,原因是外圈周長(zhǎng)總大于內(nèi)圈周長(zhǎng),也即外圈存儲(chǔ)密度要小些,,可靠性高些,。 MBR位于硬盤第一個(gè)物理扇區(qū)(絕對(duì)扇區(qū))柱面0,磁頭0,,扇區(qū)1處,。由于DOS是由柱面0,磁頭1,,扇區(qū)1開始,,故MBR不屬于DOS扇區(qū),DOS不能直接訪問(wèn),。MBR中包含硬盤的主引導(dǎo)程序pre-boot和硬盤分區(qū)表dpt和55aa組成,。分區(qū)表有4個(gè)分區(qū)記錄區(qū)。記錄區(qū)就是記錄有關(guān)分區(qū)信息的一張表,。它從主引導(dǎo)記錄偏移地址01BEH處連續(xù)存放,,每個(gè)分區(qū)記錄區(qū)占16個(gè)字節(jié)。 硬盤的0柱面,、0磁頭,、1扇區(qū)稱為主引導(dǎo)記錄MBR,該記錄占用512個(gè)字節(jié),它用于硬盤啟動(dòng)時(shí)將系統(tǒng)控制權(quán)轉(zhuǎn)給用戶指定的的某個(gè)活動(dòng)主分區(qū),。 MBR的內(nèi)容是在硬盤分區(qū)時(shí)由分區(qū)軟件(如FDISK)寫入該扇區(qū)的,,MBR不屬于任何一個(gè)操作系統(tǒng),不隨操作系統(tǒng)的不同而不同,,即使不同,,MBR也不會(huì)摻雜操作系統(tǒng)的性質(zhì),具有公共引導(dǎo)的特性,。但安裝某些多重引導(dǎo)功能的軟件或LINUX的LILO時(shí)有可能改寫它,;它先于所有的操作系統(tǒng)被調(diào)入內(nèi)存并發(fā)揮作用,然后才將控制權(quán)交給活動(dòng)主分區(qū)內(nèi)的操作系統(tǒng),。 MBR由三部分構(gòu)成: 1.主引導(dǎo)程序pre-boot代碼,,占446字節(jié) 2.硬盤分區(qū)表DPT,占64字節(jié) 3.主引導(dǎo)扇區(qū)結(jié)束標(biāo)志AA55H占2個(gè)字節(jié) 1.主引導(dǎo)程序代碼從偏移0000H開始到偏移01BDH結(jié)束的446字節(jié),;主引導(dǎo)程序代碼包括一小段執(zhí)行代碼,。啟動(dòng)PC 機(jī)時(shí),,系統(tǒng)首先對(duì)硬件設(shè)備進(jìn)行測(cè)試,,成功后進(jìn)入自舉程序INT 19H;然后讀系統(tǒng)磁盤0柱面,、0磁頭,、1扇區(qū)的主引導(dǎo)扇區(qū)MBR的內(nèi)容到內(nèi)存指定單元0:7C00 首地址開始的區(qū)域,并執(zhí)行MBR程序段,。 主引導(dǎo)代碼實(shí)現(xiàn)下列功能: 1.掃描分區(qū)表查找活動(dòng)分區(qū),; 2.尋找活動(dòng)分區(qū)的起始扇區(qū); 3.將活動(dòng)分區(qū)的引導(dǎo)扇區(qū)讀到內(nèi)存,; 4.執(zhí)行引導(dǎo)扇區(qū)的運(yùn)行代碼,。 如果主引導(dǎo)代碼未完成這些功能,系統(tǒng)顯示下列錯(cuò)誤信息: Invalid partition table Error loading operating system Missing operating system 二,、硬盤分區(qū)表DPT是從偏移01BEH開始到偏移01FDH結(jié)束的64字節(jié),; 硬盤分區(qū)表分為四小部分,每一小部分表示一個(gè)分區(qū)的信息,,占16字節(jié),。在這里我們可以看出,硬盤的總分區(qū)數(shù)為什么不能大于4,。其中可激活分區(qū)數(shù)不得大于3,,擴(kuò)展分區(qū)數(shù)不得大于1,當(dāng)前活動(dòng)分區(qū)數(shù)必須小于等于1,。分區(qū)表的每一分區(qū)的第0個(gè)字節(jié)是自舉標(biāo)志,,其值為80H時(shí),表示該分區(qū)是當(dāng)前活動(dòng)分區(qū),可引導(dǎo),,其值為00H時(shí),,表示該分區(qū)不可引導(dǎo)。第4字節(jié)是分區(qū)類型,。每一分區(qū)的第1至第3字節(jié)是該分區(qū)起始地址,。其中第1字節(jié)為起始磁頭號(hào)(面號(hào));第2字節(jié)的低6位為起始扇區(qū)號(hào),,高2位則為起始柱面號(hào)的高2位,;第3字節(jié)為起始柱面號(hào)的低8位。因此,,分區(qū)的起始柱面號(hào)是用10位二進(jìn)制數(shù)表示的,,最大值為2^10 = 1024,因邏輯柱面號(hào)從0開始計(jì),,故柱面號(hào)的顯示最大值為1023,。同理,用6位二進(jìn)制數(shù)表示的扇區(qū)號(hào)不會(huì)超過(guò)2^6 - 1 = 63,;用8位二進(jìn)制數(shù)表示的磁頭號(hào)不會(huì)超過(guò)2^8 - 1 = 255,。每一分區(qū)的第5至第7字節(jié)表示分區(qū)的終止地址,各字節(jié)的釋義與第1至第3字節(jié)相同,。這里我們假設(shè)一種極端的情況:如果讓第5至第7字節(jié)的所有二進(jìn)制位都取1,,就獲得了柱面號(hào)、磁頭號(hào)和扇區(qū)號(hào)所能表示的最大值,,從而得到最大絕對(duì)扇區(qū)號(hào)為:1024 × 256 × 63 = 16,515,072這個(gè)扇區(qū)之前的所有物理扇區(qū)所包含的字節(jié)數(shù)為:16,515,072 × 512Bytes ≈ 8.46×109Bytes = 8.46GB,。 由此可知硬盤的容量設(shè)計(jì)為什么會(huì)有8.4GB這一檔,分區(qū)表每一分區(qū)的第1至第3字節(jié)以及第5至第7字節(jié)的數(shù)據(jù)結(jié)構(gòu)已經(jīng)不能滿足大于8.46GB的大容量硬盤的需要,??紤]到向下兼容的需要,業(yè)界并未對(duì)從DOS時(shí)代就如此定義的硬盤分區(qū)表提出更改意見,,否則改動(dòng)所牽涉的面太廣,,會(huì)造成硬件和軟件發(fā)展上的一個(gè)斷層,幾乎無(wú)法被業(yè)界和用戶所接受,。硬盤廠商解決這一問(wèn)題的方法是定義了新的INT 13服務(wù)擴(kuò)展標(biāo)準(zhǔn),。新的INT 13服務(wù)擴(kuò)展標(biāo)準(zhǔn)不再使用操作系統(tǒng)的寄存器傳遞硬盤的尋址參數(shù),而使用存儲(chǔ)在操作系統(tǒng)內(nèi)存里的地址包,。地址包里保存的是64位LBA地址,,如果硬盤支持LBA尋址,就把低28位直接傳遞給ATA接口,,如果不支持,,操作系統(tǒng)就先把LBA地址轉(zhuǎn)換為CHS地址,,再傳遞給ATA接口。通過(guò)這種方式,,能實(shí)現(xiàn)在ATA總線基礎(chǔ)上CHS尋址的最大容量是136.9 GB,,而LBA尋址的最大容量是137.4GB。新的硬盤傳輸規(guī)范ATA 133規(guī)范又把28位可用的寄存器空間提高到48位,,從而支持更大的硬盤,。分區(qū)表每一分區(qū)的第8至第11字節(jié)表示該分區(qū)的起始相對(duì)扇區(qū)數(shù)(即該扇區(qū)之前的絕對(duì)扇區(qū)個(gè)數(shù)),高位在右,,低位在左,;第12至第15字節(jié)表示該分區(qū)實(shí)際占用的扇區(qū)數(shù),也是高位在右,,低位在左,;分區(qū)表這類數(shù)據(jù)結(jié)構(gòu)的表達(dá)方式與機(jī)器中數(shù)據(jù)的實(shí)際存儲(chǔ)方式在順序上是一致的,即低位在前,,高位在后,。因此,在從16進(jìn)制向十進(jìn)制作數(shù)值轉(zhuǎn)換時(shí),,需將字段中的16進(jìn)制數(shù)以字節(jié)為單位翻轉(zhuǎn)調(diào)位,,用4個(gè)字節(jié)可以表示最大2^32個(gè)扇區(qū),即2TB=2048GB,。系統(tǒng)在分區(qū)時(shí),,各分區(qū)都不允許跨柱面,,即均以柱面為單位,,這就是通常所說(shuō)的分區(qū)粒度。在未超過(guò)8.4GB的分區(qū)上,,C/H/S的表示方法和扇區(qū)數(shù)的表示方法所表示的分區(qū)大小是一致的,。超過(guò)8.4GB的/H/S/C一般填充為FEH/FFH/FFH,即C/H/S所能表示的最大值,;有時(shí)候也會(huì)用柱面對(duì)1024的模來(lái)填充,。不過(guò)這幾個(gè)字節(jié)是什么其實(shí)都無(wú)關(guān)緊要了。擴(kuò)展分區(qū)中的每個(gè)邏輯驅(qū)動(dòng)器都存在一個(gè)類似于MBR的擴(kuò)展引導(dǎo)記錄(Extended Boot Record,,EBR),。擴(kuò)展引導(dǎo)記錄包括一個(gè)擴(kuò)展分區(qū)表和扇區(qū)結(jié)束標(biāo)志55AA。一個(gè)邏輯驅(qū)動(dòng)器中的引導(dǎo)扇區(qū)一般位于相對(duì)扇區(qū)32或63,。如果磁盤上沒(méi)有擴(kuò)展分區(qū),,那么就不會(huì)有擴(kuò)展引導(dǎo)記錄和邏輯驅(qū)動(dòng)器。第一個(gè)邏輯驅(qū)動(dòng)器的擴(kuò)展分區(qū)表中的第一項(xiàng)指向它自身的引導(dǎo)扇區(qū),;第二項(xiàng)指向下一個(gè)邏輯驅(qū)動(dòng)器的EBR,,如果不存在進(jìn)一步的邏輯驅(qū)動(dòng)器,,第二項(xiàng)就不會(huì)使用,而被記錄成一系列零,。如果有附加的邏輯驅(qū)動(dòng)器,,那么第二個(gè)邏輯驅(qū)動(dòng)器的擴(kuò)展分區(qū)表的第一項(xiàng)會(huì)指向它本身的引導(dǎo)扇區(qū),第二個(gè)邏輯驅(qū)動(dòng)器的擴(kuò)展分區(qū)表的第二項(xiàng)指向下一個(gè)邏輯驅(qū)動(dòng)器的EBR,。擴(kuò)展分區(qū)表的第三項(xiàng)和第四項(xiàng)永遠(yuǎn)都不會(huì)被使用,。擴(kuò)展分區(qū)表項(xiàng)中的相對(duì)扇區(qū)數(shù)是從擴(kuò)展分區(qū)開始的扇區(qū)到該邏輯驅(qū)動(dòng)器中第一個(gè)扇區(qū)的扇區(qū)數(shù);占用的扇區(qū)數(shù)是指組成該邏輯驅(qū)動(dòng)器的扇區(qū)數(shù)目,。 有時(shí)候在磁盤的末尾會(huì)有剩余空間,,由于分區(qū)是以1柱面的容量為分區(qū)粒度的,那么如果磁盤總空間不是整數(shù)個(gè)柱面的話,,不夠一個(gè)柱面的剩下的空間就是剩余空間了,,這部分空間并不參與分區(qū),所以一般無(wú)法利用,。 三,、主引導(dǎo)扇區(qū)的最后兩個(gè)字節(jié)(偏移1FEH和偏移1FFH),其值為AA55H,,它表示該扇區(qū)是個(gè)有效的引導(dǎo)扇區(qū),,可用來(lái)引導(dǎo)硬磁盤系統(tǒng)。 分區(qū)引導(dǎo)扇區(qū)DBR(DOS BOOT RECORD)是由FORMAT高級(jí)格式化命令寫到該扇區(qū)的內(nèi)容,;DBR是由硬盤的MBR裝載的程序段,。DBR裝入內(nèi)存后,即開始執(zhí)行該引導(dǎo)程序段,,其主要功能是完成操作系統(tǒng)的自舉并將控制權(quán)交給操作系統(tǒng),。每個(gè)分區(qū)都有引導(dǎo)扇區(qū),但只有被設(shè)為活動(dòng)分區(qū)的DBR才會(huì)被MBR裝入內(nèi)存運(yùn)行,。 DBR主要由下列幾個(gè)部分組成: 1.跳轉(zhuǎn)指令,,占用3個(gè)字節(jié)的跳轉(zhuǎn)指令將跳轉(zhuǎn)至引導(dǎo)代碼。 2.廠商標(biāo)識(shí)和DOS版本號(hào),,該部分總共占用8個(gè)字節(jié),。 3.BPB(BIOS Parameter Block, BIOS 參數(shù)塊),。 4.操作系統(tǒng)引導(dǎo)程序,。 5.結(jié)束標(biāo)志字,結(jié)束標(biāo)志占用2個(gè)字節(jié),,其值為AA55 DBR中的內(nèi)容除了第5部分結(jié)束標(biāo)志字固定不變之外,,其余4個(gè)部分都是不確定的,其內(nèi)容將隨格式化所用的操作系統(tǒng)版本及硬盤的邏輯盤參數(shù)的變化而變化,。 一,、FAT32的分區(qū)引導(dǎo)扇區(qū) 為了使加載文件的操作更加靈活,,加上FAT32文件系統(tǒng)采用"活動(dòng)"的FDT表,,,同時(shí)考慮到引導(dǎo)程序的代碼量和為今后發(fā)展保留適當(dāng)?shù)挠嗔?,F(xiàn)AT32文件系統(tǒng)分區(qū)引導(dǎo)扇區(qū)占據(jù)了6個(gè)扇區(qū),只有前3個(gè)扇區(qū)作為系統(tǒng)的分區(qū)引導(dǎo)扇區(qū),,其余3個(gè)扇區(qū)保留暫未使用,。分區(qū)引導(dǎo)扇區(qū)對(duì)于操作系統(tǒng)的啟動(dòng)和磁盤文件的訪問(wèn)具有至關(guān)重要的作用;引導(dǎo)程序代碼的損壞將導(dǎo)致操作系統(tǒng)不能正常啟動(dòng),,磁盤讀寫參數(shù)的破壞將造成存儲(chǔ)在磁盤上的文件不能正常讀寫,。 由于分區(qū)引導(dǎo)扇區(qū)的重要性,F(xiàn)AT32文件系統(tǒng)在在第一個(gè)分區(qū)引導(dǎo)扇區(qū)的6個(gè)扇區(qū)后的6個(gè)扇區(qū)里保留了分區(qū)引導(dǎo)扇區(qū)的備份,,在啟動(dòng)時(shí)操作系統(tǒng)可以對(duì)兩份引導(dǎo)扇區(qū)進(jìn)行比較,,以便選擇正確的引導(dǎo)扇區(qū)來(lái)引導(dǎo)系統(tǒng)。由于在磁盤正常工作過(guò)程中系統(tǒng)不再對(duì)引導(dǎo)扇區(qū)的程序和數(shù)據(jù)進(jìn)行修改,,因此備份的分區(qū)引導(dǎo)扇區(qū)損壞的可能性非常小,。 分區(qū)引導(dǎo)扇區(qū)的第一個(gè)扇區(qū)的前三個(gè)字節(jié)是一條跳轉(zhuǎn)指令,然后是8個(gè)字節(jié)長(zhǎng)的OEM ID(廠家標(biāo)識(shí))和版本號(hào),,其后是簡(jiǎn)稱為BPB的BIOS參數(shù)塊(BIOS Parameter Block),。對(duì)于FAT32其各部分的意義如下表: 偏移地址 長(zhǎng)度(字節(jié)) 意義 0BH 2 每個(gè)扇區(qū)的字節(jié)數(shù),常取512,。 0DH 1 每簇扇區(qū)數(shù),;可以是1, 2, 4, 8, 16, 32, 64, 128,取決于文件系統(tǒng)格式及分區(qū)大小,。 0EH 2 為操作系統(tǒng)保留的扇區(qū)數(shù),;FAT32時(shí)多為十進(jìn)制的32,F(xiàn)AT16時(shí)為1,,有的格式化工具可能將它設(shè)為36或63,。 10H 1 FAT表的個(gè)數(shù);常取2,。 11H 2 在FAT16中存放系統(tǒng)根目錄中允許登記的目錄項(xiàng)個(gè)數(shù),F(xiàn)AT32中用于標(biāo)注系統(tǒng)采用的是否為FAT32文件系統(tǒng),。其值為0000H表示磁盤使用FAT32文件系統(tǒng),。 13H 2 值為00H,為保持兼容性而保留,,未使用,。 15H 1 磁盤介質(zhì)標(biāo)志,硬盤為F8,。 16H 2 未使用,,值為00H,。 18H 2 每個(gè)磁道的扇區(qū)數(shù)。 1AH 2 磁盤的磁頭數(shù),。 1CH 4 分區(qū)前隱藏扇區(qū)的個(gè)數(shù),。 20H 4 邏輯磁盤中的扇區(qū)總數(shù)。 24H 4 每個(gè)FAT表所占的扇區(qū)數(shù),。 28H 2 FAT表鏡像標(biāo)志,,值為0表示系統(tǒng)保存2份互為備份的FAT表,值為1表示系統(tǒng)僅保存1份FAT表,。 2AH 2 文件系統(tǒng)的主次版本(保留),。 2CH 4 磁盤根目錄的起始簇號(hào)。 30H 2 文件系統(tǒng)參數(shù)的扇區(qū)號(hào),,通常位于引導(dǎo)扇區(qū)的下一個(gè)扇區(qū),。 32H 2 備份分區(qū)引導(dǎo)扇區(qū)的邏輯扇區(qū)號(hào)。 34H 12 保留,,未使用,。 40H 1 中斷13呼叫的預(yù)設(shè)值,指明訪問(wèn)的設(shè)備;軟盤為00H,,硬盤為80H,。 41H 1 用于中斷13呼叫。 42H 1 磁盤讀寫參數(shù)擴(kuò)展標(biāo)志,,其值為29H,。 43H 4 格式化時(shí)隨機(jī)產(chǎn)生的磁盤卷的序列號(hào)。 47H 11 格式化時(shí)人工輸入的磁盤卷標(biāo)號(hào),。 52H 8 文件系統(tǒng)的標(biāo)識(shí)號(hào)(FAT32),。 從偏移0x5A開始的數(shù)據(jù)為操作系統(tǒng)引導(dǎo)代碼。這是由偏移0x00開始的跳轉(zhuǎn)指令所指向的,,此段指令在不同的操作系統(tǒng)上和不同的引導(dǎo)方式上,,其內(nèi)容也是不同的。 扇區(qū)的最后兩個(gè)字節(jié)存儲(chǔ)值為0x55AA的DBR有效標(biāo)志,,對(duì)于其他的取值,,系統(tǒng)將不會(huì)執(zhí)行DBR相關(guān)指令。 分區(qū)引導(dǎo)扇區(qū)的第2個(gè)扇區(qū)作為文件系統(tǒng)相關(guān)參數(shù)存儲(chǔ)標(biāo)識(shí)扇區(qū)(圖七),, 除了保存扇區(qū)的標(biāo)識(shí)信息(RraA(00H)和rrAa(1E4H))外,,還可能在偏移地址1E8H處存儲(chǔ)了文件系統(tǒng)有關(guān)的信息。其中扇區(qū)偏移地址1E8H~1EBH的4個(gè)字節(jié)存儲(chǔ)了邏輯磁盤中未使用的簇?cái)?shù),,通常用于快速計(jì)算邏輯磁盤的剩余空間(典型的操作是在資源管理器狀態(tài)欄上列出的"可用磁盤空間"參數(shù)),,而1ECH~1EFH 4個(gè)字節(jié)給出了邏輯盤中下一個(gè)可以分配給文件使用的空閑簇的簇號(hào),這樣操作系統(tǒng)可以不訪問(wèn)FAT表就直接獲得磁盤剩余空間和可以分配的簇號(hào),。 分區(qū)引導(dǎo)扇區(qū)的第3個(gè)扇區(qū)則存儲(chǔ)了引導(dǎo)扇區(qū)的后一部分引導(dǎo)系統(tǒng)的程序代碼(圖八),。 二,、NTFS的分區(qū)引導(dǎo)扇區(qū) 對(duì)于NTFS分區(qū)來(lái)說(shuō),分區(qū)引導(dǎo)扇區(qū)DBR只占用一個(gè)扇區(qū)(圖五),,并且在該分區(qū)的最后一個(gè)扇區(qū)做了備份,;NTFS的引導(dǎo)扇區(qū)也是完成引導(dǎo)和定義分區(qū)參數(shù),NTFS分區(qū)的引導(dǎo)扇區(qū)不是分區(qū)的充分條件,,它要求必須MFT中的系統(tǒng)記錄如$MFT等正常該分區(qū)才能正常訪問(wèn),。其BPB參數(shù)如下表所示: 偏移地址 長(zhǎng)度(字節(jié)) 常用值 意 義 0x0B 2 0x0002 每扇區(qū)字節(jié)數(shù) 0x0D 1 0x08 每簇扇區(qū)數(shù) 0x0E 2 0x0000 保留扇區(qū) 0x10 3 0x000000 總為0 0x13 2 0x0000 NTFS未使用,為0 0x15 1 0xF8 介質(zhì)描述 0x16 2 0x0000 總為0 0x18 2 0x3F00 每磁道扇區(qū)數(shù) 0x1A 2 0xFF00 磁頭數(shù) 0x1C 4 0x3F000000 隱藏扇區(qū)數(shù) 0x20 4 0x00000000 NTFS未使用,,為0 0x28 8 0x4AF57F0000000000 扇區(qū)總數(shù) 0x30 8 0x0400000000000000 $MFT的邏輯簇號(hào) 0x38 8 0x54FF070000000000 $MFT Mirr的邏輯簇號(hào) 0x40 4 0xF6000000 每MFT記錄簇?cái)?shù) 0x44 4 0x01000000 每索引簇?cái)?shù) 0x48 8 0x14A51B74C91B741C 卷標(biāo) 0x50 4 0x00000000 檢驗(yàn)和 [ 本帖最后由 伐木者 于 2007-6-19 20:11 編輯 ] 附件: 您所在的用戶組無(wú)法下載或查看附件本文來(lái)自:創(chuàng)幻論壇 http://www. UID55456帖子9783 精華45 積分47222 威望0 金幣0 閱讀權(quán)限18 性別男 來(lái)自有樹砍的地方 在線時(shí)間8494 小時(shí) 注冊(cè)時(shí)間2004-5-16 最后登錄2010-4-5 查看詳細(xì)資料 TOP 【推薦】權(quán)威專家推薦漲停股票請(qǐng)點(diǎn)擊獲取 伐木者 魏武王常所用論壇 超級(jí)版主 電腦家園區(qū)總版主 積分47222 威望0 注冊(cè)時(shí)間2004-5-16 發(fā)短消息 加為好友 沙發(fā) 大 中 小 發(fā)表于 2007-6-17 20:55 只看該作者 How It Works --- Master Boot Record (主啟動(dòng)記錄) 本文是介紹MBR的反編譯程序的,。MBR是放在硬盤的0柱面,0磁頭(head),,1扇區(qū)的 那一段區(qū),。MBR是由FDISK程序創(chuàng)建的,。所有操作系統(tǒng)的FDISK程序都會(huì)創(chuàng)建類似的MBR 記錄。MBR是多個(gè)分區(qū)的前提,,每個(gè)MBR中包括了四個(gè)分區(qū)表記錄,。在您的計(jì)算機(jī)加電 之后,INT19被調(diào)用了,。一般來(lái)說(shuō),INT19先從第一個(gè)軟盤驅(qū)動(dòng)器中讀啟動(dòng)扇區(qū)記錄,。 如果在軟盤中找到了啟動(dòng)的扇區(qū),那么這個(gè)扇區(qū)的數(shù)據(jù)就被讀入到內(nèi)存的0000:7c00 地址上,,INT19也跳到了這個(gè)地址上,。但是,,如果沒(méi)有在軟盤中找到這個(gè)扇區(qū)的話,,INT 19就從第一個(gè)硬盤中去讀。同樣,,如果成功的話,,也會(huì)把MBR導(dǎo)入到相同的內(nèi)存地址 0000:7c00,INT19也會(huì)跳這個(gè)地址,。MBR中包括的一段小程序是定出在分區(qū)表中的活動(dòng)分 區(qū),。這樣的活動(dòng)分區(qū)找到之,,那個(gè)分區(qū)的啟動(dòng)扇區(qū)也被讀入到0000:7c00地址,MBR程序 也轉(zhuǎn)移到了這個(gè)地址,。每一個(gè)操作系統(tǒng)都有固定的啟動(dòng)扇區(qū)的格式,。在啟動(dòng)扇區(qū)里的程 序要能定出操作系統(tǒng)啟動(dòng)程序的位置(或是核心本身,或者是一個(gè)啟動(dòng)管理器),,然后 將它讀入內(nèi)存,。 另:在Ctrl-Alt-Del鍵被按下時(shí),,INT19也會(huì)被調(diào)用。在大多數(shù)系統(tǒng)中,,Ctrl-Alt-Del三?nbsp; 鍵同時(shí)按下表示熱啟動(dòng)您的計(jì)算機(jī),,回到INT19調(diào)用前的狀態(tài),。 ===== 數(shù)據(jù)存放的位置: MBR程序放在偏移為0000的位置。 MBR消息放在偏移為008b的位置,。 分區(qū)表放在偏移為00be的位置,。 簽名放在偏移為00fe的位置。 關(guān)于誰(shuí)干什么事的總結(jié): 如果一個(gè)活動(dòng)分區(qū)找到了,,這個(gè)分區(qū)的啟動(dòng)數(shù)據(jù)被讀入到0000:7c00的位置,,MBR程 序也跳到0000:7c00的位置。這段程序找到指向分區(qū)表的入口,,入口描述的是這段分區(qū)是 怎樣被啟動(dòng)的,。啟動(dòng)程序用這些數(shù)據(jù)來(lái)決定用來(lái)啟動(dòng)的驅(qū)動(dòng)器和這個(gè)驅(qū)動(dòng)器分區(qū)在硬盤上 的位置。 如果沒(méi)有找到這樣的活動(dòng)分區(qū)入口,,ROM BASIC會(huì)轉(zhuǎn)入INT 18的調(diào)用,。所有其他的錯(cuò) 誤導(dǎo)致系統(tǒng)的掛起,可以看HANG的標(biāo)記,。 注意(非常之重要): ?。保┗顒?dòng)分區(qū)入口的第一個(gè)字節(jié)的內(nèi)容是80h。在INT13被調(diào)用之前,,這個(gè)字節(jié)被導(dǎo) 入到DL寄存器中,。當(dāng)INT13被調(diào)用時(shí),DL表示的是BIOS的設(shè)備號(hào)碼,。因?yàn)檫@個(gè)原因,,由MBR 程序讀的啟動(dòng)扇區(qū)只能從BIOS設(shè)備號(hào)碼為80的硬盤中讀入。這便是為什么不能從任何硬盤 啟動(dòng)的原因。?nbsp; ?。玻㎝BR程序是用基于INT 13h (ah=02h)的中斷的CHS來(lái)讀取活動(dòng)分區(qū)的啟動(dòng)扇區(qū)位置 的,。活動(dòng)分區(qū)的啟動(dòng)扇區(qū)內(nèi)的位置是在分區(qū)表內(nèi)用CHS格式表明的,。如果這個(gè)驅(qū)動(dòng)器小于 528M,,這個(gè)CHS一定要是(L-CHS,見BIOS TYPES文檔)。在LBA中沒(méi)有任何地址是有用的,。 (另一個(gè)LBA不能解決>528M問(wèn)題的原因) 這點(diǎn)大家別信,,西西。 ==== 這是一張整個(gè)MBR記錄的表(hex 和ascii格式) OFFSET 0 1 2 3 4 5 6 7 8 9 A B C D E F *0123456789ABCDEF* 000000 fa33c08e d0bc007c 8bf45007 501ffbfc *.3.....|..P.P...* 000010 bf0006b9 0001f2a5 ea1d0600 00bebe07 *................* 000020 b304803c 80740e80 3c00751c 83c610fe *...<.t..<.u.....* 000030 cb75efcd 188b148b 4c028bee 83c610fe *.u......L.......* 000040 cb741a80 3c0074f4 be8b06ac 3c00740b *.t..<.t.....<.t.* 000050 56bb0700 b40ecd10 5eebf0eb febf0500 *V.......^.......* 000060 bb007cb8 010257cd 135f730c 33c0cd13 *..|...W.._s.3...* 000070 4f75edbe a306ebd3 bec206bf fe7d813d *Ou...........}.=* 000080 55aa75c7 8bf5ea00 7c000049 6e76616c *U.u.....|..Inval* 000090 69642070 61727469 74696f6e 20746162 *id partition tab* 0000a0 6c650045 72726f72 206c6f61 64696e67 *le.Error loading* 0000b0 206f7065 72617469 6e672073 79737465 * operating syste* 0000c0 6d004d69 7373696e 67206f70 65726174 *m.Missing operat* 0000d0 696e6720 73797374 656d0000 00000000 *ing system......* 0000e0 00000000 00000000 00000000 00000000 *................* 0000f0 TO 0001af SAME AS ABOVE 0001b0 00000000 00000000 00000000 00008001 *................* 0001c0 0100060d fef83e00 00000678 0d000000 *......>....x....* 0001d0 00000000 00000000 00000000 00000000 *................* 0001e0 00000000 00000000 00000000 00000000 *................* 0001f0 00000000 00000000 00000000 000055aa *..............U.* ==== 這是MBR的反編譯程序: 這個(gè)扇區(qū)被導(dǎo)入到內(nèi)存的0000:7c00位置,,但是它又馬上將自己重定位到0000:0060的 位?nbsp; ,。 BEGIN: # NOW AT 0000:7C00, RELOCATE 0000:7C00 FA CLI #禁止中斷 0000:7C01 33C0 XOR AX,AX #設(shè)置堆棧段地址為0000 0000:7C03 8ED0 MOV SS,AX 0000:7C05 BC007C MOV SP,7C00 #設(shè)置堆棧指針為7c00 0000:7C08 8BF4 MOV SI,SP #SI = 7c00 0000:7C0A 50 PUSH AX 0000:7C0B 07 POP ES #ES = 0000:7c00 0000:7C0C 50 PUSH AX 0000:7C0D 1F POP DS #DS = 0000:7c00 0000:7C0E FB STI #開中斷 0000:7C0F FC CLD #清除方向 0000:7C10 BF0006 MOV DI,0600 #DI = 0600 0000:7C13 B90001 MOV CX,0100 #移動(dòng) 256 個(gè)word (512 bytes) 0000:7C16 F2 REPNZ #把 MBR 從 0000:7c00 0000:7C17 A5 MOVSW #移動(dòng)到0000:0600 0000:7C18 EA1D060000 JMP 0000:061D #跳至NEW_LOCATION NEW_LOCATION:# NOW AT 0000:0600 0000:061D BEBE07 MOV SI,07BE #指向入口的第一個(gè)字節(jié) 0000:0620 B304 MOV BL,04 #有4個(gè)入口 SEARCH_LOOP1: # 查找活動(dòng)分區(qū) 0000:0622 803C80 CMP BYTE PTR [SI],80 #是不是活動(dòng)分區(qū)? 0000:0625 740E JZ FOUND_ACTIVE #是,,棧指針指向7c00 0000:0627 803C00 CMP BYTE PTR [SI],00 #是不是不活動(dòng)分區(qū),? 0000:062A 751C JNZ NOT_ACTIVE #跳轉(zhuǎn)至NOT_ACTIVE 0000:062C 83C610 ADD SI,+10 #增量表指針加16 0000:062F FECB DEC BL #減少計(jì)數(shù) 0000:0631 75EF JNZ SEARCH_LOOP1 #循環(huán) 0000:0633 CD18 INT 18 #跳至 ROM BASIC FOUND_ACTIVE: # 找到了活動(dòng)分區(qū) 0000:0635 8B14 MOV DX,[SI] #設(shè)置DH/DL為INT 13 0000:0637 8B4C02 MOV CX,[SI+02] #設(shè)置CH/CL為INT 13 0000:063A 8BEE MOV BP,SI #保存表指針 SEARCH_LOOP2: # 確定是一個(gè)活動(dòng)分區(qū) 0000:063C 83C610 ADD SI,+10 #增量表指針加16 0000:063F FECB DEC BL #減少計(jì)數(shù) 0000:0641 741A JZ READ_BOOT #如果表結(jié)束,跳轉(zhuǎn) 0000:0643 803C00 CMP BYTE PTR [SI],00 #是不是非活動(dòng)分區(qū) 0000:0646 74F4 JZ SEARCH_LOOP2 #是,,循環(huán) NOT_ACTIVE: # 多于一個(gè)活動(dòng)分區(qū) 0000:0648 BE8B06 MOV SI,068B #顯示 "Invld prttn tbl" DISPLAY_MSG: # 顯示消息循環(huán) 0000:064B AC LODSB #取得消息的字符 0000:064C 3C00 CMP AL,00 #判斷消息的結(jié)尾 0000:064E 740B JZ HANG #是 0000:0650 56 PUSH SI #保存SI 0000:0651 BB0700 MOV BX,0007 #屏幕屬性 0000:0654 B40E MOV AH,0E #顯示一個(gè)字符 0000:0656 CD10 INT 10 0000:0658 5E POP SI #恢復(fù)SI 0000:0659 EBF0 JMP DISPLAY_MSG #循環(huán) HANG: #掛起系統(tǒng) 0000:065B EBFE JMP HANG #停在這兒 READ_BOOT: #讀活動(dòng)分區(qū)的數(shù)據(jù) 0000:065D BF0500 MOV DI,0005 #INT 13 的嘗試次數(shù) INT13RTRY: #INT 13的重試循環(huán) 0000:0660 BB007C MOV BX,7C00 0000:0663 B80102 MOV AX,0201 #讀入一個(gè)扇區(qū) 0000:0666 57 PUSH DI #保存DI 0000:0667 CD13 INT 13 #把扇區(qū)讀入0000:7c00 0000:0669 5F POP DI #重存DI 0000:066A 730C JNB INT13OK #沒(méi)有INT 13,,跳轉(zhuǎn) 0000:066C 33C0 XOR AX,AX #調(diào)用INT 13 ,硬盤重置 0000:066E CD13 INT 13 0000:0670 4F DEC DI #DI-- 0000:0671 75ED JNZ INT13RTRY #如果非零,,重試 0000:0673 BEA306 MOV SI,06A3 #顯示"Errr ldng systm" 0000:0676 EBD3 JMP DISPLAY_MSG #跳轉(zhuǎn)至顯示循環(huán) INT13OK: #INT 13 出錯(cuò) 0000:0678 BEC206 MOV SI,06C2 #"missing op sys" 0000:067B BFFE7D MOV DI,7DFE #指向簽名 0000:067E 813D55AA CMP WORD PTR [DI],AA55 #簽名是否正確,? 0000:0682 75C7 JNZ DISPLAY_MSG #不正確,跳至顯示消息循環(huán) 0000:0684 8BF5 MOV SI,BP #設(shè)置SI 0000:0686 EA007C0000 JMP 0000:7C00 #跳轉(zhuǎn)至啟動(dòng)扇區(qū),,SI指向分區(qū) 表入 ?nbsp; #這兒是消息 0000:0680 ........ ........ ......49 6e76616c * Inval* 0000:0690 69642070 61727469 74696f6e 20746162 *id partition tab* 0000:06a0 6c650045 72726f72 206c6f61 64696e67 *le.Error loading* 0000:06b0 206f7065 72617469 6e672073 79737465 * operating syste* 0000:06c0 6d004d69 7373696e 67206f70 65726174 *m.Missing operat* 0000:06d0 696e6720 73797374 656d00.. ........ *ing system. * #無(wú)用的數(shù)據(jù) 0000:06d0 ........ ........ ......00 00000000 * .....* 0000:06e0 00000000 00000000 00000000 00000000 *................* 0000:06f0 00000000 00000000 00000000 00000000 *................* 0000:0700 00000000 00000000 00000000 00000000 *................* 0000:0710 00000000 00000000 00000000 00000000 *................* 0000:0720 00000000 00000000 00000000 00000000 *................* 0000:0730 00000000 00000000 00000000 00000000 *................* 0000:0740 00000000 00000000 00000000 00000000 *................* 0000:0750 00000000 00000000 00000000 00000000 *................* 0000:0760 00000000 00000000 00000000 00000000 *................* 0000:0770 00000000 00000000 00000000 00000000 *................* 0000:0780 00000000 00000000 00000000 00000000 *................* 0000:0790 00000000 00000000 00000000 00000000 *................* 0000:07a0 00000000 00000000 00000000 00000000 *................* 0000:07b0 00000000 00000000 00000000 0000.... *............ * #分區(qū)表從0000:07be開始,。每一個(gè)分區(qū)表入口是16個(gè)字節(jié)這個(gè)表定義了一個(gè)單個(gè)的主分 區(qū)并 是活動(dòng)分區(qū)。 0000:07b0 ........ ........ ........ ....8001 * ....* 0000:07c0 0100060d fef83e00 00000678 0d000000 *......>....x....* 0000:07d0 00000000 00000000 00000000 00000000 *................* 0000:07e0 00000000 00000000 00000000 00000000 *................* 0000:07f0 00000000 00000000 00000000 0000.... *............ * #最后兩個(gè)字節(jié)一定包括了55aah的數(shù)據(jù),。 0000:07f0 ........ ........ ........ ....55aa *..............U.* 本文來(lái)自:創(chuàng)幻論壇 http://www. 分區(qū)表的格式 偏移 意義 占用字節(jié)數(shù) 00 引導(dǎo)指示符 1B 01 分區(qū)引導(dǎo)記錄的磁頭號(hào) 1B 02 分區(qū)引導(dǎo)記錄的扇區(qū)和柱面號(hào) 2B 04 系統(tǒng)指示符 1B 05 分區(qū)結(jié)束磁頭號(hào) 1B 06 分區(qū)結(jié)束扇區(qū)和柱面號(hào) 2B 08 分區(qū)前面的扇區(qū)數(shù) 4B 0C 分區(qū)中總的扇區(qū)數(shù) 4B 4個(gè)分區(qū)中只能有1個(gè)活躍分區(qū),,即C盤。標(biāo)志符是80H在分區(qū)表的第一個(gè)字節(jié)處,。若是00H則表示非活躍分區(qū),。 例如: 80 01 01 00 0B FE 3F 81 3F 00 00 00 C3 DD 1F 00 00 00 01 82 05 FE BF 0C 02 DE 1F 00 0E 90 61 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 要點(diǎn):(1)MBR位于硬盤第一個(gè)物理扇區(qū)柱面0,磁頭0,,扇區(qū)1處,。不屬于DOS扇區(qū), ?。?)主引導(dǎo)記錄分為硬盤的主引導(dǎo)程序和硬盤分區(qū)表,。 6.DBR DBR位于柱面0,磁頭1,,扇區(qū)1,,即邏輯扇區(qū)0,。DBR分為兩部分:DOS引導(dǎo)程序和BPB(BIOS參數(shù)塊)。其中DOS引導(dǎo)程序完成DOS系統(tǒng)文件(IO.SYS,,MSDOS.SYS)的定位與裝載,,而BPB用來(lái)描述本DOS分區(qū)的磁盤信息,,BPB位于DBR偏移0BH處,,共13字節(jié)。它包含邏輯格式化時(shí)使用的參數(shù),,可供DOS計(jì)算磁盤上的文件分配表,,目錄區(qū)和數(shù)據(jù)區(qū)的起始地址,BPB之后三個(gè)字提供物理格式化(低格)時(shí)采用的一些參數(shù),。引導(dǎo)程序或設(shè)備驅(qū)動(dòng)程序根據(jù)這些信息將磁盤邏輯地址(DOS扇區(qū)號(hào))轉(zhuǎn)換成物理地址(絕對(duì)扇區(qū)號(hào)),。BPB格式 序號(hào) 偏移地址 意義 1 03H-0AH OEM號(hào) 2 0BH-0CH 每扇區(qū)字節(jié)數(shù) 3 0DH 每簇扇區(qū)數(shù) 4 0EH-0FH 保留扇區(qū)數(shù) 5 10H FAT備份數(shù) 6 11H-12H 根目錄項(xiàng)數(shù) 7 13H-14H 磁盤總扇區(qū)數(shù) 8 15H 描述介質(zhì) 9 16H-17H 每FAT扇區(qū)數(shù) 10 18H-19H 每磁道扇區(qū)數(shù) 11 1AH-1BH 磁頭數(shù) 12 1CH-1FH 特殊隱含扇區(qū)數(shù) 13 20H-23H 總扇區(qū)數(shù) 14 24H-25H 物理驅(qū)動(dòng)器數(shù) 15 26H 擴(kuò)展引導(dǎo)簽證 16 27H-2AH 卷系列號(hào) 17 2BH-35H 卷標(biāo)號(hào) 18 36H-3DH 文件系統(tǒng)號(hào) DOS引導(dǎo)記錄公式: 文件分配表≡保留扇區(qū)數(shù) 根目錄≡保留扇區(qū)數(shù)+FAT的個(gè)數(shù)×每個(gè)FAT的扇區(qū)數(shù) 數(shù)據(jù)區(qū)≡根目錄邏輯扇區(qū)號(hào)+(32×根目錄中目錄項(xiàng)數(shù)+(每扇區(qū)字節(jié)數(shù)-1))DIV每扇區(qū)字節(jié)數(shù) 絕對(duì)扇區(qū)號(hào)≡邏輯扇區(qū)號(hào)+隱含扇區(qū)數(shù) 扇區(qū)號(hào)≡(絕對(duì)扇區(qū)號(hào)MOD每磁道扇區(qū)數(shù))+1 磁頭號(hào)≡(絕對(duì)扇區(qū)號(hào)DIV每磁道扇區(qū)數(shù))MOD磁頭數(shù) 磁道號(hào)≡(絕對(duì)扇區(qū)號(hào)DIV每磁道扇區(qū)數(shù))DIV磁頭數(shù) 要點(diǎn):(1)DBR位于柱面0,,磁頭1,,扇區(qū)1,其邏輯扇區(qū)號(hào)為0 ?。?)DBR包含DOS引導(dǎo)程序和BPB,。 ?。?)BPB十分重要,由此可算出邏輯地址與物理地址,。 7.文件分配表 文件分配表是DOS文件組織結(jié)構(gòu)的主要組成部分,。我們知道DOS進(jìn)行分配的最基本單位是簇。文件分配表是反映硬盤上所有簇的使用情況,,通過(guò)查文件分配表可以得知任一簇的使用情況,。DOS在給一個(gè)文件分配空間時(shí)總先掃描FAT,找到第一個(gè)可用簇,,將該空間分配給文件,,并將該簇的簇號(hào)填到目錄的相應(yīng)段內(nèi)。即形成了“簇號(hào)鏈”,。FAT就是記錄文件簇號(hào)的一張表,。FAT的頭兩個(gè)域?yàn)楸A粲颍瑢?duì)FAT12來(lái)說(shuō)是3個(gè)字節(jié),,F(xiàn)AT來(lái)說(shuō)是4個(gè)字節(jié),。其中頭一個(gè)字節(jié)是用來(lái)描述介質(zhì)的,其余字節(jié)為FFH ,。介質(zhì)格式與BPB相同,。 第一個(gè)字節(jié)的8位意義: 7 6 5 4 3 2?。?0 └─────-┘ │ │ │┌0非雙面 置1 │ │ └┤ │ │ └1雙面 │ │┌0不是8扇區(qū) │ └┤ │ └1是8扇區(qū) │┌0不是可換的 └┤ └1是可換的 FAT結(jié)構(gòu)含義 FAT12 FAT16 意義 000H 0000H 可用 FF0H-FF6H FFF0H-FFF6H 保留 FF7H FFF7H 壞 FF8H-FFFH FFF8H-FFFFH 文件最后一個(gè)簇 ×××H ××××H 文件下一個(gè)簇 對(duì)于FAT16,,簇號(hào)×2作偏移地址,從FAT中取出一字即為FAT中的域。 邏輯扇區(qū)號(hào)=數(shù)據(jù)區(qū)起始邏輯扇區(qū)號(hào)+(簇號(hào)-2)×每簇扇區(qū)數(shù) 簇號(hào)=(邏輯扇區(qū)號(hào)-數(shù)據(jù)區(qū)起始邏輯扇區(qū)號(hào))DIV每簇扇區(qū)數(shù)+2 要點(diǎn):(1)FAT反映硬盤上所有簇的使用情況,,它記錄了文件在硬盤中具體位置(簇),。 (2)文件第一個(gè)簇號(hào)(在目錄表中)和FAT的該文件的簇號(hào)串起來(lái)形成文件的“簇號(hào)鏈”,,恢復(fù)被破壞的文件就是根 據(jù)這條鏈,。 (3)由簇號(hào)可算邏輯扇區(qū)號(hào),,反之,,由邏輯扇區(qū)號(hào)也可以算出簇號(hào),公式如上,。 ?。?)FAT位于DBR之后,其DOS扇區(qū)號(hào)從1開始,。 8.文件目錄 文件目錄是DOS文件組織結(jié)構(gòu)的又一重要組成部分,。文件目錄分為兩類:根目錄,子目錄,。根目錄有一個(gè),,子目錄可以有多個(gè)。子目錄下還可以有子目錄,,從而形成“樹狀”的文件目錄結(jié)構(gòu),。子目錄其實(shí)是一種特殊的文件,DOS為目錄項(xiàng)分配32字節(jié),。目錄項(xiàng)分為三類:文件,,子目錄(其內(nèi)容是許多目錄項(xiàng)),卷標(biāo)(只能在根目錄,,只有一個(gè),。目錄項(xiàng)中有文件(或子目錄,或卷標(biāo))的名字,,擴(kuò)展名,,屬性,生成或最后修改日期,,時(shí)間,,開始簇號(hào),及文件大小,。 目錄項(xiàng)的格式 字節(jié)偏移 意義 占字節(jié)數(shù) 00H 文件名 8B 08H 擴(kuò)展名 3B 0BH 文件屬性 1B 0CH 保留 10B 16H 時(shí)間 2B 18H 日期 2B 1AH 開始簇號(hào) 2B 1CH 文件長(zhǎng)度 4B 目錄項(xiàng)文件名區(qū)域中第一個(gè)字節(jié)還有特殊的意義:00H代表未使用 05H代表實(shí)際名為E5H EBH代表此文件已被刪除 目錄項(xiàng)屬性區(qū)域的這個(gè)字節(jié)各個(gè)位的意義如下: 7?。丁。怠,。础,。场,。病。薄,。? 未 修 修 子 卷 系 隱 只 用 改 改 目 標(biāo) 統(tǒng) 藏 讀 標(biāo) 標(biāo) 錄 屬 屬 屬 志 志 性 性 性 注意:WINDOWS的長(zhǎng)文件名使用了上表中所說(shuō)的“保留”這片區(qū)域,。 要點(diǎn):(1)文件目錄是記錄所有文件,子目錄名,,擴(kuò)展名屬性,,建立或刪除最后修改日期。文件開始簇號(hào)及文件長(zhǎng)度的一張 登記表. ?。?)DOS中DIR列出的內(nèi)容訓(xùn)是根據(jù)文件目錄表得到的,。 (3)文件起始簇號(hào)填在文件目錄中,,其余簇都填在FAT中上一簇的位置上。 9.物理驅(qū)動(dòng)器與邏輯驅(qū)動(dòng)器 物理驅(qū)動(dòng)器指實(shí)際安裝的驅(qū)動(dòng)器,。 邏輯驅(qū)動(dòng)器是對(duì)物理驅(qū)動(dòng)器格式化后產(chǎn)生的,。 要點(diǎn):同上。 瀏覽:552 [打印 返回 關(guān)閉] ·下一篇:[06-08-28] 挽救硬盤的10個(gè)方法(維護(hù)硬盤故障) ·上一篇:[06-08-28] 進(jìn)行電腦維修的幾個(gè)簡(jiǎn)單步驟 相關(guān)文章:[知識(shí),扇區(qū),磁道] ·◎硬盤基本知識(shí)(磁道,、扇區(qū),、柱面、磁頭數(shù),、簇,、MBR、DBR) ·◎主板電容小知識(shí) ·◎注冊(cè)表基本知識(shí) ·◎受用一生的電腦知識(shí) ·◎Linux 發(fā)行版和安裝的基本知識(shí) 分類欄目 ·硬盤 ·CPU ·主板 ·綜合 ·內(nèi)存 ·顯示器 ·鼠標(biāo)鍵盤 ·打印機(jī) 熱門標(biāo)簽 ·方法(102) ·故障(99) ·技巧(66) ·XP(61) ·病毒(60) ·所有標(biāo)簽 點(diǎn)擊排行 ·硬盤基本知識(shí).. ·如何給硬盤加.. ·硬盤拷貝三法 ·延長(zhǎng)壽命:讓硬.. ·減少硬盤出故.. 當(dāng)硬盤受到外部強(qiáng)磁體,、強(qiáng)磁場(chǎng)的影響,,或因長(zhǎng)期使用,硬盤盤片上由低級(jí)格式化劃分出來(lái)的扇區(qū)格式磁性記錄部分丟失,,從而出現(xiàn)大量“壞扇區(qū)”時(shí),,可以通過(guò)低級(jí)格式化來(lái)重新劃分“扇區(qū)”。但是前提是硬盤的盤片沒(méi)有受到物理性劃傷,。硬盤低級(jí)格式化的功用硬盤低格格式化是對(duì)硬盤最徹底的初始化方式,,經(jīng)過(guò)低格后的硬盤,原來(lái)保護(hù)的數(shù)據(jù)將全部丟失,,所以一般來(lái)說(shuō)低格硬盤是非常不可取的,,只有非常必要的時(shí)候才能低格硬盤。當(dāng)硬盤出現(xiàn)某種類型的壞道時(shí),,使用低級(jí)格式化能起到一定的緩解或者屏蔽作用,。 邏輯壞道相對(duì)比較容易解決,它指硬盤在寫入時(shí)受到意外干擾,,造成有ECC錯(cuò)誤,。從過(guò)程上講,,它是指硬盤在寫入數(shù)據(jù)的時(shí)候,會(huì)用ECC的邏輯重新組合數(shù)據(jù),,一般操作系統(tǒng)要寫入512個(gè)字節(jié),,但實(shí)際上硬盤會(huì)多寫幾十個(gè)字節(jié),而且所有的這些字節(jié)都要用ECC進(jìn)行校驗(yàn)編碼,,如果原始字節(jié)算出的ECC校正碼和讀出字節(jié)算出的ECC不同,,這樣就會(huì)產(chǎn)生ECC錯(cuò)誤,這就是所謂的邏輯壞道產(chǎn)生原因,。 物理壞道,,磁盤表面物理?yè)p壞就是硬性的,這是無(wú)法修復(fù)的,。而由于外界影響而造成數(shù)據(jù)的寫入錯(cuò)誤時(shí),,系統(tǒng)也會(huì)認(rèn)為是物理壞道,而這種物理壞道是可以使用一些硬盤工具(例如硬盤廠商提供的檢測(cè)修復(fù)軟件)來(lái)修復(fù),,此外,,對(duì)于微小的硬盤表面損傷,一些硬盤工具(例如西部數(shù)據(jù)的Data Lifeguard Tools)就可以重新定向到一個(gè)好的保留扇區(qū)來(lái)修正錯(cuò)誤,。 對(duì)于硬盤上出現(xiàn)邏輯壞道或者軟性物理壞道,,用戶可以試試使用低級(jí)格式化來(lái)達(dá)到屏蔽壞道的作用,但這里需要指出,,屏蔽壞道并不等于消除壞道了,,低格硬盤能把原來(lái)硬盤內(nèi)所有分區(qū)都刪除,但壞道卻依然存在,,屏蔽只是將壞道隱藏起來(lái),,不讓用戶在存儲(chǔ)數(shù)據(jù)時(shí)使用這些壞道,這樣能在一定程度上保證用戶數(shù)據(jù)的可靠性,,但壞道卻會(huì)隨著硬盤分區(qū),、格式化次數(shù)的增長(zhǎng)而擴(kuò)散蔓延。 1,、對(duì)扇區(qū)清零和重寫校驗(yàn)值,。低格過(guò)程中將每個(gè)扇區(qū)的所有字節(jié)全部置零,并將每個(gè)扇區(qū)的校驗(yàn)值也寫回初始值,,這樣可以將部分缺陷糾正過(guò)來(lái),。譬如,由于扇區(qū)數(shù)據(jù)與該扇區(qū)的校驗(yàn)值不對(duì)應(yīng),,通常就被報(bào)告為校驗(yàn)錯(cuò)誤(ECC Error),。如果并非由于磁介質(zhì)損傷,清零后就很有可能將扇區(qū)數(shù)據(jù)與該扇區(qū)的校驗(yàn)值重新對(duì)應(yīng)起來(lái),,而達(dá)到“修復(fù)”該扇區(qū)的功效,。這是每種低格工具和每種硬盤的低格過(guò)程最基本的操作內(nèi)容,,同時(shí)這也是為什么通過(guò)低格能“修復(fù)大量壞道”的基本原因。另外,,DM中的Zero Fill(清零)操作與IBM DFT工具中的Erase操作,,也有同樣的功效。 2,、對(duì)扇區(qū)進(jìn)行讀寫檢查,,并嘗試替換缺陷扇區(qū)。有些低格工具會(huì)對(duì)每個(gè)扇區(qū)進(jìn)行讀寫檢查,,如果發(fā)現(xiàn)在讀過(guò)程或?qū)戇^(guò)程出錯(cuò),,就認(rèn)為該扇區(qū)為缺陷扇區(qū)。然后,,調(diào)用通用的自動(dòng)替換扇區(qū)(Automatic reallocation sector)指令,,嘗試對(duì)該扇區(qū)進(jìn)行替換,,也可以達(dá)到“修復(fù)”的功效,。 3、對(duì)扇區(qū)的標(biāo)識(shí)信息重寫,。在多年以前使用的老式硬盤(如采用ST506接口的硬盤),,需要在低格過(guò)程中重寫每個(gè)扇區(qū)的標(biāo)識(shí)(ID)信息和某些保留磁道的其他一些信息,,當(dāng)時(shí)低格工具都必須有這樣的功能。但現(xiàn)在的硬盤結(jié)構(gòu)已經(jīng)大不一樣,,如果再使用多年前的工具來(lái)做低格會(huì)導(dǎo)致許多令人痛苦的意外。難怪經(jīng)常有人在痛苦地高呼:“危險(xiǎn)!切勿低格硬盤,!我的硬盤已經(jīng)毀于低格!” 4,、對(duì)所有物理扇區(qū)進(jìn)行重新編號(hào)。編號(hào)的依據(jù)是P-list中的記錄及區(qū)段分配參數(shù)(該參數(shù)決定各個(gè)磁道劃分的扇區(qū)數(shù)),經(jīng)過(guò)編號(hào)后,每個(gè)扇區(qū)都分配到一個(gè)特定的標(biāo)識(shí)信息(ID),。編號(hào)時(shí),會(huì)自動(dòng)跳過(guò)P-list中所記錄的缺陷扇區(qū),,使用戶無(wú)法訪問(wèn)到那些缺陷扇區(qū)(用戶不必在乎永遠(yuǎn)用不到的地方的好壞)。如果這個(gè)過(guò)程半途而廢,,有可能導(dǎo)致部分甚至所有扇區(qū)被報(bào)告為標(biāo)識(shí)不對(duì)(Sector ID not found, IDNF)。要特別注意的是,,這個(gè)編號(hào)過(guò)程是根據(jù)真正的物理參數(shù)來(lái)進(jìn)行的,如果某些低格工具按邏輯參數(shù)(以 16heads 63sector為最典型)來(lái)進(jìn)行低格,,是不可能進(jìn)行這樣的操作,。 5、寫磁道伺服信息,,對(duì)所有磁道進(jìn)行重新編號(hào),。有些硬盤允許將每個(gè)磁道的伺服信息重寫,并給磁道重新賦予一個(gè)編號(hào)。編號(hào)依據(jù)P-list或TS記錄來(lái)跳過(guò)缺陷磁道(defect track),使用戶無(wú)法訪問(wèn)(即永遠(yuǎn)不必使用)這些缺陷磁道,。這個(gè)操作也是根據(jù)真正的物理參數(shù)來(lái)進(jìn)行,。 6、寫狀態(tài)參數(shù),,并修改特定參數(shù),。有些硬盤會(huì)有一個(gè)狀態(tài)參數(shù),記錄著低格過(guò)程是否正常結(jié)束,,如果不是正常結(jié)束低格,,會(huì)導(dǎo)致整個(gè)硬盤拒絕讀寫操作,這個(gè)參數(shù)以富士通IDE硬盤和希捷SCSI硬盤為典型,。有些硬盤還可能根據(jù)低格過(guò)程的記錄改寫某些參數(shù),。 我們經(jīng)常使用的DM中的Low level format命令進(jìn)行的低級(jí)格式化操作,主要進(jìn)行了第1條和第3條的操作,。速度較快,,極少損壞硬盤,但修復(fù)效果不明顯,。另外在Lformat工具中,,進(jìn)行了前三項(xiàng)的操作。由于同時(shí)進(jìn)行了讀寫檢查,,操作速度較慢,,可以替換部分缺陷扇區(qū) 常見低格工具有l(wèi)format、DM及硬盤廠商們推出的各種硬盤工具等,。 匯編語(yǔ)言低格,,用Debug匯編語(yǔ)言進(jìn)行低級(jí)格式化 低級(jí)格式化硬盤能完成銷毀硬盤內(nèi)的數(shù)據(jù),所以在操作前一定要謹(jǐn)慎,。硬盤低格有許多方法,,例如直接在CMOS中對(duì)硬盤進(jìn)行低格,或者使用匯編語(yǔ)言進(jìn)行硬盤低格,。匯編是比較低級(jí)的一種編程語(yǔ)言,,它能非常方便地直接操作硬件,而且運(yùn)行效率很高,,如果軟件系統(tǒng)中需要直接操作硬件時(shí),,經(jīng)常使用的就是匯編語(yǔ)言。使用匯編也可以對(duì)硬盤進(jìn)行低級(jí)格式化,,它比DM等工具軟件顯得更為靈活,,具體應(yīng)用時(shí)就是使用debug程序,而具體操作就是在debug環(huán)境下,,調(diào)用存放在BIOS 中的低級(jí)格式化程序(CMOS中直接低格硬盤調(diào)用的也是此段低格程序),。實(shí)現(xiàn)方法通常有如下三種: (1),、直接調(diào)用BIOS ROM中的低格程序 在很多計(jì)算機(jī)的BIOS ROM中存放著低格程序,存放地址從C8005H地址開始,,具體操作如下: A:\>Debug -G C800 :0005(這時(shí)屏幕顯示信息(不同版本的BIOS顯示的信息可能不同),,回車后提示:) Current Interleave is 3 select new interleave or Return for current(這是要求用戶選擇交叉因子,按回車表示取默認(rèn)值3,,也可輸入新的交叉因子值,,硬盤的交叉因子一般是3,所以直接回車即可,。屏幕接著提示:) Are you dynamically configuring the drive-answer YN t Press“Y”to begin formatting the drive C: with interleave 03(鍵入“Y”后開始對(duì)硬盤進(jìn)行低格) Formatting ……(完成后詢問(wèn)是否處理壞磁道) Do you want to format bad track-answer YN,? 若沒(méi)有則用“N”回答。屏幕顯示: Format Successful,,system will new restart,,Insert Dos diskette indrive A: 插入系統(tǒng)盤到A驅(qū)動(dòng)器,即可進(jìn)行分區(qū),,高級(jí)格式化等操作來(lái)安裝系統(tǒng)了,。 (2)、通過(guò)調(diào)用INT 13H中斷的7號(hào)功能對(duì)硬盤進(jìn)行低格 操作如下: A:\>DEBUG -A 100 -XXXX:0100 MOV AX,,0703,;(交叉因子為3) -XXXX:0103 MOV CX,0001,;(0磁道0扇區(qū)起) -XXXX:0106 MOV DX,,0080;(C盤0磁道) -XXXX:0109 INT 13 -XXXX:010B INT 3 -XXXX:010D -G 100 這樣硬盤就被低格了,。 (3),、調(diào)用INT 13H中斷的5號(hào)功能 對(duì)硬盤調(diào)用INT 13H中斷的5號(hào)功能只低格0面0道1扇區(qū),而不必低格整個(gè)硬盤,,從而使低格在很短的時(shí)間內(nèi)完成,。具體操作如下: ADEBUG -A 100 -XXXX:0100 MOV AX,0500,;(調(diào)用5號(hào)功能) -XXXX:0103 MOV BX,,0180;(設(shè)置緩沖區(qū)地址) -XXXX:0106 MOV CX,,0001,;(0磁道1扇區(qū)起) -XXXX:0109 MOV DX,0080,;(C盤0磁道) -XXXX:010B INT 13 -XXXX:010D INT 3 -E 0180 0 0 0002,;(寫入?yún)?shù)) -G 100 DM低級(jí)格式化方法 用DM進(jìn)行低級(jí)格式化 DM的全名是Hard Disk Management Program,它能對(duì)硬盤進(jìn)行低級(jí)格式化,、校驗(yàn)等管理工作,可以提高硬盤的使用效率??偟膩?lái)說(shuō),,DM具有如下幾個(gè)功能:硬盤低級(jí)格式化、分區(qū),、高級(jí)格式化,、硬盤參數(shù)配置及其它功能。 在實(shí)際應(yīng)用時(shí),,dm工具跟普通DOS命令(如fdisk或format)一樣,,它的命令格式為:ADM [參數(shù)] 。其中的參數(shù)可取以下值: M DM軟件以手工方式進(jìn)入,,如無(wú)該參數(shù),,DM以自動(dòng)方式運(yùn)行,依次執(zhí)行INITIALIZE. PARTITIONG. PREPARAFION,。 C DM軟件以彩色方式執(zhí)行,,即運(yùn)行于彩色顯示器上。 P DM軟件以PCXT方式管理硬盤,。 A DM軟件以PCAT方式管理硬盤,。 2 DOS 2.XX版本方式。 3 DOS 3.XX版本方式,。 4 DOS 4.XX版本方式(僅DM 5.01版有此參數(shù)),。 V DM運(yùn)行于可改變簇長(zhǎng)度、根目錄項(xiàng)方式,。 在實(shí)際使用中常用以下兩種方式啟動(dòng): 1,、ADM (自動(dòng)方式。初始化硬盤時(shí)很多參數(shù)都用默認(rèn)值幾乎不要人工干預(yù)),。 2,、ADM (手動(dòng)方式。作格式化時(shí)一些參數(shù)要人工指定),。 啟動(dòng)dm工具后,,用戶就可以根據(jù)自己的需要選擇相應(yīng)的操作,由于它也是以DOS用戶界面的形式存,,所以使用起來(lái)也十分簡(jiǎn)捷,、明了。 其它低級(jí)格式化方法 除了上面介紹的兩種低格工具外,,還有許多其它低級(jí)格式化方法,。 1、CMOS中直接操作 如果主板支持,,用戶可以直接在CMOS對(duì)硬盤進(jìn)行低級(jí)格式化,,這種方法非常簡(jiǎn)單,、方便,因此如果可能的話,,筆者推薦使用這種方法進(jìn)行硬盤低格,。具體操作方法:在開機(jī)時(shí)根據(jù)系統(tǒng)提示進(jìn)入CMOS Setup(如果是Award等BIOS,會(huì)提示按DEL進(jìn)入CMOSSetup,,如果是Intel主板,,一般是按F2進(jìn)入CMOS Setup),接著在CMOS菜單內(nèi)選擇low formatted HardDisk Drive選擇,,然后根據(jù)程序提示進(jìn)行待低格硬盤,,同時(shí)回答一些程序提問(wèn)即可進(jìn)行硬盤低級(jí)格式化。 2,、lformat.com程序低格硬盤 除了dm工具外,還有一款比較常見的低格程序是lformat.exe,它是由邁拓公司推出的低級(jí)格式化硬盤工具。在DOS狀態(tài)下運(yùn)行 lformat.exe后,,程序即啟動(dòng)警告界面,。在該畫面中說(shuō)明的大概意思是,如果用戶使用這個(gè)工具時(shí),,硬盤內(nèi)所有數(shù)據(jù)將丟失,,因此推薦在運(yùn)行它之前備份必要的數(shù)據(jù),同時(shí)推薦移走所有其它硬盤,。如果用戶忘記備份數(shù)據(jù),,而希望退出該程序,則可以按除Y之外的任意鍵即可,,如果用戶確認(rèn)對(duì)硬盤進(jìn)行低格,,請(qǐng)按 “Y”鍵。 如果選擇了“Y”后,,程序?qū)⒁笥脩暨x擇硬盤或者就對(duì)當(dāng)前硬盤進(jìn)行低格,,接著,,問(wèn)答幾個(gè)提問(wèn),,即可開始硬盤低級(jí)格式化過(guò)程,。 編輯本段低格,,高格及快格的區(qū)別 類型 主要工作 特點(diǎn) 備注 低級(jí)格式化 介質(zhì)檢查;磁盤介質(zhì)測(cè)試,;劃分磁道和扇區(qū);對(duì)每個(gè)扇區(qū)進(jìn)行編號(hào)(C/H/S),;設(shè)置交叉因子。 只能在DOS環(huán)境或自寫的匯編指令下進(jìn)行,低級(jí)格式化只能整盤進(jìn)行。 高級(jí)格式化 清除數(shù)據(jù)(寫刪除標(biāo)記);檢查扇區(qū),;重新初始化引導(dǎo)信息,;初始化分區(qū)表信息; 可以在DOS和操作系統(tǒng)上進(jìn)行,,只能對(duì)分區(qū)操作,。高級(jí)格式化只是存儲(chǔ)數(shù)據(jù),但如果存在壞扇區(qū)可能會(huì)導(dǎo)致長(zhǎng)時(shí)間磁盤讀寫,。 DOS下可能有分區(qū)識(shí)別問(wèn)題,。使用Format命令格式化不會(huì)自動(dòng)修復(fù)邏輯壞道,如果發(fā)現(xiàn)有壞道,,最好使用SCANDISK或WINDOWS系統(tǒng)的磁盤檢查功能,、還有其它第三方軟件進(jìn)行修復(fù)或隱藏,邏輯壞道既可以通過(guò)磁盤檢查也可以通過(guò)低格解決,,這取決于是扇區(qū)的哪個(gè)部分出現(xiàn)了錯(cuò)誤,。 快速格式化 刪除文件分配表;不檢查扇區(qū)損壞情況,; 可以在DOS和操作系統(tǒng)上進(jìn)行,,只能對(duì)分區(qū)操作。 硬盤MBR全面分析 主板芯片和CPU收到了不符合規(guī)定的電流,,將自動(dòng)產(chǎn)生一個(gè)RESET信號(hào),,在主板沒(méi)有收到電源的Power Good信號(hào)之前,重復(fù)RESET信號(hào) BIOSJMP指令,,跳轉(zhuǎn)到真正的BIOS啟動(dòng)程序處 BIOS開始加電自檢(Power-On Self Test, POST),,若成功執(zhí)行INT 19h(SYSTEM - BOOTSTRAP LOADER) BIOS開始尋找顯卡,找到的話將執(zhí)行顯卡的BIOS,。接著顯卡初始化,,將顯示一段顯卡信息 BIOS開始執(zhí)行所有其他設(shè)備的BIOS,包括軟驅(qū),,硬盤等 BIOS顯示啟動(dòng)信息 BIOS開始額外的檢測(cè),。一般有內(nèi)存檢測(cè),如果內(nèi)存有問(wèn)題,,將顯示錯(cuò)誤消息 BIOS探測(cè)所有的硬件,,將顯示硬盤/光區(qū)信息等 BIOS給出一個(gè)已知硬件的列表 BIOS按照設(shè)置的驅(qū)動(dòng)器順序找驅(qū)動(dòng)器,,如果驅(qū)動(dòng)器存在的話繼續(xù)找啟動(dòng)扇區(qū),軟驅(qū)/硬盤的啟動(dòng)扇區(qū)都在0柱0頭1扇區(qū)(cylinder 0, head 0, sector 1) 將啟動(dòng)扇區(qū)讀到內(nèi)存0000:7c00處,,接著INT 19h開始執(zhí)行0000:7c00處代碼 如果找不到驅(qū)動(dòng)器,,系統(tǒng)顯示錯(cuò)誤信息并停止。通常是"No boot device"或"NO ROM BASIC -SYSTEM HALTED" 磁盤的啟動(dòng)扇區(qū)就是主引導(dǎo)記錄(Master Boot Record),,包括0柱0頭1扇區(qū)的512個(gè)字節(jié),,它的任務(wù)是完成BIOS到操作系統(tǒng)的交接。 MBR的大體結(jié)構(gòu): 偏移 內(nèi)容 0000 MBR程序代碼 01BE 分區(qū)表 01FE 結(jié)束標(biāo)志 分區(qū)表結(jié)構(gòu) BYTE 1 如果是引導(dǎo)分區(qū),,就是80H,,如果不是,就是00H 2-4 是該分區(qū)的起始扇區(qū)號(hào) 5 標(biāo)志字節(jié),,比如05表示擴(kuò)展分區(qū) 6-8 該分區(qū)的終止扇區(qū)號(hào) 9-12 該分區(qū)已使用的扇區(qū)數(shù) 13-16 該分區(qū)總共占用的扇區(qū)數(shù) 這是從我的硬盤上提取的MBR(硬盤是Maxtor的金鉆20G,,netfay的電腦早過(guò)時(shí)了:P),不同型號(hào)的硬盤MBR稍有不同,,不過(guò)功能都是一樣的 0000 33 C0 8E D0 BC 00 7C FB-50 07 50 1F FC BE 1B 7C 3.....|.P.P....| 0010 BF 1B 06 50 57 B9 E5 01-F3 A4 CB BE BE 07 B1 04 ...PW........... 0020 38 2C 7C 09 75 15 83 C6-10 E2 F5 CD 18 8B 14 8B 8,|.u........... 0030 EE 83 C6 10 49 74 16 38-2C 74 F6 BE 10 07 4E AC ....It.8,t....N. 0040 3C 00 74 FA BB 07 00 B4-0E CD 10 EB F2 89 46 25 <.t...........F% 0050 96 8A 46 04 B4 06 3C 0E-74 11 B4 0B 3C 0C 74 05 ..F...<.t...<.t. 0060 3A C4 75 2B 40 C6 46 25-06 75 24 BB AA 55 50 B4 :[email protected]%.u$..UP. 0070 41 CD 13 58 72 16 81 FB-55 AA 75 10 F6 C1 01 74 A..Xr...U.u....t 0080 0B 8A E0 88 56 24 C7 06-A1 06 EB 1E 88 66 04 BF ....V$.......f.. 0090 0A 00 B8 01 02 8B DC 33-C9 83 FF 05 7F 03 8B 4E .......3.......N 00A0 25 03 4E 02 CD 13 72 29-BE 59 07 81 3E FE 7D 55 %.N...r).Y..>.}U 00B0 AA 74 5A 83 EF 05 7F DA-85 F6 75 83 BE 2E 07 EB .tZ.......u..... 00C0 8A 98 91 52 99 03 46 08-13 56 0A E8 12 00 5A EB ...R..F..V....Z. 00D0 D5 4F 74 E4 33 C0 CD 13-EB B8 00 00 80 08 10 16 .Ot.3........... 00E0 56 33 F6 56 56 52 50 06-53 51 BE 10 00 56 8B F4 V3.VVRP.SQ...V.. 00F0 50 52 B8 00 42 8A 56 24-CD 13 5A 58 8D 64 10 72 PR..B.V$..ZX.d.r 0100 0A 40 75 01 42 80 C7 02-E2 F7 F8 5E C3 EB 74 B7 [email protected]......^..t. 0110 D6 C7 F8 B1 ED CE DE D0-A7 A1 A3 B0 B2 D7 B0 B3 ................ 0120 CC D0 F2 CE DE B7 A8 BC-CC D0 F8 A1 A3 00 BC D3 ................ 0130 D4 D8 B2 D9 D7 F7 CF B5-CD B3 CA B1 B3 F6 CF D6 ................ 0140 B4 ED CE F3 A1 A3 B0 B2-D7 B0 B3 CC D0 F2 CE DE ................ 0150 B7 A8 BC CC D0 F8 A1 A3-00 C8 B1 C9 D9 B2 D9 D7 ................ 0160 F7 CF B5 CD B3 00 00 00-00 00 00 00 00 00 00 00 ................ 0170 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0180 00 00 00 8B FC 1E 57 8B-F5 CB 00 00 00 00 00 00 ......W......... 0190 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 01A0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 01B0 00 00 00 00 00 2C 44 63-B5 D7 B5 D7 00 00 80 01 .....,Dc........ 01C0 01 00 0B FE 7F FD 3F 00-00 00 3F 04 7D 00 00 00 ......?...?.}... 01D0 41 FE 0C FE FF FF 7E 04-7D 00 7D 9B E5 01 00 00 A.....~.}.}..... 01E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 01F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 55 AA ..............U. 由于程序代碼從0000:7C00開始,,下面看反編譯的結(jié)果(經(jīng)過(guò)修改) 7C00 33C0 XOR AX,AX ;AX=0 7C02 8ED0 MOV SS,AX ;SS=0 7C04 BC007C MOV SP,7C00 ;SP=7C00 7C07 FB STI ;中斷允許 7C08 50 PUSH AX 7C09 07 POP ES ;ES=0 7C0A 50 PUSH AX 7C0B 1F POP DS ;DS=0 7C0C FC CLD ;字符串操作方向:從低到高 7C0D BE1B7C MOV SI,7C1B ;源地址 DS:SI=0000:7C1B 7C10 BF1B06 MOV DI,061B ;目的地址 ES:DI=0000:061B 7C13 50 PUSH AX 7C14 57 PUSH DI 7C15 B9E501 MOV CX,01E5 ;共1E5h個(gè)字節(jié) 7C18 F3 REPZ 7C19 A4 MOVSB ;將MBR從0000:7C00移動(dòng)到0000:0600 7C1A CB RETF ;跳轉(zhuǎn)到0000:061B處 PARTITION_SEARCH_LOOP: 061B BEBE07 MOV SI,07BE ;SI指向分區(qū)表的開始 061E B104 MOV CL,04 ;循環(huán)4次,硬盤最多4個(gè)主分區(qū) 0620 382C CMP [SI],CH 0622 7C09 JL ACTIVE_PARTITION_FOUND ;分區(qū)是活動(dòng)分區(qū) 0624 7515 JNZ INVALID_PARTITION_TABLE ;無(wú)效的分區(qū)表 0626 83C610 ADD SI,+10 ;每個(gè)分區(qū)占用16個(gè)字節(jié),,SI指向下一個(gè)分區(qū) 0629 E2F5 LOOP PARTITION_SEARCH_LOOP 062B CD18 INT 18 ;分區(qū)表搜索完,,無(wú)活動(dòng)分區(qū),INT 18h=DISKLESS BOOT HOOK ACTIVE_PARTITON_FOUND: 062D 8B14 MOV DX,[SI] ;下面的搜索保證只存在一個(gè)活動(dòng)分區(qū),,否則分區(qū)表無(wú)效 062F 8BEE MOV BP,SI ;找到的引導(dǎo)分區(qū)標(biāo)志和開始地址分別存入DX,BP ONLY_ONE_ACTIVE_PARTITON_SEARCH_LOOP: 0631 83C610 ADD SI,+10 0634 49 DEC CX 0635 7416 JZ GOOD_PARTITION_TABLE ;搜索完畢,,剩下的分區(qū)中無(wú)活動(dòng)分區(qū),分區(qū)表正常 0637 382C CMP [SI],CH 0639 74F6 JZ ONLY_ONE_ACTIVE_PARTITON_SEARCH_LOOP ;如果還有活動(dòng)分區(qū)則繼續(xù)向下執(zhí)行 INVALID_PARTITION_TABLE: 063B BE1007 MOV SI,0710 ;SI指向要顯示的錯(cuò)誤信息處 HANG_MACHINE_LOOP: 063E 4E DEC SI DISPLAY_ERROR_MESSAGE_LOOP: 063F AC LODSB 0640 3C00 CMP AL,00 0642 74FA JZ HANG_MACHINE_LOOP ;到字符串尾時(shí)進(jìn)入死循環(huán),,停止運(yùn)行 0644 BB0700 MOV BX,0007 0647 B40E MOV AH,0E 0649 CD10 INT 10 ;顯示錯(cuò)誤信息 DISPLAY_ERROR_MESSAGE_LOOP_ALIAS: 064B EBF2 JMP DISPLAY_ERROR_MESSAGE_LOOP GOOD_PARTITION_TABLE: 064D 894625 MOV [BP+25],AX ;tmpvar=BP+25處清零,,作為臨時(shí)變量 0650 96 XCHG SI,AX ;SI=0 0651 8A4604 MOV AL,[BP+04] ;讀分區(qū)類型入AL 0654 B406 MOV AH,06 0656 3C0E CMP AL,0E ;類型 WIN95: DOS 16-bit FAT, LBA-mapped 0658 7411 JZ TYPE_WIN95_DOS_16BIT_FAT_LBA 065A B40B MOV AH,0B 065C 3C0C CMP AL,0C ;類型 WIN95 OSR2 32-bit FAT, LBA-mapped 065E 7405 JZ TYPE_WIN95_OSR2_32BIT_FAT_LBA 0660 3AC4 CMP AL,AH ;類型 WIN95 OSR2 32-bit FAT 0662 752B JNZ TYPE_DEFAULT 0664 40 INC AX ;AX=0B0C TYPE_WIN95_OSR2_32BIT_FAT_LBA: 0665 C6462506 MOV BYTE PTR [BP+25],06 ;tmpvar=06 0669 7524 JNZ TYPE_DEFAULT ;這里有點(diǎn)問(wèn)題,這個(gè)轉(zhuǎn)移應(yīng)該肯定不成立,? TYPE_WIN95_DOS_16BIT_FAT_LBA: 066B BBAA55 MOV BX,55AA 066E 50 PUSH AX 066F B441 MOV AH,41 0671 CD13 INT 13 ;int 13h擴(kuò)展功能的檢測(cè),IBM/MS INT 13 Extensions - INSTALLATION CHECK 0673 58 POP AX 0674 7216 JB INT13H_EXTENSION_UNSUPPORTED ;CF=1 - 不支持int 13h擴(kuò)展功能 0676 81FB55AA CMP BX,AA55 ;BX不為AA55 - 不支持int 13h擴(kuò)展功能 067A 7510 JNZ INT13H_EXTENSION_UNSUPPORTED 067C F6C101 TEST CL,01 ;CL不為1 - 不支持int 13h擴(kuò)展功能 067F 740B JZ INT13H_EXTENSION_UNSUPPORTED 0681 8AE0 MOV AH,AL ;AH=0E 0683 885624 MOV [BP+24],DL ;tmpvar=DL,引導(dǎo)分區(qū)標(biāo)志 0686 C706A106EB1E MOV WORD PTR [06A1],1EEB ;改06A1處指令為PUSH DS; JMP NEW_LOCATION_1 INT13H_EXTENSION_UNSUPPORTED: 068C 886604 MOV [BP+04],AH ;如果支持的話置分區(qū)類型為0E(類型 WIN95: DOS 16-bit FAT, LBA-mapped) ;否則為06(類型 DOS 3.31+ 16-bit FAT over 32M) TYPE_DEFAULT: 068F BF0A00 MOV DI,000A READ_SECTOR_LOOP: 0692 B80102 MOV AX,0201 0695 8BDC MOV BX,SP ;BX設(shè)置為7C00 0697 33C9 XOR CX,CX ;CX=0 0699 83FF05 CMP DI,+05 069C 7F03 JG NEW_LOCATION_0 069E 8B4E25 MOV CX,[BP+25] NEW_LOCATION_0: 06A1 034E02 ADD CX,[BP+02] 06A4 CD13 INT 13 ;將活動(dòng)分區(qū)的起始扇區(qū)讀到0000:7C00 NEW_LOCATION_1: 06A6 7229 JB READ_SECTOR_ERROR ;CF=1 - 錯(cuò)誤 06A8 BE5907 MOV SI,0759 06AB 813EFE7D55AA CMP WORD PTR [7DFE],AA55 ;扇區(qū)結(jié)束標(biāo)志是否正確,? 06B1 745A JZ READ_SECTOR_SUCCEEDED ;正確 06B3 83EF05 SUB DI,+05 ;DI=DI-5 06B6 7FDA JG READ_SECTOR_LOOP 06B8 85F6 TEST SI,SI 06BA 7583 JNZ DISPLAY_ERROR_MESSAGE_LOOP: ;顯示錯(cuò)誤信息:缺少操作系統(tǒng) 06BC BE2E07 MOV SI,072E 06BF EB8A JMP DISPLAY_ERROR_MESSAGE_LOOP_ALIAS ;顯示錯(cuò)誤信息:加載操作系統(tǒng)時(shí)發(fā)生錯(cuò)誤,。 070D EB74 JMP CONTINUE_KOAD_OS 0783 8BFC MOV DI,SP ;DI=7C00 0785 1E PUSH DS 0786 57 PUSH DI 0787 8BF5 MOV SI,BP 0789 CB RETF ;轉(zhuǎn)到執(zhí)行0000:7C00處的語(yǔ)句,即操作系統(tǒng)的引導(dǎo)程序 硬盤主引導(dǎo)記錄(MBR)及其結(jié)構(gòu) 硬盤的0柱面,、0磁頭,、1扇區(qū)稱為主引導(dǎo)扇區(qū),F(xiàn)DISK程序?qū)懙皆撋葏^(qū)的內(nèi)容稱為主引導(dǎo)記錄(MBR),。該記錄占用512個(gè)字節(jié),,它用于硬盤啟動(dòng)時(shí)將系統(tǒng)控制權(quán)交給用戶指定的,并在分區(qū)表中登記了的某個(gè)操作系統(tǒng)區(qū),。 1.MBR的讀取 硬盤的引導(dǎo)記錄(MBR)是不屬于任何一個(gè)操作系統(tǒng),,也不能用操作系統(tǒng)提供的磁盤操作命令來(lái)讀取它,。但我們可以用ROM-BIOS中提供的INT13H的2號(hào)功能來(lái)讀出該扇區(qū)的內(nèi)容,也可用軟件工具Norton8.0中的DISKEDIT.EXE來(lái)讀取,。 用INT13H的讀磁盤扇區(qū)功能的調(diào)用參數(shù)如下: 入口參數(shù):AH=2 (指定功能號(hào)) AL=要讀取的扇區(qū)數(shù) DL=磁盤號(hào)(0,、1-軟盤;80,、81-硬盤) DH=磁頭號(hào) CL高2位+CH=柱面號(hào) CL低6位=扇區(qū)號(hào) CS:BX=存放讀取數(shù)據(jù)的內(nèi)存緩沖地址 出口參數(shù):CS:BX=讀取數(shù)據(jù)存放地址 錯(cuò)誤信息:如果出錯(cuò)CF=1 AH=錯(cuò)誤代碼 用DEBUG讀取位于硬盤0柱面,、0磁頭、1扇區(qū)的操作如下: A>DEBUG -A 100 XXXX:XXXX MOV AX,0201 (用功能號(hào)2讀1個(gè)扇區(qū)) XXXX:XXXX MOV BX,1000 (把讀出的數(shù)據(jù)放入緩沖區(qū)的地址為CS:1000) XXXX:XXXX MOV CX,0001 (讀0柱面,,1扇區(qū)) XXXX:XXXX MOV DX,0080 (指定第一物理盤的0磁頭) XXXX:XXXX INT 13 XXXX:XXXX INT 3 XXXX:XXXX (按回車鍵) -G=100 (執(zhí)行以上程序段) -D 1000 11FF (顯示512字節(jié)的MBR內(nèi)容) 2.MBR的組成 一個(gè)扇區(qū)的硬盤主引導(dǎo)記錄MBR由如圖6-15所示的4個(gè)部分組成,。 ·主引導(dǎo)程序(偏移地址0000H--0088H),它負(fù)責(zé)從活動(dòng)分區(qū)中裝載,,并運(yùn)行系統(tǒng)引導(dǎo)程序,。 ·出錯(cuò)信息數(shù)據(jù)區(qū),偏移地址0089H--00E1H為出錯(cuò)信息,,00E2H--01BDH全為0字節(jié),。 ·分區(qū)表(DPT,Disk Partition Table)含4個(gè)分區(qū)項(xiàng),偏移地址01BEH--01FDH,每個(gè)分區(qū)表項(xiàng)長(zhǎng)16個(gè)字節(jié),,共64字節(jié)為分區(qū)項(xiàng)1,、分區(qū)項(xiàng)2、分區(qū)項(xiàng)3,、分區(qū)項(xiàng)4,。 ·結(jié)束標(biāo)志字,偏移地址01FE--01FF的2個(gè)字節(jié)值為結(jié)束標(biāo)志55AA,如果該標(biāo)志錯(cuò)誤系統(tǒng)就不能啟動(dòng),。
圖6-15 MBR的組成結(jié)構(gòu)圖
4.MBR的主要功能及工作流程
圖具有4個(gè)邏輯盤的分區(qū)鏈表示意圖 需要指出的是,在以前的磁盤讀取技術(shù)水平下,,低級(jí)格式化是一種損耗性操作,,其對(duì)硬盤壽命有一定的負(fù)面影響。最近一兩年出的硬盤進(jìn)行低級(jí)格式化影響要小的多,,因?yàn)樗皇俏锢砩系牟僮?。因此,許多硬盤廠商均建議用戶不到萬(wàn)不得已,,不可“妄”使此招,。當(dāng)硬盤受到外部強(qiáng)磁體、強(qiáng)磁場(chǎng)的影響,,或因長(zhǎng)期使用,,硬盤盤片上由低級(jí)格式化劃分出來(lái)的扇區(qū)格式磁性記錄部分丟失,從而出現(xiàn)大量“壞扇區(qū)”時(shí),可以通過(guò)低級(jí)格式化來(lái)重新劃分“扇區(qū)”,。但是前提是硬盤的盤片沒(méi)有受到物理性劃傷,。 硬盤低級(jí)格式化的功用硬盤低格格式化是對(duì)硬盤最徹底的初始化方式,經(jīng)過(guò)低格后的硬盤,,原來(lái)保護(hù)的數(shù)據(jù)將全部丟失,,所以一般來(lái)說(shuō)低格硬盤是非常不可取的,只有非常必要的時(shí)候才能低格硬盤,。而這個(gè)所謂的必要時(shí)候有兩種,,一是硬盤出廠前,硬盤廠會(huì)對(duì)硬盤進(jìn)行一次低級(jí)格式化,;另一個(gè)是當(dāng)硬盤出現(xiàn)某種類型的壞道時(shí),,使用低級(jí)格式化能起到一定的緩解或者屏蔽作用。 對(duì)于第一種情況,,這里不用多說(shuō)了,,因?yàn)橛脖P出廠前的低格工作只有硬盤工程師們才會(huì)接觸到,對(duì)于普通用戶而言,,根本無(wú)須考慮這方面的事情,。至于第二種情況,是什么類型的壞道時(shí)才需要低格呢,?在說(shuō)明這個(gè)關(guān)鍵性問(wèn)題前,,先來(lái)看看硬盤壞道的類型。 編輯本段產(chǎn)生原因及作用 邏輯壞道 總的來(lái)說(shuō),,壞道可以分為物理壞道和邏輯壞道,。其中邏輯壞道相對(duì)比較容易解決,它指硬盤在寫入時(shí)受到意外干擾,,造成有ECC錯(cuò)誤,。從過(guò)程上講,它是指硬盤在寫入數(shù)據(jù)的時(shí)候,,會(huì)用ECC的邏輯重新組合數(shù)據(jù),,一般操作系統(tǒng)要寫入512個(gè)字節(jié),但實(shí)際上硬盤會(huì)多寫幾十個(gè)字節(jié),,而且所有的這些字節(jié)都要用ECC進(jìn)行校驗(yàn)編碼,,如果原始字節(jié)算出的ECC校正碼和讀出字節(jié)算出的ECC不同,這樣就會(huì)產(chǎn)生ECC錯(cuò)誤,,這就是所謂的邏輯壞道產(chǎn)生原因,。 物理壞道 至于物理壞道,它對(duì)硬盤的損壞更具致命性,,它也有軟性和硬性物理壞道的區(qū)別,,磁盤表面物理?yè)p壞就是硬性的,這是無(wú)法修復(fù)的。而由于外界影響而造成數(shù)據(jù)的寫入錯(cuò)誤時(shí),,系統(tǒng)也會(huì)認(rèn)為是物理壞道,,而這種物理壞道是可以使用一些硬盤工具(例如硬盤廠商提供的檢測(cè)修復(fù)軟件)來(lái)修復(fù),此外,,對(duì)于微小的硬盤表面損傷,,一些硬盤工具(例如西部數(shù)據(jù)的Data Lifeguard Tools)就可以重新定向到一個(gè)好的保留扇區(qū)來(lái)修正錯(cuò)誤。 對(duì)于這些壞道類型,,硬性的物理壞道肯定是無(wú)法修復(fù)的,它是對(duì)硬盤表面的一種最直接的損壞,,所以即使再低格或者使用硬盤工具也無(wú)法修復(fù)(除非是非常微小的損壞,,部分工具可以將這部份壞道保留不用以此達(dá)到解決目的)。 低格的作用 對(duì)于硬盤上出現(xiàn)邏輯壞道或者軟性物理壞道,,用戶可以試試使用低級(jí)格式化來(lái)達(dá)到屏蔽壞道的作用,,但這里需要指出,屏蔽壞道并不等于消除壞道了,,低格硬盤能把原來(lái)硬盤內(nèi)所有分區(qū)都刪除,,但壞道卻依然存在,屏蔽只是將壞道隱藏起來(lái),,不讓用戶在存儲(chǔ)數(shù)據(jù)時(shí)使用這些壞道,,這樣能在一定程度上保證用戶數(shù)據(jù)的可靠性,但壞道卻會(huì)隨著硬盤分區(qū),、格式化次數(shù)的增長(zhǎng)而擴(kuò)散蔓延,。 所以筆者并不推薦用戶對(duì)硬盤進(jìn)行低格,如果硬盤在保修期內(nèi)最好去保修或者找經(jīng)銷商換一塊,,這可以說(shuō)是最佳解決方案,,也是最徹底的解決方案了。如果硬盤過(guò)了保修期不讓換,,那可以試試低格硬盤,,以防止將數(shù)據(jù)存儲(chǔ)到壞道導(dǎo)致數(shù)據(jù)損失。 編輯本段方法 工具低格 對(duì)于如何進(jìn)行硬盤低格,,一般來(lái)說(shuō)是使用低格工具來(lái)操作,,這個(gè)將在下面的章節(jié)中詳細(xì)介紹,這里再說(shuō)一些相關(guān)話題,。即低格工具跟硬盤檢測(cè)工具是有著本質(zhì)的區(qū)別,,低格工具就是對(duì)硬盤進(jìn)行低格的作用,而硬盤檢測(cè)工具一般來(lái)說(shuō)是硬盤廠商推出的用來(lái)檢測(cè)硬盤,,及早發(fā)現(xiàn)硬盤錯(cuò)誤,,以提醒用戶備份重要數(shù)據(jù)或者檢修硬盤用的,它不是用于低格硬盤。 而最常見的莫過(guò)于使用一些工具軟件來(lái)對(duì)硬盤進(jìn)行低格,,常見低格工具有lformat,、DM及硬盤廠商們推出的各種硬盤工具等。 匯編語(yǔ)言低格 用Debug匯編語(yǔ)言進(jìn)行低級(jí)格式化 低級(jí)格式化硬盤能完成銷毀硬盤內(nèi)的數(shù)據(jù),,所以在操作前一定要謹(jǐn)慎,。硬盤低格有許多方法,例如直接在CMOS中對(duì)硬盤進(jìn)行低格,,或者使用匯編語(yǔ)言進(jìn)行硬盤低格,。匯編是比較低級(jí)的一種編程語(yǔ)言,它能非常方便地直接操作硬件,,而且運(yùn)行效率很高,,如果軟件系統(tǒng)中需要直接操作硬件時(shí),經(jīng)常使用的就是匯編語(yǔ)言,。使用匯編也可以對(duì)硬盤進(jìn)行低級(jí)格式化,,它比DM等工具軟件顯得更為靈活,具體應(yīng)用時(shí)就是使用debug程序,,而具體操作就是在debug環(huán)境下,,調(diào)用存放在BIOS 中的低級(jí)格式化程序(CMOS中直接低格硬盤調(diào)用的也是此段低格程序)。實(shí)現(xiàn)方法通常有如下三種: (1),、直接調(diào)用BIOS ROM中的低格程序 在很多計(jì)算機(jī)的BIOS ROM中存放著低格程序,,存放地址從C8005H地址開始,具體操作如下: A:\>Debug -G C800 :0005(這時(shí)屏幕顯示信息(不同版本的BIOS顯示的信息可能不同),,回車后提示:) Current Interleave is 3 select new interleave or Return for current(這是要求用戶選擇交叉因子,,按回車表示取默認(rèn)值3,也可輸入新的交叉因子值,,硬盤的交叉因子一般是3,,所以直接回車即可。屏幕接著提示:) Are you dynamically configuring the drive-answer YN t Press“Y”to begin formatting the drive C: with interleave 03(鍵入“Y”后開始對(duì)硬盤進(jìn)行低格) Formatting ……(完成后詢問(wèn)是否處理壞磁道) Do you want to format bad track-answer YN,? 若沒(méi)有則用“N”回答,。屏幕顯示: Format Successful,system will new restart,,Insert Dos diskette indrive A: 插入系統(tǒng)盤到A驅(qū)動(dòng)器,,即可進(jìn)行分區(qū),高級(jí)格式化等操作來(lái)安裝系統(tǒng)了,。 (2),、通過(guò)調(diào)用INT 13H中斷的7號(hào)功能對(duì)硬盤進(jìn)行低格 操作如下: A:\>DEBUG -A 100 -XXXX:0100 MOV AX,0703,;(交叉因子為3) -XXXX:0103 MOV CX,,0001,;(0磁道0扇區(qū)起) -XXXX:0106 MOV DX,0080,;(C盤0磁道) -XXXX:0109 INT 13 -XXXX:010B INT 3 -XXXX:010D -G 100 這樣硬盤就被低格了,。 (3)、調(diào)用INT 13H中斷的5號(hào)功能 對(duì)硬盤調(diào)用INT 13H中斷的5號(hào)功能只低格0面0道1扇區(qū),,而不必低格整個(gè)硬盤,,從而使低格在很短的時(shí)間內(nèi)完成。具體操作如下: ADEBUG -A 100 -XXXX:0100 MOV AX,,0500,;(調(diào)用5號(hào)功能) -XXXX:0103 MOV BX,0180,;(設(shè)置緩沖區(qū)地址) -XXXX:0106 MOV CX,,0001;(0磁道1扇區(qū)起) -XXXX:0109 MOV DX,,0080,;(C盤0磁道) -XXXX:010B INT 13 -XXXX:010D INT 3 -E 0180 0 0 0002,;(寫入?yún)?shù)) -G 100 DM低級(jí)格式化方法 用DM進(jìn)行低級(jí)格式化 DM的全名是Hard Disk Management Program,,它能對(duì)硬盤進(jìn)行低級(jí)格式化、校驗(yàn)等管理工作,,可以提高硬盤的使用效率,。總的來(lái)說(shuō),,DM具有如下幾個(gè)功能:硬盤低級(jí)格式化,、分區(qū)、高級(jí)格式化,、硬盤參數(shù)配置及其它功能,。 在實(shí)際應(yīng)用時(shí),dm工具跟普通DOS命令(如fdisk或format)一樣,,它的命令格式為:ADM [參數(shù)] ,。其中的參數(shù)可取以下值: M DM軟件以手工方式進(jìn)入,如無(wú)該參數(shù),,DM以自動(dòng)方式運(yùn)行,,依次執(zhí)行INITIALIZE. PARTITIONG. PREPARAFION。 C DM軟件以彩色方式執(zhí)行,,即運(yùn)行于彩色顯示器上,。 P DM軟件以PCXT方式管理硬盤。 A DM軟件以PCAT方式管理硬盤,。 2 DOS 2.XX版本方式,。 3 DOS 3.XX版本方式,。 4 DOS 4.XX版本方式(僅DM 5.01版有此參數(shù))。 V DM運(yùn)行于可改變簇長(zhǎng)度,、根目錄項(xiàng)方式,。 在實(shí)際使用中常用以下兩種方式啟動(dòng): 1、ADM (自動(dòng)方式,。初始化硬盤時(shí)很多參數(shù)都用默認(rèn)值幾乎不要人工干預(yù)),。 2、ADM (手動(dòng)方式,。作格式化時(shí)一些參數(shù)要人工指定),。 啟動(dòng)dm工具后,用戶就可以根據(jù)自己的需要選擇相應(yīng)的操作,,由于它也是以DOS用戶界面的形式存,,所以使用起來(lái)也十分簡(jiǎn)捷、明了,。 其它低級(jí)格式化方法 除了上面介紹的兩種低格工具外,,還有許多其它低級(jí)格式化方法。 1,、CMOS中直接操作 如果主板支持,,用戶可以直接在CMOS對(duì)硬盤進(jìn)行低級(jí)格式化,這種方法非常簡(jiǎn)單,、方便,,因此如果可能的話,筆者推薦使用這種方法進(jìn)行硬盤低格,。具體操作方法:在開機(jī)時(shí)根據(jù)系統(tǒng)提示進(jìn)入CMOS Setup(如果是Award等BIOS,,會(huì)提示按DEL進(jìn)入CMOSSetup,如果是Intel主板,,一般是按F2進(jìn)入CMOS Setup),,接著在CMOS菜單內(nèi)選擇low formatted HardDisk Drive選擇,然后根據(jù)程序提示進(jìn)行待低格硬盤,,同時(shí)回答一些程序提問(wèn)即可進(jìn)行硬盤低級(jí)格式化,。 2、lformat.com程序低格硬盤 除了dm工具外,,還有一款比較常見的低格程序是lformat.exe,,它是由邁拓公司推出的低級(jí)格式化硬盤工具。在DOS狀態(tài)下運(yùn)行 lformat.exe后,,程序即啟動(dòng)警告界面,。在該畫面中說(shuō)明的大概意思是,如果用戶使用這個(gè)工具時(shí),,硬盤內(nèi)所有數(shù)據(jù)將丟失,,因此推薦在運(yùn)行它之前備份必要的數(shù)據(jù),,同時(shí)推薦移走所有其它硬盤。如果用戶忘記備份數(shù)據(jù),,而希望退出該程序,,則可以按除Y之外的任意鍵即可,如果用戶確認(rèn)對(duì)硬盤進(jìn)行低格,,請(qǐng)按 “Y”鍵,。 如果選擇了“Y”后,程序?qū)⒁笥脩暨x擇硬盤或者就對(duì)當(dāng)前硬盤進(jìn)行低格,,接著,,問(wèn)答幾個(gè)提問(wèn),即可開始硬盤低級(jí)格式化過(guò)程,。 編輯本段低格,,高格及快格的區(qū)別 類型 主要工作 特點(diǎn) 備注 低級(jí)格式化 介質(zhì)檢查;磁盤介質(zhì)測(cè)試,;劃分磁道和扇區(qū),;對(duì)每個(gè)扇區(qū)進(jìn)行編號(hào)(C/H/S);設(shè)置交叉因子,。 只能在DOS環(huán)境或自寫的匯編指令下進(jìn)行,,低級(jí)格式化只能整盤進(jìn)行,現(xiàn)在硬盤出廠都是經(jīng)過(guò)低格的,,實(shí)際使用不到萬(wàn)不得已不要使用低格,。 低級(jí)格式化對(duì)硬盤有損傷,,如果硬盤已有物理壞道,,則低級(jí)格式化會(huì)更加損傷硬盤,加快報(bào)廢,。低格的時(shí)間漫長(zhǎng),,比如現(xiàn)在320G硬盤低格可能需要20小時(shí),或更多,。 高級(jí)格式化 清除數(shù)據(jù)(寫刪除標(biāo)記),;檢查扇區(qū);重新初始化引導(dǎo)信息,;初始化分區(qū)表信息,; 可以在DOS和操作系統(tǒng)上進(jìn)行,只能對(duì)分區(qū)操作,。高級(jí)格式化只是存儲(chǔ)數(shù)據(jù),,但如果存在壞扇區(qū)可能會(huì)導(dǎo)致長(zhǎng)時(shí)間磁盤讀寫。 DOS下可能有分區(qū)識(shí)別問(wèn)題,。使用Format命令格式化不會(huì)自動(dòng)修復(fù)邏輯壞道,,如果發(fā)現(xiàn)有壞道,,最好使用SCANDISK或WINDOWS系統(tǒng)的磁盤檢查功能、還有其它第三方軟件進(jìn)行修復(fù)或隱藏,,邏輯壞道既可以通過(guò)磁盤檢查也可以通過(guò)低格解決,,這取決于是扇區(qū)的哪個(gè)部分出現(xiàn)了錯(cuò)誤。 快速格式化 刪除文件分配表,;不檢查扇區(qū)損壞情況,; 可以在DOS和操作系統(tǒng)上進(jìn)行,只能對(duì)分區(qū)操作,??焖俑袷交仓皇谴鎯?chǔ)數(shù)據(jù) DOS下可能有分區(qū)識(shí)別問(wèn)題。另外,,似乎Linux系統(tǒng)沒(méi)有快速格式化命令,。 |
|
來(lái)自: 動(dòng)靜極致 > 《計(jì)算機(jī)》