Skip to content

Instantly share code, notes, and snippets.

@enrmx
Created April 11, 2025 00:12
Show Gist options
  • Select an option

  • Save enrmx/47e2b791e9fb3b312aeb7778d60e6520 to your computer and use it in GitHub Desktop.

Select an option

Save enrmx/47e2b791e9fb3b312aeb7778d60e6520 to your computer and use it in GitHub Desktop.
/*
* ---------------------------------------------------------------------------->
* 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