include filtry.inc
.code
;*********************************************************************************************************************************************************************************************************************************************************************
; ODCIEŃ SZAROŚCI
;*********************************************************************************************************************************************************************************************************************************************************************
pushad
odcien_szar PROC uses ebx edx, w_bmp :DWORD, szerokosc :DWORD, wysokosc :DWORD
mov eax, szerokosc ;ładowanie do rejestru szerokości obrazu.
mov ebx, wysokosc ;ładowanie do rejestru wysokości obrazu
mul ebx
xor ebx, ebx
mov ebx, 3 ;RGB - RED, GREEN, BLUE
mul ebx
mov esi, w_bmp ;wskaźnik do początku tablicy bajtów obrazu bitmapy.
mov ecx, eax ;ecx - liczba bajtów do przetworzenia
add ecx, esi
assume esi:ptr byte
petla: xor eax, eax
xor ebx, ebx
mov al, [esi] ;Å‚adowanie R
mov bl, [esi+1] ;Å‚adowanie G
add eax, ebx ;sumowanie R + G
mov bl, [esi+2] ;Å‚adowanie B
add eax, ebx ;sumowanie R + G + B
xor ebx, ebx
mov ebx, 3
div ebx
mov [esi], al ;zapisywanie R
mov [esi+1], al ;zapisywanie G
mov [esi+2], al ;zapisywanie B
add esi, ebx ;zwiększanie adresu
cmp ecx, esi ;porównywanie zawartości dwóch rejestrów
ja petla ;skocz na początek jeśli ecx > esi
popad
ret
odcien_szar endp
end
;*********************************************************************************************************************************************************************************************************************************************************************
; SEPIA
;*********************************************************************************************************************************************************************************************************************************************************************
pushad
sepia PROC uses eax ebx edx esi edi, w_bmp :DWORD, szerokosc :DWORD, wysokosc :DWORD
invoke odcien_szar, w_bmp, szerokosc, wysokosc ;wywołanie procedury
mov eax, szerokosc ;ładowanie do rejestru szerokości obrazu.
mov ebx, wysokosc ;ładowanie do rejestru wysokości obrazu
mul ebx
xor ebx, ebx
mov ebx, 3 ;RGB - RED, GREEN, BLUE
mul ebx
mov esi, w_bmp ;wskaźnik do początku tablicy bajtów obrazu bitmapy.
mov ecx, eax
add ecx, esi
assume esi:ptr byte
petla: xor eax, eax
xor ebx, ebx
;mov eax, parametr
mov ebx, 2
mul ebx
mov bl, [esi]
add eax, ebx
mov [esi], al
xor eax, eax
xor ebx, ebx
;mov eax, parametr
mov bl, [esi+1]
add eax, ebx
mov [esi+1], al
xor ebx, ebx
mov ebx, 3
add esi, ebx
cmp ecx, esi ;porównywanie zawartości dwóch rejestrów
ja petla ;skocz na początek jeśli ecx > esi
popad
ret
sepia endp
end
include filtry.inc
.code
;*********************************************************************************************************************************************************************************************************************************************************************
; ODCIEŃ SZAROŚCI
;*********************************************************************************************************************************************************************************************************************************************************************
pushad
odcien_szar PROC uses ebx edx, w_bmp :DWORD, szerokosc :DWORD, wysokosc :DWORD
mov eax, szerokosc ;ładowanie do rejestru szerokości obrazu.
mov ebx, wysokosc ;ładowanie do rejestru wysokości obrazu
mul ebx
xor ebx, ebx
mov ebx, 3 ;RGB - RED, GREEN, BLUE
mul ebx
mov esi, w_bmp ;wskaźnik do początku tablicy bajtów obrazu bitmapy.
mov ecx, eax ;ecx - liczba bajtów do przetworzenia
add ecx, esi
assume esi:ptr byte
petla: xor eax, eax
xor ebx, ebx
mov al, [esi] ;Å‚adowanie R
mov bl, [esi+1] ;Å‚adowanie G
add eax, ebx ;sumowanie R + G
mov bl, [esi+2] ;Å‚adowanie B
add eax, ebx ;sumowanie R + G + B
xor ebx, ebx
mov ebx, 3
div ebx
mov [esi], al ;zapisywanie R
mov [esi+1], al ;zapisywanie G
mov [esi+2], al ;zapisywanie B
add esi, ebx ;zwiększanie adresu
cmp ecx, esi ;porównywanie zawartości dwóch rejestrów
ja petla ;skocz na początek jeśli ecx > esi
popad
ret
odcien_szar endp
end
;*********************************************************************************************************************************************************************************************************************************************************************
; SEPIA
;*********************************************************************************************************************************************************************************************************************************************************************
pushad
sepia PROC uses eax ebx edx esi edi, w_bmp :DWORD, szerokosc :DWORD, wysokosc :DWORD
invoke odcien_szar, w_bmp, szerokosc, wysokosc ;wywołanie procedury
mov eax, szerokosc ;ładowanie do rejestru szerokości obrazu.
mov ebx, wysokosc ;ładowanie do rejestru wysokości obrazu
mul ebx
xor ebx, ebx
mov ebx, 3 ;RGB - RED, GREEN, BLUE
mul ebx
mov esi, w_bmp ;wskaźnik do początku tablicy bajtów obrazu bitmapy.
mov ecx, eax
add ecx, esi
assume esi:ptr byte
petla: xor eax, eax
xor ebx, ebx
;mov eax, parametr
mov ebx, 2
mul ebx
mov bl, [esi]
add eax, ebx
mov [esi], al
xor eax, eax
xor ebx, ebx
;mov eax, parametr
mov bl, [esi+1]
add eax, ebx
mov [esi+1], al
xor ebx, ebx
mov ebx, 3
add esi, ebx
cmp ecx, esi ;porównywanie zawartości dwóch rejestrów
ja petla ;skocz na początek jeśli ecx > esi
popad
ret
sepia endp
end
To copy to clipboard, switch view to plain text mode
Bookmarks