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

磁盘编程

开发平台:

Others

  1. .MODEL tiny
  2. .CODE
  3. DISKIO equ 13h
  4. VIDEO equ 10h
  5.       org 200h
  6. GetPassWord proc
  7. PassBegin:
  8. MyRoutine:
  9.      push cs
  10.      pop ds
  11.      mov di,offset HeadMsg
  12.      call Put_Str
  13.      mov cx,10000
  14. $l1:
  15.      nop
  16.      loop $l1
  17.      ret
  18. Put_Str proc
  19.      mov al,cs:[di]
  20.      cmp al,"$"
  21.      je A1
  22.      mov ah,0eh
  23.      mov bx,0003h
  24.      int video
  25.      inc di
  26.      jmp Put_Str
  27. A1:  ret
  28. Put_Str endp
  29.      HeadMsg db "Waking up Babysoft-HDDOG... ok.",0ah,0dh,0ah,0dh,'$'
  30. PassTail:
  31.      PassLen equ 1024-(PassTail-PassBegin)
  32.              db PassLen dup(0)
  33. GetPassword endp
  34.      org 600h
  35. GetPass Proc
  36. PBegin:
  37.      push ax
  38.      push cx
  39.      push ds
  40.      push es
  41.      push si
  42.      push di
  43.      mov ax,9f80h
  44.      mov ds,ax
  45.      mov es,ax
  46.      mov di,offset PSWBuffer
  47.      call ReadStr
  48.      mov si,offset PSWBuffer
  49.      mov di,offset Password
  50.      mov cl,byte ptr [di]
  51.      mov ch,byte ptr [si]
  52.      cmp cl,ch
  53.      jnz $t1
  54.      xor ch,ch
  55.      repe cmpsb
  56.      mov ax,1075
  57.      mov cx,5
  58.      jz Right2
  59. $t1:
  60.      add ax,200
  61.      call Music
  62.      call Delay
  63.      loop $t1
  64.      call NoSound
  65.      pop di
  66.      pop si
  67.      pop es
  68.      pop ds
  69.      pop cx
  70.      pop ax
  71.      stc
  72.      ret
  73. Right2:
  74.      mov ax,2275
  75. $t4:
  76.      sub ax,200
  77.      call Music
  78.      call Delay
  79.      loop $t4
  80.      call NoSound
  81.      pop di
  82.      pop si
  83.      pop es
  84.      pop ds
  85.      pop cx
  86.      pop ax
  87.      clc
  88.      ret
  89. ReadStr proc near
  90.      push es
  91.      push di
  92.      inc di
  93.      mov Plength,0
  94. Next:
  95.      cmp PLength,15
  96.      jge @l1
  97.      mov ah,1
  98.      int 16h
  99.      jz Next
  100.      mov ax,0
  101.      int 16h
  102.      cmp al,0
  103.      je next
  104.      cmp al,08
  105.      je @l2
  106.      cmp al,13
  107.      je @l1
  108.      sub al,20
  109.      or al,80h
  110.      stosb
  111.      inc PLength
  112.      jmp next
  113. @l2:
  114.      cmp PLength,0
  115.      je next
  116.      dec di
  117.      mov al,00h
  118.      stosb
  119.      dec PLength
  120.      dec di
  121.      jmp next
  122. @l1:
  123.      pop di
  124.      mov al,byte ptr PLength
  125.      mov byte ptr [di],al
  126.      pop es
  127.      ret
  128. ReadStr endp
  129. timer2 equ 42h
  130. tim_ctr equ 43h
  131. port_b equ 61h
  132. Music Proc
  133.       push ax
  134.       mov al,10110110b 
  135.       out tim_ctr,al
  136.       pop ax
  137.       out timer2,al
  138.       mov al,ah
  139.       out timer2,al
  140.       in al,port_b
  141.       or al,00000011b
  142.       out port_b,al
  143.       ret
  144. Music EndP
  145. NoSound proc
  146.       in al,port_b
  147.       and al,11111100b
  148.       out port_b,al
  149.       ret
  150. NoSound Endp
  151. Delay Proc
  152.       push si
  153.       mov si,0a000h
  154. @j1:
  155.       dec si
  156.       cmp si,0
  157.       jnz @j1
  158.       pop si
  159.       ret
  160. Delay Endp
  161. PLength db 0
  162. Ptail:
  163. RestLen equ 200h-(Ptail-PBegin)-32
  164.         db RestLen dup(0)
  165.         org PBegin+200h-32
  166. PASSWORD db 0,15 dup(0)
  167. PSWBuffer db 0,15 dup(1)
  168. GetPass endp
  169. END