GNU/Linux xterm-256color bash 143 views

// ============================================================
    // Nombre del archivo: nombre_usuario.s
    // Autor: Madrid Lugo Victor Manuel
    // Fecha 01/04/2025
    // Descripción: Captura el nombre del usuario y lo imprime en pantalla.
    // Demostración: https://asciinema.org/a/iLmMC7L51ZBxv4asG6PQMClIa    
    // ============================================================
    
    /*
    Equivalente en Java:
    
    import java.util.Scanner;
    
    public class NombreUsuario {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            System.out.print("Ingresa tu nombre: ");
            String nombre = scanner.nextLine();
            System.out.println("Nombre: " + nombre);
        }
    }
    */

    .section .data
mensaje:    .asciz "Ingresa tu nombre: "  
nombre_lbl: .asciz "Nombre: "  
buffer:     .skip 100      // Espacio para almacenar el nombre

    .section .text
    .global _start

_start:
    // Imprimir mensaje de entrada
    mov x0, 1              // File descriptor 1 (stdout)
    ldr x1, =mensaje       // Cargar dirección del mensaje
    mov x2, 18             // Tamaño del mensaje
    mov x8, 64             // syscall write
    svc #0                 // Llamada al sistema

    // Leer entrada del usuario
    mov x0, 0              // File descriptor 0 (stdin)
    ldr x1, =buffer        // Buffer donde se almacenará el nombre
    mov x2, 100            // Tamaño del buffer
    mov x8, 63             // syscall read
    svc #0                 // Llamada al sistema

    // Imprimir "Nombre: "
    mov x0, 1              // File descriptor 1 (stdout)
    ldr x1, =nombre_lbl    // Cargar dirección del texto "Nombre: "
    mov x2, 8              // Tamaño del texto
    mov x8, 64             // syscall write
    svc #0                 // Llamada al sistema

    // Imprimir el nombre ingresado
    mov x0, 1              // File descriptor 1 (stdout)
    ldr x1, =buffer        // Cargar dirección del buffer con el nombre
    mov x2, 100            // Tamaño máximo a imprimir
    mov x8, 64             // syscall write
    svc #0                 // Llamada al sistema

    // Salir del programa
    mov x0, 0              // Código de salida 0
    mov x8, 93             // syscall exit
    svc #0                 // Llamada al sistema