Buon pomeriggio a tutti. Ho fatto questo programma per riconoscere un numero pari o dispari.
Volevo inserire un comando (diverso da qualsiasi numero anche quelli negativi) in modo da uscire dal loop.
Ho provato con il terminatore null, ma in ASCII vale 10...dopo non posso ovviamente inserire il numero 10 perchè il programma termina...
Avreste qualche idea?
Di seguito il codice. Grazie a chi mi risponde!
# Numeri pari e dispari
# Il programma deve stabilire se un numero è pari o dispari finchè non si inserisce a capo!
.data
title: .asciz "\n NUMERI PARI O DISPARI"
in_num: .asciz "\n Inserisci un numero: "
num_odd: .asciz " è un numero pari"
num_even: .asciz " è un numero dispari"
space_null: .asciz " "
.text
.globl start
start:
la a0, title
li a7, 4
ecall
li t1, 10 # Registro che contiene il carattere terminatore
loop:
la a0, in_num
li a7, 4
ecall
li a7, 5
ecall
mv t0, a0
beq t0, t1, fine #
Confronto per terminare eventualmente il programma
andi t2, t0, 1
beqz t2, is_odd
is_even:
la a0, space_null
li a7, 4
ecall
mv a0, t0
li a7, 1
ecall
la a0, num_even
li a7, 4
ecall
j loop
is_odd:
la a0, space_null
li a7, 4
ecall
mv a0, t0
li a7, 1
ecall
la a0, num_odd
li a7, 4
ecall
j loop
fine:
# Fine del programma
li a7, 93
li a0, 0
ecall