All pastes #792835 Raw Edit

Someone

public text v1 · immutable
·published 2007-11-21 19:09 UTC
rendered paste body
;void monoMax(unsigned char* bmpIn,
;unsigned char* bmpOut,
;short unsigned int tamFil,
;short unsigned int tamCol,)



global monoMax

%define matriz1 [ebp + 8]; 32 bits
%define matrizres [ebp + 12]; 32 bits(la matriz es de 1/3 del tamaño de la original ya que guarda solamente un valor en vez de los 3)
%define col [ebp + 16];16 bits (cant en pixeles)
%define fil [ebp + 20]; 16 bits (cant en pixeles)

%define cont [ebp - 4]              ; Variable local
              

section.text
monoMax: 
               push ebp
               mov ebp, esp
               sub esp, 4
               push edi
               push esi
               push ebx             
               xor ebx, ebx
               mov bx, col                     ;en ebx me guardo la cantidad de pixeles por cada fila
               mov esi, matriz1                ; cargo la matriz A
               mov edi, matrizres              ; cargo la matriz de resultado
               mov ecx, fil                    ; me guardo en ecx la cantidad de filas para el ciclo
ciclofilas:
              mov cont, ebx                    ; me guardo el contador para cada ciclo de columnas

ciclocolumnas:
              cmp ebx, 0
              je continuo
              xor eax, eax
              xor edx, ecx
              
              mov al, [esi]
              mov dl, [esi + 1]
              cmp al, dl
              cmovb ax, dx
              mov dl, [esi + 2]
              cmp al, dl
              cmovb ax, dx
              mov [edi], al
              add esi, 3
              add edi, 1
              dec ebx
              jmp ciclocolumnas

continuo:
              mov ebx, cont
              loop ciclofilas                      ; continuo hasta terminar con todas las filas
fin:
              pop ebx
              pop esi
              pop edi
              add esp, 4
              pop ebp
              ret