Ensamblador - Problemas con un proyecto

 
Vista:

Problemas con un proyecto

Publicado por Alex (1 intervención) el 01/04/2011 12:57:53
Hola, estoy estudiando programación en ensamblador, y en un proyecto nos piden que en una imagen guardada en buffer, comparemos las tonalidades de colores (rojo, verde, azul) y si la suma azul+verde es más pequeña que rojo, dividamos la tonalidad del rojo entre 4. Al ejecutar no me da ningun error y con el ddd todas las operaciones y valores del registro son correctos, pero la imagen no se modifica. Creo que el problema está al mover el valor de la división al buffer, pero no se como hacerlo.

Copio el código que tengo:

pushl %ebp
movl %esp, %ebp
pushl %esi
pushl %edi
pushl %ebx

movl $0, %edi
for3: cmpl $99, %edi
jge finfor3
movl $0,%esi
for4:
cmpl $99,%esi
jge finfor4
movl %edi,%ebx
imull $4, %ebx
addl %esi,%ebx
movb buffer(,%ebx,4),%dl
movb buffer+1(,%ebx,4),%cl
movb buffer+2(,%ebx,4),%dh
addb %dh,%cl
if:
cmpb %dl,%cl
jle finif
movzbw %dl,%ax
movb $4, %dl
divb %dl
movb %al, buffer(,%ebx,4)
finif:
incl %esi
jmp for4

finfor4:
incl %edi
jmp for3
finfor3:


popl %ebx
popl %edi
popl %esi
movl %ebp,%esp
popl %ebp
ret





¿Alguien podría decirme como hacerlo?


¡Muchas gracias por adelantado!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder