Ciao a tutti,
mi rivolgo a voi perche non so piů dove sbattere la testa.
Devo scrivere del codice che ti stampa un menů di 4 scelte e ogni scelta fa un azione diversa.
Credevo di riuscire a fare la stampa del menů e ad entrare dentro le varie scelte ma evidentemente non č cosi. Vi posto il codice che ho scritto io,
[spoiler]
codice:
# Title: Progetto2				
# Author: Dennis Aleandro Boanini			
# Description: 
################# Data segment #####################
.data
	str1:	.asciiz "richiede l’inserimento di un intero, visualizza a console se č un numero pari o dispari e ritorna al menů di scelta;\n\n"    
    str2:	.asciiz "richiede l’inserimento di due interi, visualizza a console se la loro somma č un numero pari o dispari e ritorna al menů di scelta;\n\n"    
    str3:	.asciiz "richiede l’inserimento di tre interi, ne visualizza su console il valore minimo e ritorna al menů di scelta;\n\n"    
	str4:	.asciiz "visualizza un messaggio di uscita e termina il programma. \n\n"
    inserimento:	.asciiz "Inserisci un numero da 1 a 3\n\n"
    errore:	.asciiz "Il numero inserito non era compreso tra 1 e 3 \n\n"
    fine:	.asciiz "End of Program \n\n"
	jump_table: .space 16 # jump table array a 4 word che verra' instanziata dal main con gli indirizzi delle label che chiameranno le corrispondenti procedure
################# Code segment #####################
.text
.globl main

main:
	  la $s1, jump_table
	  la $t0, juno	  
	  sw $t0, 0($s1)
 	  la $t0, jdue  
	  sw $t0, 4($s1)
	  la $t0, jtre	  
	  sw $t0, 8($s1)
	  la $t0, jquattro
	  sw $t0, 12($s1)
	  
menu:
#Stampa del menu di selezione
	la $a0, str1	
	li $v0, 4 
	syscall
	la $a0, str2
	li $v0, 4 
	syscall	
	la $a0, str3
	li $v0, 4 
	syscall
	la $a0, str4
	li $v0, 4 
	syscall
	  
choice:
# scelta della procedura o dell'uscita
	  li $v0, 4  # $v0 =codice della print_string 
      la $a0, inserimento # $a0 =  indirizzo della stringa 
	  syscall # stampa la stringa prompt
	  
	  # legge la scelta
      li $v0, 5
	  syscall
	  move $s0, $v0   # $s0=scelta 1, 2, 3 o 4
	  
	  sle  $t0, $s0, $zero
	  bne  $t0, $zero, choice_err
	  li   $t0,4
	  sle  $t0, $s0, $t0
	  beq  $t0, $zero, choice_err

branch_case:
		addi $s0, $s0, -1 # tolgo 1 da scelta perche' prima azione nella jump table (in posizione 0) corrisponde alla prima scelta del case
	    add $t0, $s0, $s0 
	    add $t0, $t0, $t0
	    add $t0, $t0, $s1
	    lw $t0, 0($t0) 

	    jr $t0 # salto all'indirizzo calcolato
	  
# prima case action
juno: 
	la $a0, str1
	li $v0, 4
	syscall

	j menu	# Ritorna al menu di selezione

# seconda case action
jdue: 
	la $a0, str2
	li $v0, 4
	syscall

	j menu # esce

# terza case action
jtre: 
	la $a0, str3
	li $v0, 4
	syscall
	   
	j menu # esce
	
# quarta case che esce dal programma visualizzando un messaggio di uscita
jquattro: 
	la $a0, fine
	li $v0, 4
	syscall
	   
	j exit		# Salta all'etichetta exit e termina l'esecuzione del codice
	  
choice_err: 
      li $v0, 4  
      la $a0, errore 
      syscall # stampa la stringa errore		
	  				  		  		  	  
      j choice # ritorna alla richiesta di inserimento di un numero tra 1 e 3 
	  
exit:		
	li $v0, 10 
    syscall
[/spoiler]
e l'errore che mi da č: Exception occured at PC=0x00400034
Unaligned address in store: 0x1001020b
Ma non capisco cosa ho scritto che non va.
Spero tanto mi potete aiutare. Grazie mille.

PS: Uso QtSpim come simulatore