Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- org 100h
- section .text
- call initVGA
- call petla
- zakoncz:
- mov ah, 9
- mov dx, blad
- int 21h
- mov eax,4c00h;zakonczenie programu
- int 21h
- petla:
- ; otwieramy plik
- mov ax, 3d00h
- mov dx, plik1
- int 21h
- call otworz
- call wait2seconds
- mov ah,0
- int 10h
- mov ax, 3d00h; otwieramy plik
- mov dx, plik2
- int 21h
- call otworz
- call wait2seconds
- mov ah,0
- int 10h
- mov ax, 3d00h; otwieramy plik
- mov dx, plik2
- int 21h
- call otworz
- call wait2seconds
- mov ah,0
- int 10h
- jmp petla
- wait2seconds:
- ;wait 1s
- mov CX, 0FH
- mov DX, 4240H
- mov AH, 86H
- int 15H
- ;wait 1s
- mov CX, 0FH
- mov DX, 4240H
- mov AH, 86H
- int 15H
- ret
- initVGA:
- mov ax,13h; inicjalizajca trybu graficznego 320x200x256
- int 10h
- ret
- otworz:
- jnc otw_ok
- otw_ok:;probujemy utworzyc uchwyt do pliku, odczytac naglowek
- mov bx, ax ; bx = uchwyt do pliku
- mov ah, 3fh ; czytanie z pliku
- mov cx, 54 ; wyrzucamy 54 bajty naglowka
- mov dx, smieci
- int 21h
- jc zakoncz
- xor si, si ; indeks do tablicy "paleta"
- czytaj_pal: ;funkcja wczytuje 4 baity i
- mov ah, 3fh ; czytanie z pliku
- mov cx, 4 ; czytam po 4 bajty - do b,g,r i z.
- mov dx, b
- int 21h
- jc zakoncz
- mov al, [r]
- shr al, 2
- mov [paleta+si], al ; paleta[si] = [r] / 4
- mov al, [g]
- shr al, 2
- mov [paleta+si+1], al ; paleta[si] = [g] / 4
- mov al, [b]
- shr al, 2
- mov [paleta+si+2], al ; paleta[si] = [b] / 4
- add si, 3
- cmp si, 256*3 ; sprawdz, czy nie zapisalismy
- ; juz wszystkich kolorow
- jb czytaj_pal
- xor ax, ax
- xor si, si ; SI = indeks do palety
- mov dx, 3c8h ; port karty graficznej
- wyslij_palete:
- out dx, al ; wysy�amy numer rejestru,
- ; wszystkie od 0 do 255
- inc dx ; DX = port 3C9h
- push ax
- ; zapisujemy kolorki:
- mov al, [paleta+si] ; AL = czerwony
- out dx, al
- mov al, [paleta+si+1] ; AL = zielony
- out dx, al
- mov al, [paleta+si+2] ; AL = niebieski
- out dx, al
- pop ax
- add si, 3 ; przejd� do nast�pnych kolor�w
- dec dx ; DX z powrotem 3C8h
- inc ax ; wybierzemy kolejny rejestr koloru
- ; w karcie graficznej
- cmp ax, 256 ; sprawd�, czy ju� koniec pracy
- jb wyslij_palete
- mov ax, 0a000h
- mov ds, ax ; czytaj bezpo�rednio do pami�ci ekranu
- mov dx, 64000-320 ; DX = adres ostatniego wiersza
- mov cx, 320 ; z pliku czytamy po 320 bajt�w
- obrazek:
- mov ah, 3fh
- int 21h ; czytaj 320 bajt�w prosto na ekran
- jc zakoncz
- sub dx, 320 ; przejd� do wcze�niejszego wiersza
- jnc obrazek ; dop�ki nie musimy po�ycza�
- ; do odejmowania. Po�yczymy dopiero
- ; wtedy, gdy DX < 320 - a to si�
- ; zdarzy dopiero, gdy DX = 0
- ; Wtedy ko�czymy prac�.
- ; koniec programu:
- mov ah, 3eh
- int 21h ; zamknij plik
- jc zakoncz
- xor ah, ah
- int 16h
- mov ax, 3
- int 10h
- ret
- plik1 db "rysunek.bmp",0
- plik2 db "rysunek2.bmp",0
- plik3 db "rysunek3.bmp",0
- blad db "Blad pliku!$"
- smieci: times 54 db 0
- paleta: times 768 db 0
- b db 0
- g db 0
- r db 0
- z db 0
- kolor db 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement