// ****************************************************************************
// * Nombre del archivo: nombre.s
// * Descripción: Captura un nombre desde el teclado y lo muestra en pantalla
// * Autor: Roldan Castro Luis Alberto
// * Fecha: 01-04-2025
// * Plataforma: Raspberry Pi OS (64 bits)
// * Asccinema: https://asciinema.org/a/c1y4lV40pVniDIKWJJtH1n6Tc
// ****************************************************************************
// ****************************************************************************
// Version de C#
// Solicitar nombre
// Console.Write("Ingresa tu nombre: ");
// Leer entrada del usuario
// string nombre = Console.ReadLine();
// Mostrar saludo con salto de línea
// Console.WriteLine("Hola, " + nombre);
// ****************************************************************************
.section .data
buffer: .skip 256 // Reservamos 256 bytes para almacenar la entrada del usuario
mensaje_nombre: .asciz "Nombre: " // Mensaje inicial
mensaje_respuesta: .asciz "Su nombre es: " // Mensaje de respuesta
.section .text
.global _start
_start:
// Escribir "nombre: " en stdout
mov x0, 1 // stdout (descriptor de archivo 1)
ldr x1, =mensaje_nombre // Dirección del mensaje
mov x2, 8 // Tamaño del mensaje
mov x8, 64 // syscall write
svc 0 // Llamada al sistema
// Leer entrada desde stdin
mov x0, 0 // stdin (descriptor de archivo 0)
ldr x1, =buffer // Dirección del buffer donde almacenar los datos
mov x2, 256 // Número máximo de bytes a leer
mov x8, 63 // syscall read
svc 0 // Llamada al sistema
// Escribir "tu nombre es: " en stdout
mov x0, 1 // stdout (descriptor de archivo 1)
ldr x1, =mensaje_respuesta // Dirección del mensaje de respuesta
mov x2, 14 // Tamaño del mensaje
mov x8, 64 // syscall write
svc 0 // Llamada al sistema
// Escribir la entrada en stdout
mov x0, 1 // stdout (descriptor de archivo 1)
ldr x1, =buffer // Dirección del buffer con los datos leídos
mov x2, 256 // Número máximo de bytes a escribir
mov x8, 64 // syscall write
svc 0 // Llamada al sistema
// Salir del programa
mov x8, 93 // syscall exit
mov x0, 0 // Código de salida 0
svc 0 // Llamada al sistema