Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- po
- ENTER_KEY EQU 0DH
- ;uproszczone dyrektywy segmentowe, oraz model tiny - program typu COM
- .MODEL TINY
- .CODE
- .386 ;to znaczy ze bedziemy uzywac instrukcji zgodnych z procesorem x386
- ORG 100H ;pomijamy nie duzy przedrostek programu
- START:
- JMP MAIN
- ;tu sa zdefiniowane tablice znakow do wyswietlenia za pomoca funkcji 09h przerwania 21h
- ;ktora to wyswietla az do znaku $
- ;0ah - znak powrotu karetki
- ;0dh - znak nowej lini
- PASSWORD_OK DB 0AH, 0Dh, 'Password Ok$'
- PASSWORD_FAIL DB 0AH, 0Dh, 'Password Fail$'
- ;tutaj teraz definiujemy sobie nasze dane w pamieci programu
- ;ktore bedziemy wykozystywac podczas reszyt programu.
- ;glowna procedura programu
- MAIN PROC NEAR
- XOR SI,SI ;zerujemy rejestr SI operacja xor, najszybsze zerowanie
- ;rej. SI bedzie nam slozyl jako licznik wprowadzonych znakow
- MAIN_START: ;etykieta
- MOV AX,1000H ;funkcja przerwania 16h czekajaca na nacisniecie klawisza
- INT 16H ;wywolujemy przerwanie 16h, funkcja zwraca do rej. AL znak klawisza
- ;a do rej. AH kod klawisza
- INC SI ;zwieksz licznik wprowadzonych znakow
- ;sprawdzamy czy to enter
- CMP AL,ENTER_KEY ;porownanie rej. AL z wartoscia 0Dh
- JE MAIN_END1 ;gdy jest rowne, gdy znak to klawisz enter to skacz do main_end
- CMP SI,16 ;porwnanie SI z 16
- JA MAIN_END0 ;gdy Si > 16 to skacz do MAIN_END
- MOV DL,'*' ;do DL znak gwiazdki do wyswietlenia
- MOV AH,02H ;funkcja 02h przerwania dosa 21h ktora wyswietla podany znak z rej. DL
- INT 21h
- JMP MAIN_START ;skok na poczatek programu
- MAIN_END0:
- ;gdy wpisano wiecej niz 16 i 17 nie byl enter
- ;to wypsiz password_fail
- MOV AH,09H ;do AH kod funkcji do wypisywanie tesktu na ekran
- LEA DX,PASSWORD_FAIL ;do DX adres tablicy ze znakami
- INT 21H ;wywolujemy przerwanie wykonujac wypisanie na ekran
- JMP MAIN_END ;skacz
- MAIN_END1:
- ;gdy wcisnieto enter to password napewno jest ok
- MOV AH,09H ;do AH kod funkcji do wypisywanie tesktu na ekran
- LEA DX,PASSWORD_OK ;do DX adres tablicy ze znakami
- INT 21H ;wywolujemy przerwanie wykonujac wypisanie na ekran
- JMP MAIN_END ;skacz
- MAIN_END:
- MOV AX,4C00H ;funkcja przerwania 21h zakonczajaca program ze statusem = 0
- INT 21H
- MAIN ENDP
- END START
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement