dos下c语言读取扇区的函数,C语言编程读取主导扇区.doc

C语言编程读取主导扇区

备份硬盘主引导扇区程序 [首页][目录] 用FDISK对硬盘进行分区时,它在硬盘的0面0道1扇区生成一个包含分区信息表、主引导程序的主引导记录,其作用是当系统加电或复位时,若从硬盘自举,ROMBIOS就会把硬盘该扇区的内容读到内存的0000:7C00处,并执行主引导程序,把活动分区的操作系统引导到内存。目前,计算机病毒已逾千种,它们以各种方式威胁着计算机用户,其中有一类计算机病毒专门攻击计算机硬盘的主引导记录。如果在计算机无病毒污染时,把主引导记录读出来,写入一个数据文件,保存起来,一旦计算机受到这类病毒的侵袭,就可以用以前保存的主引导记录覆盖0面0道1扇区,消除病毒,这不失为一种有效的防病毒手段。二、程序设计TURBO C可以方便地调用汇编子程序,也可以用inline语句直接嵌入机器码,其函数及过程完备,代码质量高。作者用TURBO C做为编程语言,编写了备份硬盘主引导扇区程序,它既可以将硬盘的主引导记录写到文件中,又可以将文件的主引导记录备份写到硬盘的0面0道1扇区。该程序设计的关键点是:如何读写硬盘的主引导记录,我们可以使用BIOS磁盘读写中断13H来完成这项功能,在该程序中由ProcessPhysicalSector()来完成,它利用了C语言的inline汇编功能,直接将汇编语句嵌入C程序,它可以根据所给参数的不同,执行读/写磁盘指定扇区的功能,这是一个通用函数,可以移植到其它程序中使用。三、程序的使用方法在DOS系统提示符下执行: HMR 当取“/R”开关时,HMR执行读硬盘主引导记录的功能,可把硬盘上的主引导记录写到MRECORD.SAV的文件中;当取“/W”开关时,HMR执行写硬盘主引导记录的功能,可以根据提示把文件MRECORD.SAV中存储的内容写到硬盘的0面0柱1扇区。四、源程序清单/********************************************************//* 程序名称: HMR.C 1.50 *//* 作 者: 董占山 *//* 完成日期: 1990,1995 *//* 用 途: 读/写硬盘的主引导记录 *//* 编译方法: 用下列命令编译连接可以得到HMR.COM: *//* tcc -mt hmr *//* tlink c:\tc\lib\c0t+hmr,hmr,,c:\tc\lib\cs\lib /t *//********************************************************/#include #include char *MBRF = "C:\\MRECORD.SAV";char mp[512];int i;FILE *f1;/* 执行读写指定磁盘物理扇区的信息 */void ProcessPhysicalSector(OperateType,DriveType,HeadNo,StartCyl,StartSec,SectorNumber,p)unsigned char OperateType,DriveType,HeadNo,StartCyl,StartSec,SectorNumber;char *p;{ asm push es asm push ds asm pop es asm mov bx,p /* 缓冲区地址 */ asm mov ch,StartCyl /* 开始柱体数 */ asm mov cl,StartSec /* 开始扇区数 */ asm mov dh,HeadNo /* 头数 */ asm mov dl,DriveType /* 驱动器号,0=A,1=B,80=C,81=D */ asm mov ah,OperateType /* 操作类型 */ asm mov al,SectorNumber /* 扇区数 */ asm int 0x13 asm pop es};/* 回答是否的函数 */int YesNo(s

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值