中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-23 10:06
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » 读取硬盘主引导区的源程序 查看 928 回复 4
楼 主 读取硬盘主引导区的源程序 发表于 2003-09-20 00:00 ·  中国 湖北 宜昌 电信
高级用户
★★
积分 677
发帖 194
注册 2003-09-13 00:00
22年会员
UID 9778
性别 男
状态 离线
'$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 发表于 2003-09-30 00:00 ·  中国 湖北 宜昌 电信
高级用户
★★
积分 677
发帖 194
注册 2003-09-13 00:00
22年会员
UID 9778
性别 男
状态 离线
说明: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 发表于 2003-10-03 00:00 ·  中国 湖北 武汉 联通
银牌会员
★★★
积分 1,681
发帖 512
注册 2003-08-02 00:00
22年会员
UID 7953
性别 男
状态 离线
发现一个小问题:RegType 中不包含 es,应该用 RegTypeX (我是用的 QBX 7.1),还有应该说明编译是应该加 /l 参数。

这个程序很好啊,在 Win2000 下的提示好酷啊:该程序试图直接访问硬盘...
Somehow somewhere I've got to choose.
No matter if it is win or lose.
4 发表于 2003-10-03 00:00 ·  中国 福建 福州 电信
元老会员
★★★
农民
积分 2,903
发帖 991
注册 2003-07-23 00:00
22年会员
UID 7391
性别 男
来自 福建省
状态 离线
IceBoy好样的!
艰难奋长戟,万古用一夫

中国DOS联盟 http://www.cn-dos.net 欢迎大家来共同学习
我的MSN&E-Mail cn_archer@hotmail.com QQ 56049418
5 发表于 2003-10-04 00:00 ·  中国 陕西 西安 教育网
高级用户
★★
OS/2女孩
积分 639
发帖 183
注册 2003-06-14 00:00
23年会员
UID 5148
性别 女
状态 离线
呵呵,事实上它在FREEDOS下也容易破坏引导记录,还好只是读。
QB45可能总是用BATCH起QB4。5的,而且有编译BASIC的习惯,
所以忘写了/L参数,:)???
REM 喜欢DOS,因为它的简单
REM 喜欢OS/2,因为它不再矫饰
REM 喜欢BASIC,因为它并不幼稚
REM 喜欢GNU,因为它杂乱无章
论坛跳转: