GNU/Linux xterm-256color bash 146 views

// ****************************************************************************
// * 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