HDKPR.ASM
上传用户:yugezi
上传日期:2007-01-06
资源大小:18k
文件大小:3k
源码类别:

磁盘编程

开发平台:

Others

  1. code segment
  2.      assume cs:code,ds:code,es:code
  3.      org 100h
  4. begin:jmp start
  5. cyl dw 0
  6. rint13 dw 0,0
  7. myint13:
  8.      push ax
  9.      push cx
  10.      cmp dl,80h
  11.      jnz int13
  12.      cmp ah,03
  13.      jz IsWrite
  14.      cmp ah,05
  15.      jz IsWrite
  16.      cmp ah,0bh
  17.      jz IsWrite
  18. int13:
  19.      pop cx
  20.      pop ax
  21.      jmp dword ptr cs:rint13
  22. IsWrite:
  23.      mov al,cl
  24.      mov cl,6
  25.      shr al,cl
  26.      mov cl,ch
  27.      mov ch,al
  28.      cmp cx,cs:cyl
  29.      jnb int13
  30.      pop cx
  31.      pop ax
  32.      xor ax,ax
  33.      iret
  34. SetupROD:
  35.      mov ax,201h
  36.      mov bx,offset buffer
  37.      mov cx,1
  38.      mov dx,80h
  39.      int 13h
  40.      mov cl,6
  41.      mov ch,[bx+01c4h]
  42.      shr ch,cl
  43.      mov cl,[bx+01c5h]
  44.      mov cyl,cx
  45.      mov ax,3513h
  46.      int 21h
  47.      mov rint13,bx
  48.      mov bx,es
  49.      mov rint13+2,bx
  50.      mov dx,offset myint13
  51.      mov ax,2513h
  52.      int 21h
  53.      mov dx,offset SetupROD
  54.      int 27h
  55. message db 'HD LOCK already Installed!',07,0dh,0ah,'$'
  56. buffer db 256 dup(0)
  57. prompt1 db 0ah,0dh,'Enter new'
  58. password db 'Password:$'
  59. change db 0ah,0dh,'Change password?(Y/N)$'
  60. secret db 'cheguanghong',0
  61. pwbuff db 13 dup(0)
  62. filename db 'c:dosrohd.com',0
  63. start:
  64.      push si
  65.      push di
  66.      mov ax,3513h
  67.      int 21h
  68.      push cs
  69.      pop es
  70.      mov dx,offset myint13
  71.      cmp bx,dx
  72.      jnz Cont
  73.      mov dx,offset message
  74.      mov ah,9
  75.      int 21h
  76.      jmp exit
  77. Cont:mov dx,offset password
  78.      mov ah,9
  79.      int 21h
  80.      mov bx,0
  81. loop1:
  82.      mov ah,07
  83.      int 21h
  84.      cmp al,0dh
  85.      jz EndEnter
  86.      cmp bx,11
  87.      ja loop1
  88.      mov pwbuff[bx],al
  89.      inc bx
  90.      jmp loop1
  91. EndEnter:
  92.      mov cx,12
  93.      mov si,offset secret
  94.      mov di,offset pwbuff
  95.      repz cmpsb
  96.      jcxz ok1
  97.      jmp SetupROD
  98. ok1: mov dx,offset change
  99.      mov ah,09
  100.      int 21h
  101.      mov ah,01
  102.      int 21h
  103.      cmp al,'Y'
  104.      jz ToChange
  105.      cmp ah,'y'
  106.      jz ToChange
  107.      jmp exit
  108. ToChange:
  109.      mov dx,offset prompt1
  110.      mov ah,9
  111.      int 21h
  112.      mov bx,0
  113. loop2:
  114.      mov ah,07
  115.      int 21h
  116.      cmp al,0dh
  117.      jz loop4
  118.      mov pwbuff[bx],al
  119.      inc bx
  120.      cmp bx,12
  121.      jb loop2
  122. loop4:
  123.      mov al,0
  124.      mov pwbuff[bx],al
  125.      inc bx
  126.      cmp bx,12
  127.      jb loop4
  128.      mov dx,offset filename
  129.      mov ax,3d02h
  130.      int 21h
  131.      mov bx,ax
  132.      mov cx,0
  133.      mov dx,offset secret-100h
  134.      mov ax,4200h
  135.      int 21h
  136.      mov ah,40h
  137.      mov cx,12
  138.      mov dx,offset pwbuff
  139.      int 21h
  140.      mov ah,3eh
  141.      int 21h
  142. exit:pop di
  143.      pop si
  144.      int 20h
  145. code ends
  146.      end begin