Advertisement
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
- Hace que incremente la "i" del arreglo
- 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
- hace que se pueda imprimir la primer
- linea de arreglo
- 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
- Hace salto de linea \n
- 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
- Imprime la inversa
- 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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement