Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .286
- .model small
- .stack 100
- .data
- .code
- main:
- mov al, 0 ;do rejestru AL (rejestr 8 bit) prześlij wartość 0
- push ax ;dodaj zawartość rejestru AX (rejestr 16 bit) na stos
- p1:
- mov al, 0edh ;do rejestru AL prześlij EDh (set/reset led's)
- out 60h, al ;wartość AL prześlij na port 60h, port obsługi klawiatury
- czekaj:
- in al, 64h ;czytaj z portu 64h do rejestru AL
- test al, 02h ;sprawdź czy bit nr 1 jest równy 1 (zakładając numerację bitów 0-7)
- jnz czekaj ;jeśli tak, to znaczy że nie można pisać do portu 60h/64h, więc powtarzamy pętlę czekaj
- pop ax ;zdejmij 2 bajty ze stosu do AX
- out 60h, al ;prześlij na port 60h zawartość rejestru AL
- push ax ;prześlij zawartość AX na stos
- mov ah, 0 ;załaduj 0 do rejestru AH (starsza częśc rejestru AX)
- int 16h ;przerwanie 16h, poprzednie załadowanie 0 na AH daje instrukcje odczytania wciśniętego klawisza
- cmp al, 27 ;dane z odczytania klawisza trafiają do AL, sprawdzamy czy to klawisz ESC
- je koniec ;jeśli tak to skok do etykiety koniec
- pop ax ;jak nie to zdejmujemy ze stosu 2 bajty do AX
- inc al ;inkrementujemy zawartość rejestru AL
- cmp al, 8 ;porównujemy AL z liczbą 8
- push ax ;dodajemy zawartość AL na stos
- jl p1 ;jeśli AL < 8 skaczemy do linii 9, etykiety p1
- mov al, 0 ;jeśli nie to do rejestru AL wstawiamy 0
- jmp p1 ;skaczemy do etykiety p1
- koniec:
- mov ax, 4c00h ;do AX wstawiamy wartośc 4C00h, czyli do AH wstaiwamy 4Ch
- int 21h ;przerwanie 21h, w AH jest 4Ch czyli "zakończ program i zwróć kod powrotu"
- end main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement