加快软盘操作速度的汇编程序源代码

王朝other·作者佚名  2006-01-09
宽屏版  字体: |||超大  

;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

;功能:加快软盘的操作速度

;来源:《软件报》1995年合订本 60 页

;作者:成都 卢军(Purple Endurer修正了一个引起程序无法汇编的地方)

;原理:

;我们都知道软驱读写结束后并不可以立刻取出磁盘, 因为软驱灯未熄灭之前就取出磁盘

;将刮伤磁盘。在大量读写软盘的时侯等待驱动器灯灭是非常令人着急的。用过hd-copy的

;读者都可以体会到,hd-copy使用时当软驱一读写完毕驱动器灯叉立刻熄灭了,马上就可以

;取出磁盘,非常的方便。从这里我们也可以看到用软件的方法可能缩短驱动器灯熄灭的时

;间。

;在bios数据区的40:40地址处保存着一个表明驱动器马达接通时间的计数,每个时钟(1/18.2

;秒)节拍,计数减1。当计数为0时,马达停转,驱动器灯熄灭,计数又恢复为256,计数在0

;和256之间反复循环。因此我们可以缩短这个计数减速减为0的时间,从而使驱动器灯提早熄

;灭。pc及其兼容机的硬中断08H完成两个功能,它首先把这个计数减一,然后通知定时器的

;应用程序发出INT 1CH中断。因此在下面的这个程序中我们修改了 08H 中断,使每次 08H

;中断使计数减2。这样我们等待驱动器灯熄灭的时间可以缩短一半,加快了磁盘物速度。

;

;采用COM文件编写,并且采用INT 27H驻留。

;因此必须用EXE2BIN转化为COM文件后才可运行。

;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

PCOM SEGMENT BYTE PUBLIC

ASSUME CS: PCOM, DS: PCOM

ORG 100h

FASTOFF PROC FAR

START:

JMP SHORT INSTALL

OLD_INT_08H_ENTRY DD 00000000H ;保存原08H中断程序

FASTOFF ENDP

INT_08H_ENTRY PROC FAR

PUSH DS

PUSH AX ;保存现场

MOV AX, 40H

MOV DS, AX

CMP BYTE PTR DS:40H, 2 ;计数小于2则不再

JB EXIT ;使计数减一

DEC BYTE PTR DS: 40H

;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

;若将以上的3句改为 mov byte ptr ds:40h,-1

;这样这个数永远减不完,软驱灯岂不是永远不灭?

;这样谁还敢用软盘;-)

;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

EXIT:

POP AX

POP DS

JMP CS: OLD_INT_08H_ENTRY ;调用原08H中断子程序

INSTALL:

LEA DX, COPYRIGHT ;打印程序信息

MOV AH, 09H

INT 21H

MOV AH, 35H

MOV AL, 08H

INT 21H ;取原08H中断向量

MOV WORD PTR OLD_INT_08H_ENTRY, BX

MOV WORD PTR OLD_INT_08H_ENTRY+2, ES

MOV DX, OFFSET INT_08H_ENTRY

MOV AH, 25H

MOV AL, 08H ;设置新的08H中断向量

INT 21H

LEA DX, FASTOFF+100 ;原文为:LEA DX, FINISH+100

INT 27H ;驻留退出

COPYRIGHT DB 'FASTOFF INSTALL. LUJUN.1995', 13, 10, '$'

INT_08H_ENTRY ENDP

PCOM ENDS

END START

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有