|
发表于 2009-12-13 11:18:05
|
显示全部楼层
读取硬盘绝对零扇区(MBR)
C:>DEBUG
-a 100 ' 从偏移100H开始输入汇编代码
XXXX:0100 mov ax, 0201 ' int 13H 参数:读取扇区,读一个扇区
XXXX:xxxx mov bx, 1000 ' 读出的数据存入偏移为 1000H 开始的地址
XXXX:xxxx mov cx, 0001 ' int 13H 参数:读取零道、1扇区
XXXX:xxxx mov dx, 0080 ' int 13H 参数:读取零柱面,硬盘(80H为第一硬盘)
XXXX:xxxx int 13 ' 调用DOS中断13H
XXXX:xxxx int 20 ' 调用DOS中断20H(结束运行)
-g=100 ' 运行偏移100H开始的代码
之后,第一硬盘的绝对0扇区的数据就存入了偏移量为1000H的地址中了
(2)写入软盘
续(1),MBR数据读入1000H地址后,(仍然在DEBUG环境中)
-n a:mbr.dat ' 命名文件为A盘的MBR.DAT
-r bx ' 写入的字节数量由BX:CX指定
:0
-r cx ' 修改寄存器CX的值,指定写入的字节数量
:200 ' 准备写入512字节(200H)
-w 1000 ' 将偏移量为1000H开始的数据写入文件
-q ' 退出DEBUG环境
C:>
(3)从软盘读入MBR数据
C:>DEBUG
-n a:mbr.dat ' 指定A盘的文件MBR.DAT
-l 1000 ' 将数据读入到偏移量为1000H开始的区域
(4)将MBR数据写入硬盘绝对零扇区
续(3),将MBR数据从软盘读入1000H地址后,(仍然在DEBUG环境中)
-a 100 ' 从偏移100H开始输入汇编代码
XXXX:0100 mov ax, 0301 ' int 13H 参数:写入扇区,写一个扇区
XXXX:xxxx mov bx, 1000 ' 写入的数据从地址 1000H 开始
XXXX:xxxx mov cx, 0001 ' int 13H 参数:写零道、1扇区
XXXX:xxxx mov dx, 0080 ' int 13H 参数:写零柱面,硬盘(80H为第一硬盘)
XXXX:xxxx int 13 ' 调用DOS中断13H
XXXX:xxxx int 20 ' 调用DOS中断20H(结束运行)
-g=100 ' 运行偏移100H开始的代码
-q
C:> |
|