Salve,
volevo sapere cosa sbaglio in questo codice
.data
prompt1: .asciiz "Inserire massimo 20 caratteri (gli eccedenti non verranno considerati), non utilizzare alcuno spazio e utilizzare il newline per terminare l'inserimento\n\n"
answer: .asciiz "Gli elementi seguenti ricorrono un numero dispari di volte\n\n"
myarray: .space 20 #array di 20 char composti da 1 byte
countarray: .space 20
.text
.globl main
main:
li $v0,4
la $a0,prompt1
syscall
#Leggiamo direttamente 20 caratteri come stringa
li $a1,20 # lunghezza massima
la $a0,myarray # indirizzo base array
li $v0,8 # lettura stringa
syscall
li $t0,0 # inizializzo l-indice array
li $s0,0 # inizializzo contatore elementi
li $s1,-1 # valore neutro per l-array count
[b]inizializza:
lb $t1, myarray($s0) # $t1 = myarray[$t0]
sb $s1,countarray($s0) # inizializza un elemento dell-array
addi $s0,$s0,1
bne $t1, $zero, inizializza # if $t1 != 0 goto inizializza (fine vettore raggiunta)[/b]
in pratica myarray e' una stringa letta da tastiera, l-errore piu che altro si cela nell'ultima parte in grassetto dove controllando meglio il ciclo non si ferma quando terminano i caratteri ma sembra fare ben due cicli in piu cosa sbaglio?
Un primo ciclo in piu sicuramente e' dovuto al posizionamento del confronto ma l'altro non capisco voi come risolvereste?
PS: non sapevo il grassetto non funzionasse in code, comunque e- la parte tra le due B del grassetto