Comando di uscita da un ciclo numerico

di Vincenzo.79 il
3 risposte

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

3 Risposte

  • Non ho capito la domanda...

    Scrivi - e non succede nulla

    Scrivi 1 e non succede nulla

    Scrivi 2 e non succede nulla

    Premi invio è sai che l'utente ha finito di scrivere, vedi se l'ultimo numero è pari o dispari...

    Quindi invio ti fa uscire dal loop (o piuttosto inizia l'elaborazione).

    Se dai invio senza scrivere nulla esci dal programma.

    O mi sono perso qualcosa col caldo?

  • Probabilmente non sono stato particolarmente chiaro...mi spiego meglio con degli esempi:

    L'utente digita 1, in output avrò: "1 è un numero dispari"

    L'utente digita 2, in output avrò: "2 è un numero pari"

    ...e via dicendo

    ora volendo uscire dal programma sfruttando un carattere che sia diverso dal terminatore null (10 in ASCII), come potrei risolvere? oppure devo per forza di cosa impostare una costante a -1 per l'uscita?

    NB: voglio che sia l'utente a scegliere la quantità di numeri da inserire

    Spero di essere stato più chiaro! Grazie

  • 06/07/2026 - Vincenzo.79 ha scritto:

    NB: voglio che sia l'utente a scegliere la quantità di numeri da inserire

    Perfetto, l'utente decide di inserire 1277664 e vuole sapere se è pari o dispari.

    Scrive il numero e preme invio...

    Controlli il numero precedente all'invio e sai se è pari o dispari.

    Ha finito? Mette x o scrive fine o non scrive nulla e preme invio. In questo caso ha finito.

    Non per nulla si chiama enter.

Devi accedere o registrarti per scrivere nel forum
3 risposte