Advertisement
piotranon

Untitled

Jun 29th, 2020
433
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.                                                                      org 100h
  2.                                                      
  3. ; uruchamiamy tryb graficzny - obraz bmp 320x200x256
  4. mov ax, 13h
  5. int 10h
  6.  
  7. ; otwieramy plik tylko do odczytu
  8. mov ax, 3d00h      
  9. mov dx, nazwa_pliku
  10. int 21h
  11.  
  12. jnc otw_ok
  13.  
  14. ;wait 1s
  15. mov     CX, 0FH
  16. mov     DX, 4240H
  17. mov     AH, 86H
  18. int     15H
  19. ;wait 1s
  20. mov     CX, 0FH
  21. mov     DX, 4240H
  22. mov     AH, 86H
  23. int     15H
  24.  
  25. ; otwieramy plik tylko do odczytu
  26. mov ax, 3d00h      
  27. mov dx, nazwa_pliku2
  28. int 21h
  29.  
  30. mov ah, 9
  31. mov dx, blad_plik       ; wy�wietlane, gdy wyst�pi� b��d
  32. int 21h
  33.  
  34. err:
  35.     mov ax, 4c01h       ; wyj�cie z kodem b��du=1
  36.     int 21h
  37.  
  38. otw_ok:
  39.     mov bx, ax          ; bx = uchwyt do pliku
  40.     mov ah, 3fh         ; czytanie z pliku
  41.     mov cx, 54          ; wyrzucamy 54 bajty nag��wka
  42.     mov dx, smieci
  43.     int 21h
  44.     jc  err
  45.  
  46. ; wczytywanie palety z pliku:
  47.  
  48.  
  49.     xor si, si          ; indeks do tablicy "paleta"
  50.  
  51. czytaj_pal:
  52.     mov ah, 3fh         ; czytanie z pliku
  53.     mov cx, 4           ; czytam po 4 bajty - do b,g,r i z.
  54.     mov dx, b
  55.     int 21h
  56.     jc  err
  57.  
  58.     mov al, [r]
  59.     shr al, 2
  60.     mov [paleta+si], al     ; paleta[si] = [r] / 4
  61.  
  62.     mov al, [g]
  63.     shr al, 2
  64.     mov [paleta+si+1], al   ; paleta[si] = [g] / 4
  65.  
  66.     mov al, [b]
  67.     shr al, 2
  68.     mov [paleta+si+2], al   ; paleta[si] = [b] / 4
  69.  
  70.     add si, 3          
  71.  
  72.     cmp si, 256*3       ; sprawd�, czy nie zapisali�my
  73.                         ; ju� wszystkich kolor�w
  74.     jb  czytaj_pal
  75.  
  76. ; wysy�anie palety do karty graficznej:
  77.  
  78.     xor ax, ax
  79.     xor si, si          ; SI = indeks do palety
  80.  
  81.     mov dx, 3c8h        ; port karty graficznej
  82.    
  83. wyslij_palete:
  84.     out dx, al          ; wysy�amy numer rejestru,
  85.                         ; wszystkie od 0 do 255
  86.  
  87.     inc dx          ; DX = port 3C9h
  88.  
  89.     push    ax
  90.                     ; zapisujemy kolorki:
  91.                     ; czerwony, zielony, niebieski.
  92.  
  93.     mov al, [paleta+si]     ; AL = czerwony
  94.                    
  95.     out dx, al
  96.  
  97.     mov al, [paleta+si+1]   ; AL = zielony
  98.     out dx, al
  99.  
  100.     mov al, [paleta+si+2]   ; AL = niebieski
  101.     out dx, al
  102.  
  103.     pop ax
  104.  
  105.     add si, 3           ; przejd� do nast�pnych kolor�w
  106.  
  107.     dec dx          ; DX z powrotem 3C8h
  108.  
  109.     inc ax          ; wybierzemy kolejny rejestr koloru
  110.                     ; w karcie graficznej
  111.  
  112.     cmp ax, 256         ; sprawd�, czy ju� koniec pracy
  113.     jb  wyslij_palete
  114.  
  115. ; wczytywanie obrazka:
  116.  
  117.     mov ax, 0a000h
  118.     mov ds, ax      ; czytaj bezpo�rednio do pami�ci ekranu
  119.  
  120.     mov dx, 64000-320       ; DX = adres ostatniego wiersza
  121.  
  122.     mov cx, 320         ; z pliku czytamy po 320 bajt�w
  123.  
  124. obrazek:
  125.     mov ah, 3fh
  126.     int 21h         ; czytaj 320 bajt�w prosto na ekran
  127.     jc  err
  128.  
  129.     sub dx, 320         ; przejd� do wcze�niejszego wiersza
  130.     jnc obrazek         ; dop�ki nie musimy po�ycza�
  131.                     ; do odejmowania. Po�yczymy dopiero
  132.                     ; wtedy, gdy DX < 320 - a to si�
  133.                     ; zdarzy dopiero, gdy DX = 0
  134.                     ; Wtedy ko�czymy prac�.
  135.  
  136. ; koniec programu:
  137.  
  138.     mov ah, 3eh
  139.     int 21h         ; zamknij plik
  140.     jc  err
  141.  
  142.     xor ah, ah
  143.     int 16h        
  144.  
  145.     mov ax, 3
  146.     int 10h        
  147.  
  148.     mov ax, 4c00h
  149.     int 21h
  150.  
  151. ; dane:
  152.  
  153.  
  154. nazwa_pliku db  "rysunek.bmp",0
  155. nazwa_pliku2    db  "rysunek2.bmp",0
  156. blad_plik   db  "Blad operacji na pliku!$"
  157.  
  158. smieci:     times   54  db 0
  159. paleta:     times   768 db 0
  160. b       db 0
  161. g       db 0
  162. r       db 0
  163. z       db 0
  164. kolor       db 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement