//Etiqueta con el contenido a imprimir cuando el
//número es impar
.impresion_impar:
.string "Impar: %d\\n"
//Etiqueta con el contenido a imprimir cuando el
//númnero es par
.impresion_par:
.string "Par: %d\\n"
.text
.globl main
.type main, @function
main:
pushl %ebp
movl %esp, %ebp
subl $32, %esp
//Registro que servira de contador
movl $1, 28(%esp)
//Brincamos a la etiqueta .for_comparacion
jmp .for_comparacion
.for:
//Movemos el contenido del contador a eax
movl 28(%esp), %eax
//Le aplicamos la operacion and para saber si es par
andl $1, %eax
testl %eax, %eax
//Si no es par, lo mandamos a la etiqueta .no_par
jne .no_par
//Si es par, realizamos las operaciones para imprimirlo
//usando el string de la etiqueta .impresion_par y
//sumamos 1 al coontador
movl $.impresion_par, %eax
movl 28(%esp), %edx
movl %edx, 4(%esp)
movl %eax, (%esp)
call printf
addl $1, 28(%esp)
.no_par:
//Imprimimos el contenido de la etiqueta .impresion_impar
//usando el contenido del registro
movl $.impresion_impar, %eax
movl 28(%esp), %edx
movl %edx, 4(%esp)
movl %eax, (%esp)
call printf
//Agregamos 1 al contador y brincamos a la comparacion
addl $1, 28(%esp)
jmp .for_comparacion
.for_comparacion:
//Comparamos el valor del registro que usamos como contador
//con 20
cmpl $20, 28(%esp)
//Si es menor o igual, repetimos el ciclo
jle .for
//Si no, liberamos el stack, y terminamos
leave
ret