GNU/Linux xterm-256color zsh 144 views

.global _start

.section .rodata
msg_si:     .asciz "COPRIMOS\n"
msg_no:     .asciz "NO COPRIMOS\n"

.section .text
_start:
    // Valores a comprobar
    mov x0, #35            // a
    mov x1, #64            // b

    // --- Algoritmo de Euclides para MCD ---
mcd_loop:
    cmp x1, #0
    beq mcd_done

    udiv x2, x0, x1        // x2 = a / b
    mul x2, x2, x1         // x2 = (a / b) * b
    sub x2, x0, x2         // x2 = a % b

    mov x0, x1             // a = b
    mov x1, x2             // b = r
    b mcd_loop

mcd_done:
    // x0 = MCD(a, b)
    cmp x0, #1
    beq son_coprimos
    b no_coprimos

son_coprimos:
    ldr x1, =msg_si        // puntero a "COPRIMOS\n"
    mov x2, #9             // longitud del mensaje
    b imprimir

no_coprimos:
    ldr x1, =msg_no        // puntero a "NO COPRIMOS\n"
    mov x2, #12            // longitud del mensaje

imprimir:
    mov x0, #1             // STDOUT
    mov x8, #64            // syscall write
    svc 0

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