Board logo

标题: 读取硬盘主引导区的源程序 [打印本页]

作者: qb45     时间: 2003-9-20 00:00    标题: 读取硬盘主引导区的源程序

'$INCLUDE: 'qb.bi'
DIM SHARED ax, bx, cx, dx, es
buff$ = SPACE$(512) '设置磁盘缓冲区
bx = SADD(buff$)   '获得缓冲区的偏移地址
es = VARSEG(buff$) '获得缓冲区的段址
OPEN "savehd.dat" FOR BINARY AS #1
ax = &H201
cx = 1
dx = &H80
int13     ' 调用13号中断      
PUT #1, , buff$
CLOSE #1
PRINT "硬盘主引导区已被成功的保存到SAVEHD.DAT文件中!"
END

SUB int13
InRegs.ax = ax
InRegs.bx = bx
InRegs.cx = cx
InRegs.dx = dx
InRegs.es = es
INTERRUPTX &H13, InRegs, OutRegs
ax = OutRegs.ax
bx = OutRegs.bx
cx = OutRegs.cx
dx = OutRegs.dx
es = OutRegs.es
END SUB

此程序用qb4.5编写通过!
希望网友多多支持!
作者: QB45     时间: 2003-9-30 00:00
说明:INT 13 中断 AH=2 读  AL = 要读的扇区数 BX=缓冲区的地址 CL=开始的扇区号
DL=要操作的盘。
用DEBUG就很简单了
A
MOV AX,201
MOV BX,200
MOV CX,1
MOV DX,80
INT 13
INT 3
G    ‘这时硬盘的主引导区的内容已经读出
N  HDBOOT。DAT   ’要保存的文件名
RCX 200   ‘文件的大小   
W 200    ’从地址200处开始写

我是新来的,请大家还回几篇帖子啊!就是批评我也高兴啊!别让我感觉这里空荡荡的!







作者: iceboy     时间: 2003-10-3 00:00
发现一个小问题:RegType 中不包含 es,应该用 RegTypeX (我是用的 QBX 7.1),还有应该说明编译是应该加 /l 参数。

这个程序很好啊,在 Win2000 下的提示好酷啊:该程序试图直接访问硬盘...
作者: cn_archer     时间: 2003-10-3 00:00
IceBoy好样的!
作者: lemonhall     时间: 2003-10-4 00:00
呵呵,事实上它在FREEDOS下也容易破坏引导记录,还好只是读。
QB45可能总是用BATCH起QB4。5的,而且有编译BASIC的习惯,
所以忘写了/L参数,:)???