Guest User

Untitled

a guest
Jun 30th, 2018
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.     .file   "programa.c"        #Nombre del archivo
  2.     .def    ___main;    .scl    2;  .type   32; .endef
  3.     .section .rdata,"dr"
  4. LC0:                    #Etiqueta L0
  5.     .ascii "A[%d]=  \0"     #Texto ancii
  6. LC1:                    #Etiqueta L1
  7.     .ascii "%d\0"           #Texto ancii
  8. LC2:                    #Etiqueta L2
  9.     .ascii " %d \0"         #Texto ancii
  10. LC3:                    #Etiqueta L3
  11.     .ascii "\12\0"          #Texto ancii
  12.     .text
  13.     .globl  _main
  14.     .def    _main;  .scl    2;  .type   32; .endef
  15. _main:                  #Main
  16. LFB6:                   #Etiqueta
  17.     .cfi_startproc
  18.     pushl   %ebp            #Instrucciones de pila
  19.     .cfi_def_cfa_offset 8
  20.     .cfi_offset 5, -8
  21.     movl    %esp, %ebp      #Instrucciones de transferencia    
  22.                     son utilizados para mover los                               contenidos
  23.     .cfi_def_cfa_register 5
  24.     andl    $-16, %esp      #Realiza la conjunción de los                              operandos bit por bit.
  25.     subl    $48, %esp       #La fuente se resta del destino                                 y es el resultado almacena en el                                destino.
  26.     call    ___main         #Llama a una subrutina
  27.     movl    $0, 44(%esp)        #Función de retorno
  28.     jmp L2          #Salta a L2
  29. L3:                 #Etiqueta L3
  30.     movl    44(%esp), %eax      #Mueve valores a eax
  31.     incl    %eax            #Añade un operador binario de                              destino sin firmar
  32.     movl    %eax, 4(%esp)       #Guarda nuevo valor en 4 de esp
  33.     movl    $LC0, (%esp)        #Apunta LC0 a esp
  34.     call    _printf         #Pide que se imprima
  35.     movl    44(%esp), %eax      #Mueve el valor de esp a eax
  36.     leal    0(,%eax,4), %edx        #Transfiere la dirección de                                eax para el registro edx
  37.     leal    24(%esp), %eax      #Transfiere la dirección de                                esp para el registro eax
  38.     addl    %edx, %eax      #Añade edx a eax y sustituye                               el contenido original de eax.    
  39.     movl    %eax, 4(%esp)       #Mueve el contenido de eax a esp
  40.     movl    $LC1, (%esp)        #Apunta LC1 a esp
  41.     call    _scanf          #Pide leer variable
  42.     incl    44(%esp)            #Añade un operador binario de                              destino sin firmar
  43. L2:                 #Etiqueta L2
  44.     cmpl    $4, 44(%esp)        #Resta fuente de destino y                              actualiza las banderas
  45.     jle L3          #Salta a L3
  46.     movl    $0, 44(%esp)        #Asigna 0 a esp
  47.     jmp L4          #Salta a L4
  48. L5:                 #Etiqueta L5
  49.     movl    44(%esp), %eax      #Mueve el valor de esp a eax
  50.     movl    24(%esp,%eax,4), %eax   #Mueve los contenidos
  51.     movl    %eax, 4(%esp)       #Guarda nuevo valor en esp
  52.     movl    $LC2, (%esp)        Apunta LC2 a esp
  53.     call    _printf         #Llama a printf
  54.     incl    44(%esp)            #Añade un operador binario de                              destino sin firmar
  55. L4:                 #Etiqueta L4
  56.     cmpl    $4, 44(%esp)        #Resta fuente de destino y                              actualiza las banderas
  57.     jle L5          #Salta a L5
  58.     movl    $LC3, (%esp)        #Apunta LC3 a esp
  59.     call    _puts           #Llama a puts
  60.     movl    $4, 44(%esp)        #Mueve el valor a esp
  61.     jmp L6          #Llama a L6
  62. L7:                 #Etiqueta L7
  63.     movl    44(%esp), %eax      #Mueve el valor de esp a eax
  64.     movl    24(%esp,%eax,4), %eax   #Mueve los contenidos
  65.     movl    %eax, 4(%esp)       #Guarda nuevo valor en esp
  66.     movl    $LC2, (%esp)        #Apunta LC2 a esp
  67.     call    _printf         #Llama a printf
  68.     decl    44(%esp)            #Sin signo binario sustracción                                 desde el destino
  69. L6:                 #Etiqueta L6
  70.     cmpl    $0, 44(%esp)        #Resta fuente de destino y                              actualiza las banderas
  71.     jns L7          #Salta si se cumple la condición
  72.     call    _getch          #Llama a getch
  73.     movl    $0, %eax            ##Asigna 0 a esp
  74.     leave               #Libera las variables locales                               creados por la anterior ENTER
  75.                         la instrucción mediante la                                 restauración de SP y BP a su                               condición antes de el marco de                                 pila procedimiento se inicia.
  76.     .cfi_restore 5
  77.     .cfi_def_cfa 4, 4
  78.     ret             #Regresa control a SO
  79.     .cfi_endproc            #Fin del cfi
  80. LFE6:                       #etiqueta
  81.     .def    _puts;  .scl    2;  .type   32; .endef
  82.     .def    _printf;    .scl    2;  .type   32; .endef
  83.     .def    _scanf; .scl    2;  .type   32; .endef
  84.     .def    _getch; .scl    2;  .type   32; .endef
Add Comment
Please, Sign In to add comment