GNU/Linux xterm-256color bash 170 views

**
Nombre: who.s
Autor: Karla Itzel Vázquez Cruz
Fecha: 07-04-2025
Descripción: Determina si un número ingresado es par o impar
Asciinema: who.s

**

Versión en C:

int x;
scanf("%d", &x);
if (x % 2 == 0) printf("Par\n");
else printf("Impar\n");

Versión en ARM64 RaspbianOS Linux:

.global _start

.section .data
    msg:    .asciz "Ingresa un número: "
    par:    .asciz "Par\n"
    impar:  .asciz "Impar\n"

.section .bss
    buffer: .skip 12

.section .text
_start:
    // Mostrar mensaje
    mov x0, #1
    ldr x1, =msg
    bl strlen
    mov x2, x0
    mov x0, #1
    mov x8, #64
    svc 0

    // Leer desde teclado
    mov x0, #0
    ldr x1, =buffer
    mov x2, #12
    mov x8, #63
    svc 0

    // Convertir texto a entero
    ldr x0, =buffer
    bl atoi

    // Verificar si es par o impar (w0 = número)
    and w1, w0, #1       // w1 = w0 & 1
    cbz w1, es_par       // Si resultado es 0, es par

    // Es impar
    ldr x1, =impar
    b imprimir

es_par:
    ldr x1, =par

imprimir:
    // Imprimir mensaje (en x1)
    bl strlen
    mov x2, x0
    mov x0, #1
    mov x8, #64
    svc 0

    // Salida del programa
    mov x8, #93
    mov x0, #0
    svc 0

//-------------------------------------------------
// strlen(x1) → x0 (devuelve longitud del string)
//-------------------------------------------------
strlen:
    mov x0, #0
.strlen_loop:
    ldrb w2, [x1, x0]
    cbz w2, .strlen_fin
    add x0, x0, #1
    b .strlen_loop
.strlen_fin:
    ret

//-------------------------------------------------
// atoi(x0) → w0 (convierte string a int)
//-------------------------------------------------
atoi:
    mov w1, #0      // acumulador
    mov w2, #0      // signo
    ldrb w3, [x0], #1
    cmp w3, #'-'
    bne .atoi_loop
    mov w2, #1      // negativo
    b .atoi_loop

.atoi_loop:
    ldrb w3, [x0], #1
    cmp w3, #'0'
    blt .atoi_end
    cmp w3, #'9'
    bgt .atoi_end
    sub w3, w3, #'0'
    mov w4, #10
    mul w1, w1, w4
    add w1, w1, w3
    b .atoi_loop

.atoi_end:
    cmp w2, #0
    csel w0, w1, w1, eq
    neg w0, w1
    ret

More recordings by Itzel

Browse all

PRACTICA02 2:26

by Itzel

BIN 1:02

by Itzel

FAHRENHEIT A CELSIUS 1:26

by Itzel

CELSIUS A KELVIN 1:46

by Itzel