标题:debug备份恢复MBR/DBR   出处:Felix021 时间:Mon, 01 Oct 2007 23:28:49 +0000 作者:felix021 地址:https://www.felix021.com/blog/read.php?342 内容: debug备份恢复MBR/DBR C:盘MBR的备份 步骤1:MBR读取程序 A>DEBUG -A 100 (汇编一段小程序) XXXX:0100 MOV AX, 0201 (AL=要读的扇区数) XXXX:0103 MOV BX, 1000 (ES:BX=缓冲区地址) XXXX:0106 MOV CX, 0001 (柱面号=CL高2位+CH,扇区号=CL低6位) XXXX:0109 MOV DX, 0080 (DH=磁头,DL=0、1软盘,80、81硬盘) XXXX:010C INT 13 ;;;;;;;;调用磁盘BIOS服务中断 XXXX:010E INT 3 (程序结束) XXXX:010F -G=100 (将MBR记录读入1000H开始的内存中) -D 11BE 11FF (显示分区表数据) 步骤2:保存C盘MBR -M 1000 11FF 100 (将MBR移至100H处) -RCX ;;;;;;;;修改寄存器CX的值 :200 (保存200H=512字节) -N MBR.DAT -W (以MBR.DAT为文件名存盘) 2)C:盘DBR的备份 步骤1:DBR读取程序 A> DEBUG -A 100 (汇编一段小程序) XXXX:0100 MOV AX, 0201 (AL=要读的扇区数) XXXX:0103 MOV BX, 1000 (ES:BX=缓冲区地址) XXXX:0106 MOV CX, 0001 (柱面号=CL高2位+CH,扇区号=CL低6位) XXXX:0109 MOV DX, 0180 (DH=磁头,DL=0、1软盘,80、81硬盘) XXXX:010C INT 13 ;;;;;;;;调用磁盘BIOS服务中断 XXXX:010E INT 3 (程序结束) XXXX:010F -G=100 (将MBR记录读入1000H开始的内存中) 步骤2:保存C盘DBR -M 100 11FF 100 (将MBR移至100H处) -RCX :200 (保存200H=512字节) -N DBR.BAT -W (以DBR.DAT为文件名存盘) 3)C:盘MBR的恢复 A>DEBUG -A 100 (开始汇编MBR写入程序) XXXX:0100 MOV AH,3D XXXX:0102 LEA DX,[0127](指向文件名“MBR.DAT) XXXX:0106 INT 21 (打开文件) ;;;;;;;;打开的文件句柄在AX中, XXXX:0108 MOV BX,AX ;;;;;;;;为了读文件,BX中放文件句柄 XXXX:010A MOV CX,0200 ;;;;;;;;读入字节数 XXXX:010D MOV DX,1000 Prox2C3F ;;;;;;;;读取文件DOS服务中断 XXXX:0116 INT 21 (读文件内容至1000H开始的内存中) XXXX:0110 MOV AH,3E ;;;;;;;;关闭文件的中断服务号 XXXX:0116 INT 21 (关闭文件) XXXX:0118 MOV AX, 0301 ;;;;;;;;AH中断服务号,AL待写的扇区数 XXXX;011B MOV BX,1000 ;;;;;;;;数据源地址 XXXX:011E MOV CX,0001 ;;;;;;;;待写的柱面号 XXXX:0121 MOV DX,0080 ;;;;;;;;DH=磁头,DL=0、1软盘,80、81硬盘 XXXX:0124 INT 13 (将内存1000H开始的MBR写入硬盘) XXXX:0126 RET (程序结束) ;;;;;;;;子程序返回 XXXX:0127 DB 'MBR.DAT' (定义MBR的文件名) XXXX:012F DB 0 XXXX:0130 -R CX :30 -N WMBR.COM (将该程序段取名为WMBR.COM) -W ;;;;;;;;;;;;存盘 -Q ;;;;;;;;;;;;退出debug到DOS C>_ ============================ 建议用BootIT NG 它可以管理多个系统,打破传统的分区概念,突破4个主分区的限制,可以随意的增减系统及系统分区。并且使各个系统相对独立。 Generated by Bo-blog 2.1.0