中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-09-15 04:25
47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,268 会员排行
DOS开发编程 & 发展交流 (开发室) » 读取硬盘主引导区的源程序
可打印版本  1,039 / 4
第1楼 qb45 发表于 2003-09-20 00:00
高级用户 发帖 194 积分 677
读取硬盘主引导区的源程序
'$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编写通过!
希望网友多多支持!
第2楼 qb45 发表于 2003-09-30 00:00
高级用户 发帖 194 积分 677
说明: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处开始写

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






第3楼 iceboy 发表于 2003-10-03 00:00
银牌会员 发帖 512 积分 1,681
发现一个小问题:RegType 中不包含 es,应该用 RegTypeX (我是用的 QBX 7.1),还有应该说明编译是应该加 /l 参数。

这个程序很好啊,在 Win2000 下的提示好酷啊:该程序试图直接访问硬盘...
第4楼 cn_archer 发表于 2003-10-03 00:00
元老会员 发帖 991 积分 2,903 来自 福建省
IceBoy好样的!
第5楼 lemonhall 发表于 2003-10-04 00:00
高级用户 发帖 183 积分 639
呵呵,事实上它在FREEDOS下也容易破坏引导记录,还好只是读。
QB45可能总是用BATCH起QB4。5的,而且有编译BASIC的习惯,
所以忘写了/L参数,:)???
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023