Created
April 11, 2025 00:12
-
-
Save enrmx/47e2b791e9fb3b312aeb7778d60e6520 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /* | |
| * ----------------------------------------------------------------------------> | |
| * Lenguajes de Interfaz en TECNM Campus ITT | |
| * Autor: Rodriguez Guerrero Garinel Enrique | |
| * Fecha: 2025-04-09 | |
| * Descripción: Calcula cuántas horas duerme una persona en su vida, | |
| * asumiendo 8 horas al día durante 365 días por año. | |
| * ----------------------------------------------------------------------------> | |
| */ | |
| /* | |
| * Python equivalente: | |
| * for años in [1, 10, 25, 80]: | |
| * print(f"{años} años → {años * 365 * 8} horas") | |
| */ | |
| .global _start | |
| .section .data | |
| msg1: .asciz "Horas dormidas en 1 año: " | |
| msg2: .asciz "Horas dormidas en 10 años: " | |
| msg3: .asciz "Horas dormidas en 25 años: " | |
| msg4: .asciz "Horas dormidas en 80 años: " | |
| nl: .asciz "\n" | |
| .section .bss | |
| .lcomm buffer, 16 | |
| .section .text | |
| _start: | |
| // Constante: 365 * 8 = 2920 horas por año | |
| movz w2, #2920 | |
| // --- 1 año --- | |
| mov w1, 1 | |
| mul w0, w1, w2 | |
| ldr x1, =buffer | |
| bl int_to_str | |
| ldr x1, =msg1 | |
| bl imprimir | |
| ldr x1, =buffer | |
| bl imprimir | |
| // --- 10 años --- | |
| mov w1, 10 | |
| mul w0, w1, w2 | |
| ldr x1, =buffer | |
| bl int_to_str | |
| ldr x1, =msg2 | |
| bl imprimir | |
| ldr x1, =buffer | |
| bl imprimir | |
| // --- 25 años --- | |
| mov w1, 25 | |
| mul w0, w1, w2 | |
| ldr x1, =buffer | |
| bl int_to_str | |
| ldr x1, =msg3 | |
| bl imprimir | |
| ldr x1, =buffer | |
| bl imprimir | |
| // --- 80 años --- | |
| mov w1, 80 | |
| mul w0, w1, w2 | |
| ldr x1, =buffer | |
| bl int_to_str | |
| ldr x1, =msg4 | |
| bl imprimir | |
| ldr x1, =buffer | |
| bl imprimir | |
| // salir | |
| mov x0, 0 | |
| mov x8, 93 | |
| svc 0 | |
| // ------------------------ | |
| // Imprimir cadena desde x1 | |
| // ------------------------ | |
| imprimir: | |
| mov x0, 1 | |
| mov x2, 0 | |
| .len: | |
| ldrb w3, [x1, x2] | |
| cbz w3, .done | |
| add x2, x2, 1 | |
| b .len | |
| .done: | |
| mov x8, 64 | |
| svc 0 | |
| ldr x1, =nl | |
| mov x2, 1 | |
| mov x8, 64 | |
| svc 0 | |
| ret | |
| // ------------------------ | |
| // Convertir entero sin signo a texto (decimal) | |
| // w0: valor, x1: buffer destino | |
| // ------------------------ | |
| int_to_str: | |
| mov x2, 15 | |
| add x1, x1, x2 | |
| mov w3, 10 | |
| .loop: | |
| udiv w4, w0, w3 | |
| msub w5, w4, w3, w0 | |
| add w5, w5, '0' | |
| strb w5, [x1], -1 | |
| mov w0, w4 | |
| cbnz w0, .loop | |
| ret |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment