.file "Raro.pas" .section .text .section .text .balign 4 .balign 4 .globl PASCALMAIN PASCALMAIN: .globl _main _main: pushl %ebp movl %esp,%ebp ;llama a FPC_INITIALIZEUNITS para que cree e inicialize las variables q se van ;a usar call FPC_INITIALIZEUNITS call CRT_CLRSCR movw $1,U_P$RARO_NUMERO decw U_P$RARO_NUMERO .balign 4 ; Etiqueta que le da el valor 0 a suma y le da a temp el valor de numero .L6: incw U_P$RARO_NUMERO movw $0,U_P$RARO_SUMA movw U_P$RARO_NUMERO,%ax movw %ax,U_P$RARO_TEMP jmp .L12 .balign 4 ;Esta etiqueta es para asignar al digito el residuo de temp/10, le asigna a suma su valor más ;dígito al cubo y le asigna a temp su valor entre 10; .L11: movswl U_P$RARO_TEMP,%eax cltd movl $10,%ecx ;Calcula el residuo idivl %ecx movw %dx,U_P$RARO_DIGITO movswl U_P$RARO_DIGITO,%eax movswl U_P$RARO_DIGITO,%edx imull %eax,%edx ;asigna el residuo movswl U_P$RARO_DIGITO,%ecx ;Eleva al cubo digito imull %edx,%ecx movswl U_P$RARO_SUMA,%eax ;Suma el valor de digito al cubo con el de suma addl %ecx,%eax ;asigna el valor de suma movw %ax,U_P$RARO_SUMA movswl U_P$RARO_TEMP,%eax cltd movl $10,%ecx ;Divide temp entre 10 idivl %ecx movw %ax,U_P$RARO_TEMP ;Esta etiqueta se encarga de evaluar la condición de parada del while, si no se cumple la ;condición entra al jne y va a .L11 sino brinca a .L13 .L12: movswl U_P$RARO_TEMP,%eax testl %eax,%eax jne .L11 jmp .L13 ;Esta etiqueta es la que se encarga de evaluar el for usando jl, si el for no cumple ;la condición de parada vuelve a brincar a L6 para que vuelva a entrar. .L13: cmpw $10,U_P$RARO_NUMERO jl .L6 call FPC_DO_EXIT leave ret .balign 4 .section .data .ascii "FPC 2.0.2 [2005/11/26] for i386 - Win32" .balign 16 .balign 16 .globl THREADVARLIST_P$RARO THREADVARLIST_P$RARO: .long 0 .balign 4 .globl FPC_THREADVARTABLES FPC_THREADVARTABLES: .long 5 .long THREADVARLIST_SYSTEM .long THREADVARLIST_OBJPAS .long THREADVARLIST_WINDOWS .long THREADVARLIST_CRT .long THREADVARLIST_P$RARO .balign 4 .globl FPC_RESOURCESTRINGTABLES FPC_RESOURCESTRINGTABLES: .long 0 .balign 4 .globl INITFINAL INITFINAL: .long 3,0 .long INIT$_SYSTEM .long FINALIZE$_SYSTEM .long INIT$_OBJPAS .long FINALIZE$_OBJPAS .long INIT$_CRT .long 0 .balign 4 .globl __stklen __stklen: .long 262144 .globl __heapsize __heapsize: .long 0 .section .data .section .data .section .data .section .bss .section .bss .balign 2 .lcomm U_P$RARO_NUMERO,2 .section .bss .balign 2 .lcomm U_P$RARO_TEMP,2 .section .bss .balign 2 .lcomm U_P$RARO_SUMA,2 .section .bss .balign 2 .lcomm U_P$RARO_DIGITO,2