Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;Lista nr 6
- ;(c) W. Marks 2008
- ;procedury pomocnicze
- ;eksporty procedur
- public PutPixel ;postaw piksel o danej barwie w danym miejscu na ekranie w trybie 13h
- public Init13h ;rozpoczecie pracy w trybie graficznym 13h
- public Close13h ;powrot z trybu 13h do trybu tekstowego
- public PauseKey ;czekaj na dowolny klawisz i zwroc jego kod
- public Cls ;wyczysc ekran w trybie tekstowym
- .model small
- .stack
- .data
- ;kopie rejestrow
- cax DW ?
- cbx DW ?
- ccx DW ?
- cdx DW ?
- .code
- ; PutPixel
- ;--------------------------------------------
- ;Opis : postaw piksel o danej barwie w danym miejscu na ekranie w trybie 13h
- ;Wejscie : kolor :byte; x,y :word (na stosie, konwencja PASCALA)
- ;Wyjscie : ---
- PutPixel proc
- mov cax, AX
- mov cbx, BX
- mov ccx, CX
- pop CX ;CX - adres powrotu
- pop AX ;AX = y
- mov BX, AX ;BX = y
- shl AX, 8 ;AX = y*256
- shl BX, 6 ;BX = y*64
- add AX, BX ;AX = y*256 + y*64 = y*320
- pop BX ;BX = x
- add AX, BX ;AX = y*320 + x
- mov DI, AX
- mov AX, 0a000h ;poczatek tablicy pikseli
- mov ES, AX
- pop AX ;AL = kolor
- mov byte ptr ES:[DI], AL ;stawiamy piksel
- push CX ;przywracamy adres powrotu
- mov AX, cax
- mov BX, cbx
- mov CX, ccx
- ret
- endp PutPixel
- ; Init13h
- ;--------------------------------------------
- ;Opis : rozpoczecie pracy w trybie graficznym 13h
- ;Wejscie : ---
- ;Wyjscie : ---
- Init13h proc
- mov cax, AX
- mov AX, 13h
- int 10h
- mov AX, cax
- ret
- endp Init13h
- ; Close13h
- ;--------------------------------------------
- ;Opis : powrot z trybu 13h do trybu tekstowego
- ;Wejscie : ---
- ;Wyjscie : ---
- Close13h proc
- mov cax, AX
- mov AX, 3
- int 10h
- mov AX, cax
- ret
- endp Close13h
- ; PauseKey
- ;--------------------------------------------
- ;Opis : czekaj na dowolny klawisz i zwroc jego kod
- ;Wejscie : ---
- ;Wyjscie : w AL zczytany znak z klawiatury
- PauseKey proc
- mov AH, 07h ;zczytaj znak (bez echa) z klawiatury - do INT 21h
- int 21h ;zczytaj znak (bez echa) z klawiatury - wynik w AL
- ret
- endp PauseKey
- ; Cls
- ;--------------------------------------------
- ;Opis : wyczysc ekran w trybie tekstowym
- ;Wejscie : ---
- ;Wyjscie : ---
- Cls proc
- mov cax, AX
- mov cbx, BX
- mov ccx, CX
- mov cdx, DX
- mov AX, 0b800h ;segement tesktowy z karty VGA
- mov ES, AX
- mov CX, 25*80 ;liczba znakow na ekranie
- xor BX, BX ;pozycja startowa
- .petla:
- mov byte ptr ES:[BX], 0 ;znak pusty
- add BX, 2 ;kolejna pozycja - opuszczamy bajt z wlasciwosciami znaku
- loop .petla
- ;juz pusto, teraz kursor w rog ekranu
- xor DX, DX ;rog ekranu
- xor BH, BH ;strona numer 0
- mov AH, 2 ;numer uslugi
- int 10h ;przerwanie video
- mov AX, cax
- mov BX, cbx
- mov CX, ccx
- mov DX, cdx
- ret
- endp Cls
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement