30年前写的硬盘休眠程序

360影视 动漫周边 2025-09-12 20:48 1

摘要:;;执行:hdsleepnn是定时时间,1-99code segmentassume cs:code,ds:codeorg 100hmain proc nearjmp installcmd db 0,0,0,0,0,0a0h,0e6hold1c db ?cou

;

;执行:hdsleepnn是定时时间,1-99

code segment

assume cs:code,ds:code

org 100h

main proc near

jmp install

cmd db 0,0,0,0,0,0a0h,0e6h

old1c db ?

count1 dw 1092

count2 dw ?

check db 'SC'

new1ch:

push ax

push dx

push ds

mov ax,cs

mov ds,ax

inc word ptr count2

mov ax,count1

cmp ax,count2

jz close_ide

mov dx,1f7h

in al,dx

and al,11000000b

cmp al,01000000b

jz exit

mov count2,0

jmp exit

close_ide:

mov count2,0

mov dx,1f7h

in al,dx

and al,11000000b

cmp al,01000000b

jnz exit

mov si,offset cmd

mov dx,1f1h

mov cx,7

out_cmd:

lodsb

out dx,al

inc dx

loop out_cmd

exit:

pop ds

pop dx

pop ax

jmp dword ptr cs:old1c

install:

mov ax,351ch

int 21h

cmp word ptr es:[bx-2],'CS'

jz exit1

mov word ptr old1c,bx

mov word ptr old1c+2,es

mov bx,80h

mov al,byte ptr[bx]

cmp al,0

jz default

cbw

add bx,ax

mov al,byte ptr[bx]

cmp al,39h

ja default

cmp al,30h

jb default

and al,0fh

mov ah,byte ptr[bx-1]

cmp ah,39h

ja default

cmp ah,30h

jb save_para

and ah,0fh

shl ah,1

add al,ah

shl ah,1

shl ah,1

add al,ah

save_para:

cbw

mul count1

mov count1,ax

default:

mov dx,offset new1ch

mov ax,251ch

int 21h

mov dx,offset install

mov cl,4

shr dx,cl

inc dx

mov ah,31h

int 21h

mov ah,09

mov dx,offset active

int 21h

mov ah,4ch

int 21h

active db "IDE-HD sleep program already exist !"

db 0dh,0ah,07h,24h

main endp

code ends

end main

来源:小圆说科技

相关推荐