Advertisement
norwag

Untitled

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