GNU/Linux xterm-256color bash 297 views

**
Nombre: multi.s
Autor: Karla Itzel Vázquez Cruz
Fecha: 07-04-2025
Descripción: Verifica si un numero es multiplo de 5
Asciinema: multi.s


Versión en C:

    using System;
    class Programa {
        static void Main() {
            Console.Write("Ingresa un número: ");
            int n = int.Parse(Console.ReadLine());
            if (n % 5 == 0)
                Console.WriteLine("Es múltiplo de 5");
            else
                Console.WriteLine("NO es múltiplo de 5");
        }
    }

Código en ARM64 RaspbianOS Linux:

.section .data
prompt:     .asciz "Ingresa un número: "
buffer:     .skip 20                        // Espacio para almacenar el número como cadena
esMultiplo: .asciz "Es múltiplo de 5\n"
noMultiplo: .asciz "NO es múltiplo de 5\n"

.section .text
.global _start

_start:
    // Mostrar mensaje "Ingresa un número: "
    ldr     x0, =prompt
    mov     x1, x0
    mov     x2, #19                // Longitud del mensaje
    mov     x0, #1                 // stdout
    mov     x8, #64                // syscall write
    svc     #0

    // Leer cadena desde stdin
    ldr     x1, =buffer            // Dirección donde guardar entrada
    mov     x2, #20                // Tamaño máximo
    mov     x0, #0                 // stdin
    mov     x8, #63                // syscall read
    svc     #0

    // Convertir de cadena a entero (atoi)
    ldr     x1, =buffer
    mov     x2, #0                 // x2 será nuestro acumulador

atoi_loop:
    ldrb    w3, [x1], #1           // Leer siguiente byte y avanzar
    cmp     w3, #'0'
    blt     end_atoi
    cmp     w3, #'9'
    bgt     end_atoi

    sub     w3, w3, #'0'           // Convertir ASCII -> entero
    mov     x5, #10
    mul     x2, x2, x5             // x2 = x2 * 10
    add     x2, x2, x3             // x2 = x2 + dígito actual
    b       atoi_loop

end_atoi:
    // Calcular x2 % 5
    mov     x1, #5
    udiv    x3, x2, x1             // x3 = x2 / 5
    msub    x4, x3, x1, x2         // x4 = x2 - (x3 * 5) → x4 = x2 % 5

    cmp     x4, #0
    b.eq    imprimir_multiplo

    // NO es múltiplo
    ldr     x1, =noMultiplo
    mov     x2, #21
    b       imprimir

imprimir_multiplo:
    ldr     x1, =esMultiplo
    mov     x2, #19

imprimir:
    mov     x0, #1
    mov     x8, #64
    svc     #0

salir:
    mov     x0, #0
    mov     x8, #93
    svc     #0

More recordings by Itzel

Browse all

ROMANO 1:43

by Itzel

DIVISION ENTRE 20/3 1:49

by Itzel

MAYUSCULA AL INICIO 1:14

by Itzel

CUAL ES EL MENOR? 2:20

by Itzel