GNU/Linux xterm-256color zsh 139 views

.section .data
msj_agudo:   .asciz "Es un ángulo agudo\n"
msj_recto:   .asciz "Es un ángulo recto\n"
msj_obtuso:  .asciz "Es un ángulo obtuso\n"
msj_invalido:.asciz "Ángulo inválido\n"

.section .text
.global _start

_start:
    // ---------------------------
    // Valor del ángulo a probar
    // ---------------------------
    mov x0, #110           // Puedes cambiar este valor (entre 1 y 179)

    // ---------------------------
    // if (x0 < 90): AGUDO
    // ---------------------------
    mov x1, #90
    cmp x0, x1
    blt es_agudo           // Si x0 < 90, salta a etiqueta "es_agudo"

    // ---------------------------
    // else if (x0 == 90): RECTO
    // ---------------------------
    beq es_recto           // Si x0 == 90

    // ---------------------------
    // else if (x0 > 90 && x0 < 180): OBTUSO
    // ---------------------------
    mov x2, #180
    cmp x0, x2
    bge invalido           // Si x0 >= 180 => inválido

    // Si no fue agudo ni recto, pero < 180 → obtuso
    b es_obtuso

es_agudo:
    ldr x1, =msj_agudo
    b imprimir

es_recto:
    ldr x1, =msj_recto
    b imprimir

es_obtuso:
    ldr x1, =msj_obtuso
    b imprimir

invalido:
    ldr x1, =msj_invalido

imprimir:
    // syscall write(1, x1, len)
    mov x0, #1             // stdout
    mov x2, #23            // longitud máxima del mensaje
    mov x8, #64            // syscall número para write
    svc 0

    // syscall exit(0)
    mov x0, #0
    mov x8, #93
    svc 0