mbasic吧 关注:19贴子:210
  • 0回复贴,共1

读取硬盘主引导区,保存恢复CMOS的源程序

只看楼主收藏回复

启动QB请加参数 如:QB/L 这样你的程序可以支持中断调用
读取硬盘主引导区:
'$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
DIM InRegs AS RegTypeX
DIM OutRegs AS RegTypeX
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编写通过!
本帖地址: http://bbs.pfan.cn/post-20549.html [复制地址] [搜索相关帖子]0赞回复列表 (共20个回复)
沙发
qb45 [专家分:2880] 发布于 2004-01-12 22:54:00
保存恢复清除CMOS :
INPUT "输入文件名 = ", file$
INPUT "SELECT 1 =SAVE ,2=LOAD 3=cle", S '1是存2是读3是清除CMOS
OPEN file$ FOR BINARY AS #1
d$ = "1"
SELECT CASE s
CASE 1 'SAVE CMOS 保存
FOR i = 9 TO 128
OUT &H70, i
d = INP(&H71)
d$ = CHR$(d)
PUT #1, i, d$
NEXT i
PRINT file$; "Cmos保存成功 ,ok!!"
CASE 2 'load cmos 恢复
FOR i = 9 TO 128
GET #1, i, d$
d = ASC(d$)
OUT &H70, i
OUT &H71, d
PRINT file$; "Cmos恢复成功 ,ok!!"
NEXT i
CASE 3 'cls cmos 清除(慎用)
FOR i = 1 TO 128
OUT &H70, i
OUT &H71, 0
PRINT file$; "Cmos 成功清除,ok!!"
NEXT i
END SELECT
CLOSE
END


IP属地:山东1楼2016-04-14 16:41回复