**
Nombre: dec3.s
Autor: Karla Itzel Vázquez Cruz
Fecha: 08-04-2025
Descripción: Ciclo comenzado desde 20 con decremento de 3
Plataforma: Raspberry Pi OS 64-bit
Asciinema: dec3.s
Versión en C:
Versión en ARM64 RaspbianOS Linux:
.section .data
msg: .ascii "Ciclo desde 30 restando de 3 en 3:\n"
len_msg = . - msg
newline: .ascii "\n"
.section .bss
num_buffer: .skip 16
.section .text
.global _start
_start:
// Imprimir mensaje
ldr x0, =msg
mov x1, #len_msg
bl print_msg
mov x20, #30 // Valor inicial
mov x21, #0 // Contador de iteraciones
loop:
cmp x21, #5 // ¿Ya hicimos 5 iteraciones?
bge end_program
mov x0, x20 // Pasar número a imprimir
bl print_int
sub x20, x20, #3 // Restar 3
add x21, x21, #1 // i++
b loop
end_program:
// Salto de línea
ldr x1, =newline
mov x2, #1
mov x0, #1
mov x8, #64
svc #0
// Salida del programa
mov x8, #93
mov x0, #0
svc #0
// ---------------- Funciones ----------------
print_msg:
mov x2, x1
mov x1, x0
mov x0, #1
mov x8, #64
svc #0
ret
print_int:
ldr x1, =num_buffer
add x1, x1, #15
mov x2, #10
mov x3, x0
mov x4, x1
convert:
udiv x5, x3, x2
msub x6, x5, x2, x3
add x6, x6, #'0'
sub x1, x1, #1
strb w6, [x1]
mov x3, x5
cbz x3, print_it
b convert
print_it:
sub x2, x4, x1
mov x0, #1
mov x8, #64
mov x1, x1
svc #0
// Salto de línea
ldr x1, =newline
mov x2, #1
mov x0, #1
mov x8, #64
svc #0
ret