摘要:;;执行:hdsleepnn是定时时间,1-99code segmentassume cs:code,ds:codeorg 100hmain proc nearjmp installcmd db 0,0,0,0,0,0a0h,0e6hold1c db ?cou
;
;执行:hdsleepnn是定时时间,1-99code 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
来源:小圆说科技