document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. //Etiqueta con el contenido a imprimir cuando el
  2. //número es impar
  3. .impresion_impar:
  4.     .string "Impar: %d\\n"
  5. //Etiqueta con el contenido a imprimir cuando el
  6. //númnero es par
  7. .impresion_par:
  8.     .string "Par: %d\\n"
  9.     .text
  10. .globl main
  11.     .type   main, @function
  12. main:
  13.  
  14.     pushl   %ebp
  15.     movl    %esp, %ebp
  16.     subl    $32, %esp
  17. //Registro que servira de contador
  18.     movl    $1, 28(%esp)
  19. //Brincamos a la etiqueta .for_comparacion
  20.     jmp .for_comparacion
  21. .for:
  22.     //Movemos el contenido del contador a eax
  23.     movl    28(%esp), %eax
  24.     //Le aplicamos la operacion and para saber si es par
  25.     andl    $1, %eax
  26.     testl   %eax, %eax
  27.     //Si no es par, lo mandamos a la etiqueta .no_par
  28.     jne .no_par
  29.     //Si es par, realizamos las operaciones para imprimirlo
  30.     //usando el string de la etiqueta .impresion_par y
  31.     //sumamos 1 al coontador
  32.     movl    $.impresion_par, %eax
  33.     movl    28(%esp), %edx
  34.     movl    %edx, 4(%esp)
  35.     movl    %eax, (%esp)
  36.     call    printf
  37.     addl    $1, 28(%esp)
  38. .no_par:
  39.     //Imprimimos el contenido de la etiqueta .impresion_impar
  40.     //usando el contenido del registro
  41.     movl    $.impresion_impar, %eax
  42.     movl    28(%esp), %edx
  43.     movl    %edx, 4(%esp)
  44.     movl    %eax, (%esp)
  45.     call    printf
  46.     //Agregamos 1 al contador y brincamos a la comparacion
  47.     addl    $1, 28(%esp)
  48.     jmp     .for_comparacion
  49.  
  50. .for_comparacion:
  51. //Comparamos el valor del registro que usamos como contador
  52. //con 20
  53.     cmpl    $20, 28(%esp)
  54. //Si es menor o igual, repetimos el ciclo
  55.     jle .for
  56. //Si no, liberamos el stack, y terminamos
  57.     leave
  58.     ret
');