Advertisement
Guest User

Untitled

a guest
Aug 28th, 2010
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;Lista nr 6
  2. ;(c) W. Marks 2008
  3.  
  4. ;procedury pomocnicze
  5.  
  6.  
  7.         ;eksporty procedur
  8.     public PutPixel                     ;postaw piksel o danej barwie w danym miejscu na ekranie w trybie 13h
  9.     public Init13h                      ;rozpoczecie pracy w trybie graficznym 13h
  10.     public Close13h                     ;powrot z trybu 13h do trybu tekstowego
  11.     public PauseKey                     ;czekaj na dowolny klawisz i zwroc jego kod
  12.     public Cls                          ;wyczysc ekran w trybie tekstowym
  13.  
  14. .model small
  15.  
  16.  
  17. .stack
  18.  
  19.  
  20. .data
  21.         ;kopie rejestrow
  22.     cax     DW  ?
  23.     cbx     DW  ?
  24.     ccx     DW  ?
  25.     cdx     DW  ?
  26.  
  27. .code
  28.  
  29.         ;       PutPixel
  30.         ;--------------------------------------------
  31.         ;Opis       : postaw piksel o danej barwie w danym miejscu na ekranie w trybie 13h
  32.         ;Wejscie    : kolor :byte; x,y :word (na stosie, konwencja PASCALA)
  33.         ;Wyjscie    : ---
  34.     PutPixel proc
  35.         mov     cax, AX
  36.         mov     cbx, BX
  37.         mov     ccx, CX
  38.         pop     CX                         ;CX - adres powrotu
  39.         pop     AX                         ;AX = y
  40.         mov     BX, AX                     ;BX = y
  41.         shl     AX, 8                      ;AX = y*256
  42.         shl     BX, 6                      ;BX = y*64
  43.         add     AX, BX                     ;AX = y*256 + y*64 = y*320
  44.         pop     BX                         ;BX = x
  45.         add     AX, BX                     ;AX = y*320 + x
  46.         mov     DI, AX
  47.         mov     AX, 0a000h                 ;poczatek tablicy pikseli
  48.         mov     ES, AX
  49.         pop     AX                         ;AL = kolor
  50.         mov byte ptr ES:[DI], AL           ;stawiamy piksel
  51.         push    CX                         ;przywracamy adres powrotu
  52.         mov     AX, cax
  53.         mov     BX, cbx
  54.         mov     CX, ccx
  55.         ret
  56.     endp PutPixel
  57.    
  58.    
  59.         ;       Init13h
  60.         ;--------------------------------------------
  61.         ;Opis       : rozpoczecie pracy w trybie graficznym 13h
  62.         ;Wejscie    : ---
  63.         ;Wyjscie    : ---
  64.     Init13h proc
  65.         mov     cax, AX
  66.         mov     AX, 13h
  67.         int     10h
  68.         mov     AX, cax
  69.         ret
  70.     endp Init13h
  71.    
  72.         ;       Close13h
  73.         ;--------------------------------------------
  74.         ;Opis       : powrot z trybu 13h do trybu tekstowego
  75.         ;Wejscie    : ---
  76.         ;Wyjscie    : ---
  77.     Close13h proc
  78.         mov     cax, AX
  79.         mov     AX, 3
  80.         int     10h
  81.         mov     AX, cax
  82.         ret
  83.     endp Close13h
  84.    
  85.         ;       PauseKey
  86.         ;--------------------------------------------
  87.         ;Opis       : czekaj na dowolny klawisz i zwroc jego kod
  88.         ;Wejscie    : ---
  89.         ;Wyjscie    : w AL zczytany znak z klawiatury
  90.     PauseKey proc
  91.         mov     AH, 07h                 ;zczytaj znak (bez echa) z klawiatury - do INT 21h
  92.         int     21h                     ;zczytaj znak (bez echa) z klawiatury - wynik w AL
  93.         ret
  94.     endp PauseKey
  95.    
  96.         ;       Cls
  97.         ;--------------------------------------------
  98.         ;Opis       : wyczysc ekran w trybie tekstowym
  99.         ;Wejscie    : ---
  100.         ;Wyjscie    : ---
  101.     Cls proc
  102.         mov     cax, AX
  103.         mov     cbx, BX
  104.         mov     ccx, CX
  105.         mov     cdx, DX
  106.         mov     AX, 0b800h              ;segement tesktowy z karty VGA
  107.         mov     ES, AX
  108.         mov     CX, 25*80               ;liczba znakow na ekranie
  109.         xor     BX, BX                  ;pozycja startowa
  110.       .petla:
  111.         mov byte ptr ES:[BX], 0         ;znak pusty
  112.         add     BX, 2                   ;kolejna pozycja - opuszczamy bajt z wlasciwosciami znaku
  113.         loop    .petla
  114.             ;juz pusto, teraz kursor w rog ekranu
  115.         xor     DX, DX                  ;rog ekranu
  116.         xor     BH, BH                  ;strona numer 0
  117.         mov     AH, 2                   ;numer uslugi
  118.         int     10h                     ;przerwanie video
  119.         mov     AX, cax
  120.         mov     BX, cbx
  121.         mov     CX, ccx
  122.         mov     DX, cdx
  123.         ret
  124.     endp Cls
  125.  
  126. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement