home *** CD-ROM | disk | FTP | other *** search
/ PC Interdit / pc-interdit.iso / motpasse / pwmodul.asm < prev   
Assembly Source File  |  1994-10-18  |  4KB  |  137 lines

  1. .386p
  2. .MODEL TPASCAL
  3.  
  4. keyb_off macro
  5.   push ax
  6.   in  al,21h
  7.   or  al,02
  8.   out 21h,al
  9.   pop ax
  10. endm
  11.  
  12. keyb_on macro
  13.   push ax
  14.   in  al,21h
  15.   and al,0Fdh
  16.   out 21h,al
  17.   pop ax
  18. endm
  19.  
  20. .DATA
  21.  extrn iterations_restantes
  22.  extrn Pchoisir_nouveau_motdepasse : dword
  23.  extrn Pdessiner_cadre_de_saisie : dword
  24.  extrn Pdemander_motdepasse : dword
  25.  extrn Parreter_systeme : dword
  26.  extrn motdepasse_correct : byte
  27.  extrn variable_bidon1 : word
  28.  extrn variable_bidon2 : word
  29.  
  30. .CODE
  31. extrn Main_Programm : far
  32.  
  33. public boucle_de_saisie
  34.  
  35. boucle_de_saisie proc pascal
  36.   keyb_off
  37.  
  38. ;coup de la PIQ 
  39.   int 3
  40.   mov  cs:word ptr [@int_21_fonct1],4CB4h       ; Fonction arrêter programme
  41. @int_21_fonct1:
  42.   mov  ah,30h                                   ; fonction version de DOS
  43.   int 21h
  44.  
  45. @saisie_loop:
  46.   keyb_off
  47.  
  48.   call dword ptr Pchoisir_nouveau_motdepasse
  49.   cmp  variable_bidon1,5
  50.   jbe  @destination_bidon1a
  51.  
  52.  ;coup de la PIQ 
  53.   int 3
  54.   mov  cs:word ptr [@int_21_fonct2],4CB4h     ; fonction arrêter le programme
  55. @int_21_fonct2:
  56.   mov  ah,30h                                 ; fonction version de DOS
  57.   int 21h
  58.   mov  cs:word ptr [@int_21_fonct2],30B4h     ; fonction arrêter le programme
  59.  
  60.   call dword ptr Pdessiner_cadre_de_saisie
  61.   jmp  @destination_bidon1b
  62.  
  63. @destination_bidon1a:
  64.  ;coup de la PIQ
  65.   int 3
  66.   mov  cs:word ptr [@int_21_fonct2],4CB4h     ; fonction arrêter le programme
  67. @int_21_fonct2a:
  68.   mov  ah,30h                                 ; fonction version de DOS
  69.   int 21h
  70.   mov  cs:word ptr [@int_21_fonct2a],30B4h    ; Fonction arrêter le programme
  71.  
  72.   call dword ptr Pdessiner_cadre_de_saisie
  73. @destination_bidon1b:
  74.   keyb_on
  75.  
  76.  
  77.   cmp  variable_bidon2,10
  78.   jbe  @destination_bidon2a
  79.  
  80.   dec  byte ptr iterations_restantes
  81.  
  82. ; coup du mode protégé
  83.         pusha
  84.         cli                             ; désactive les interruptions
  85.         mov eax,cr0                     ; passe dans le mode protégé
  86.         or eax,1
  87.         mov cr0,eax
  88.         jmp PROTECTION_ENABLED          ; efface le canal d'exécution
  89. PROTECTION_ENABLED:
  90.         and al,0FEh                     ; revient au mode réel
  91.         mov cr0,eax                     ; pas de raz du processeur
  92.         jmp PROTECTION_DISABLED         ; efface le canal d'exécution
  93. PROTECTION_DISABLED:
  94.         sti                             ;rétablit les interruptions 
  95. popa
  96.  
  97.   call dword ptr Pdemander_motdepasse
  98.   jmp  @destination_bidon2b
  99.  
  100. @destination_bidon2a:
  101.   dec  byte ptr iterations_restantes
  102.  
  103. ; coup du mode protégé
  104.         pusha
  105.         cli                             ; désactive les interruptions
  106.         mov eax,cr0                     ; passe dans le mode protégé
  107.         or eax,1
  108.         mov cr0,eax
  109.         jmp PROTECTION_ENABLED2a        ; efface le canal d'exécution
  110. PROTECTION_ENABLED2a:
  111.         and al,0FEh                     ; rétablit le mode réel
  112.         mov cr0,eax                     ; pas de raz du processeur
  113.         jmp PROTECTION_DISABLED2a       ; efface le canal d'exécution
  114. PROTECTION_DISABLED2a:
  115.         sti                             ; restaure les interruptions
  116.         popa
  117.   call dword ptr Pdemander_motdepasse
  118.  
  119. @destination_bidon2b:
  120.  
  121.   cmp  byte ptr motdepasse_correct,1
  122.   je   @demande_OK
  123.   jmp  @demande_pas_OK
  124. @demande_OK:
  125.  
  126.   call Main_Programm
  127. @demande_pas_OK:
  128.  
  129.   cmp byte ptr iterations_restantes,54
  130.   ja  @saisie_loop
  131.   call dword ptr Parreter_systeme
  132.   ret
  133. boucle_de_saisie endp
  134.  
  135. END
  136.  
  137.