Advertisement
Guest User

Untitled

a guest
Jan 20th, 2017
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. po
  2. ENTER_KEY EQU 0DH
  3.  
  4. ;uproszczone dyrektywy segmentowe, oraz model tiny - program typu COM
  5. .MODEL TINY
  6. .CODE
  7.     .386        ;to znaczy ze bedziemy uzywac instrukcji zgodnych z procesorem x386
  8.     ORG 100H    ;pomijamy nie duzy przedrostek programu
  9.  
  10. START:
  11.     JMP MAIN
  12.    
  13. ;tu sa zdefiniowane tablice znakow do wyswietlenia za pomoca funkcji 09h przerwania 21h
  14. ;ktora to wyswietla az do znaku $
  15. ;0ah - znak powrotu karetki
  16. ;0dh - znak nowej lini
  17. PASSWORD_OK DB 0AH, 0Dh, 'Password Ok$'
  18. PASSWORD_FAIL DB 0AH, 0Dh, 'Password Fail$'
  19.    
  20.    
  21. ;tutaj teraz definiujemy sobie nasze dane w pamieci programu
  22. ;ktore bedziemy wykozystywac podczas reszyt programu.
  23.  
  24. ;glowna procedura programu
  25. MAIN PROC NEAR
  26.     XOR SI,SI           ;zerujemy rejestr SI operacja xor, najszybsze zerowanie
  27.                         ;rej. SI bedzie nam slozyl jako licznik wprowadzonych znakow
  28. MAIN_START:             ;etykieta
  29.     MOV AX,1000H        ;funkcja przerwania 16h czekajaca na nacisniecie klawisza
  30.     INT 16H             ;wywolujemy przerwanie 16h, funkcja zwraca do rej. AL znak klawisza
  31.                         ;a do rej. AH kod klawisza
  32.     INC SI              ;zwieksz licznik wprowadzonych znakow
  33.  
  34.     ;sprawdzamy czy to enter
  35.     CMP AL,ENTER_KEY    ;porownanie rej. AL z wartoscia 0Dh
  36.     JE MAIN_END1        ;gdy jest rowne, gdy znak to klawisz enter to skacz do main_end
  37.    
  38.     CMP SI,16           ;porwnanie SI z 16
  39.     JA MAIN_END0        ;gdy Si > 16 to skacz do MAIN_END
  40.    
  41.    
  42.     MOV DL,'*'          ;do DL znak gwiazdki do wyswietlenia
  43.     MOV AH,02H          ;funkcja 02h przerwania dosa 21h ktora wyswietla podany znak z rej. DL
  44.     INT 21h
  45.     JMP MAIN_START      ;skok na poczatek programu
  46.  
  47. MAIN_END0:
  48.     ;gdy wpisano wiecej niz 16 i 17 nie byl enter
  49.     ;to wypsiz password_fail
  50.     MOV AH,09H              ;do AH kod funkcji do wypisywanie tesktu na ekran
  51.     LEA DX,PASSWORD_FAIL    ;do DX adres tablicy ze znakami
  52.     INT 21H                 ;wywolujemy przerwanie wykonujac wypisanie na ekran
  53.     JMP MAIN_END            ;skacz
  54.  
  55. MAIN_END1:
  56.     ;gdy wcisnieto enter to password napewno jest ok
  57.     MOV AH,09H              ;do AH kod funkcji do wypisywanie tesktu na ekran
  58.     LEA DX,PASSWORD_OK      ;do DX adres tablicy ze znakami
  59.     INT 21H                 ;wywolujemy przerwanie wykonujac wypisanie na ekran
  60.     JMP MAIN_END            ;skacz
  61.    
  62. MAIN_END:
  63.     MOV AX,4C00H        ;funkcja przerwania 21h zakonczajaca program ze statusem = 0
  64.     INT 21H            
  65. MAIN ENDP
  66.  
  67.  
  68. END START
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement