Bài tập c: cách Đọc boot sector, khái quát về fat

Mình sẵn sàng làm bài xích tập C về kiểu cách gọi bootsector của đĩa rồi lưu vào file, các bạn có thể giúp mình được ko, mình cũng không biết rõ về đặc điểm này...thanks trước nha!

Bạn đang xem: Bài tập c: cách Đọc boot sector, khái quát về fat

*
*
Trả lời cùng với trích dẫn
*

*
Thành viên sức nóng tình
*

Xem thêm: Hướng Dẫn Sử Dụng Dialux Evo 8.1, Hướng Dẫn Sử Dụng Phần Mềm Dialux Evo:

*
Ngulặng phiên bản được gửi vày vodinh90
*

Mình sẵn sàng làm bài xích tập C về phong thái hiểu bootsector của đĩa rồi lưu vào tệp tin, những bạn cũng có thể góp mình được ko, tôi cũng không biết rõ về tính năng này...thanks trước nha!
Hồi tới trường, mình cũng đã làm về sự việc này, nhưng code bằng pascal, chúng ta tham khảo nhé, cả read cùng write đó.
unitdrvparam;interfaceusesDos;typeControlPackage=recordNumSecStart:longint;NumSecRead:word;Address:^longint;end;Vec=array<0..511>ofbyte;DiskParam=recordDrive:byte;SectorSize,EmptySector,FATSize:word;ClustSize:byte;ClusterEnd,EntryNumber:Word;DataStarSector,StarSectorInRoot:Word;end;procedureReadDriveParam(DRV:char;varDsk:DiskParam);procedureReadSecLogic(Start:longint;NumRead:word;Drives:byte);procedureWriteSecLogic(Start:longint;NumRead:word;Drives:byte);varCtrlPack:ControlPackage;b:Vec;implementationprocedureReadDriveParam(DRV:char;varDsk:DiskParam);varRegist:Registers;beginDsk.Drive:=Ord(DRV)-Ord("A")+1;withregistdobeginDl:=Dsk.Drive;Ah:=$32;intr($21,regist);Dsk.SectorSize:=memW;Dsk.ClustSize:=mem+1;Dsk.ClusterEnd:=memW;Dsk.EmptySector:=memW;Dsk.FATsize:=memW;Dsk.EntryNumber:=memW;Dsk.DataStarSector:=memW;Dsk.StarSectorInRoot:=memW;end;end;procedureReadSecLogic(Start:longint;NumRead:word;Drives:byte);vartemp:Word;drive:byte;begindrive:=Drives-1;ifDrive>=2thenbeginCtrlPack.NumSecStart:=Start;CtrlPaông xã.NumSecRead:=NumRead;CtrlPack.Address:=ptr(seg(b),ofs(b));asmmoval,Drivemovcx,-1movdx,0leabx,wordend;endelsebegintemp:=Start;asmmoval,Drivemovcx,NumReadmovdx,Templeabx,bend;end;asmint25hpopfend;end;procedureWriteSecLogic(Start:longint;NumRead:word;Drives:byte);vartemp:Word;drive:byte;begindrive:=Drives-1;ifDrive>=2thenbeginCtrlPaông xã.NumSecStart:=Start;CtrlPack.NumSecRead:=NumRead;CtrlPaông chồng.Address:=ptr(seg(b),ofs(b));asmmoval,Drivemovcx,-1movdx,0leabx,wordint26hpopfend;endelsebegintemp:=Start;asmmoval,Drivemovcx,NumReadmovdx,Templeabx,bint26hpopfend;end;end;end.