Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .file "programa.c" #Nombre del archivo
- .def ___main; .scl 2; .type 32; .endef
- .section .rdata,"dr"
- LC0: #Etiqueta L0
- .ascii "A[%d]= \0" #Texto ancii
- LC1: #Etiqueta L1
- .ascii "%d\0" #Texto ancii
- LC2: #Etiqueta L2
- .ascii " %d \0" #Texto ancii
- LC3: #Etiqueta L3
- .ascii "\12\0" #Texto ancii
- .text
- .globl _main
- .def _main; .scl 2; .type 32; .endef
- _main: #Main
- LFB6: #Etiqueta
- .cfi_startproc
- pushl %ebp #Instrucciones de pila
- .cfi_def_cfa_offset 8
- .cfi_offset 5, -8
- movl %esp, %ebp #Instrucciones de transferencia
- son utilizados para mover los contenidos
- .cfi_def_cfa_register 5
- andl $-16, %esp #Realiza la conjunción de los operandos bit por bit.
- subl $48, %esp #La fuente se resta del destino y es el resultado almacena en el destino.
- call ___main #Llama a una subrutina
- movl $0, 44(%esp) #Función de retorno
- jmp L2 #Salta a L2
- L3: #Etiqueta L3
- movl 44(%esp), %eax #Mueve valores a eax
- incl %eax #Añade un operador binario de destino sin firmar
- movl %eax, 4(%esp) #Guarda nuevo valor en 4 de esp
- movl $LC0, (%esp) #Apunta LC0 a esp
- call _printf #Pide que se imprima
- movl 44(%esp), %eax #Mueve el valor de esp a eax
- leal 0(,%eax,4), %edx #Transfiere la dirección de eax para el registro edx
- leal 24(%esp), %eax #Transfiere la dirección de esp para el registro eax
- addl %edx, %eax #Añade edx a eax y sustituye el contenido original de eax.
- movl %eax, 4(%esp) #Mueve el contenido de eax a esp
- movl $LC1, (%esp) #Apunta LC1 a esp
- call _scanf #Pide leer variable
- incl 44(%esp) #Añade un operador binario de destino sin firmar
- L2: #Etiqueta L2
- cmpl $4, 44(%esp) #Resta fuente de destino y actualiza las banderas
- jle L3 #Salta a L3
- movl $0, 44(%esp) #Asigna 0 a esp
- jmp L4 #Salta a L4
- L5: #Etiqueta L5
- movl 44(%esp), %eax #Mueve el valor de esp a eax
- movl 24(%esp,%eax,4), %eax #Mueve los contenidos
- movl %eax, 4(%esp) #Guarda nuevo valor en esp
- movl $LC2, (%esp) Apunta LC2 a esp
- call _printf #Llama a printf
- incl 44(%esp) #Añade un operador binario de destino sin firmar
- L4: #Etiqueta L4
- cmpl $4, 44(%esp) #Resta fuente de destino y actualiza las banderas
- jle L5 #Salta a L5
- movl $LC3, (%esp) #Apunta LC3 a esp
- call _puts #Llama a puts
- movl $4, 44(%esp) #Mueve el valor a esp
- jmp L6 #Llama a L6
- L7: #Etiqueta L7
- movl 44(%esp), %eax #Mueve el valor de esp a eax
- movl 24(%esp,%eax,4), %eax #Mueve los contenidos
- movl %eax, 4(%esp) #Guarda nuevo valor en esp
- movl $LC2, (%esp) #Apunta LC2 a esp
- call _printf #Llama a printf
- decl 44(%esp) #Sin signo binario sustracción desde el destino
- L6: #Etiqueta L6
- cmpl $0, 44(%esp) #Resta fuente de destino y actualiza las banderas
- jns L7 #Salta si se cumple la condición
- call _getch #Llama a getch
- movl $0, %eax ##Asigna 0 a esp
- leave #Libera las variables locales creados por la anterior ENTER
- la instrucción mediante la restauración de SP y BP a su condición antes de el marco de pila procedimiento se inicia.
- .cfi_restore 5
- .cfi_def_cfa 4, 4
- ret #Regresa control a SO
- .cfi_endproc #Fin del cfi
- LFE6: #etiqueta
- .def _puts; .scl 2; .type 32; .endef
- .def _printf; .scl 2; .type 32; .endef
- .def _scanf; .scl 2; .type 32; .endef
- .def _getch; .scl 2; .type 32; .endef
Add Comment
Please, Sign In to add comment