Domanda

Un piccolo backstory: Questa è un'applicazione progettata per prendere una stringa e per ogni carattere, aggiungere una chiave (1-26) al valore ASCII e posizionarlo nella stringa.L'unico problema è che il mio personaggio finale è sempre manipolato, anche quando ho il mio programma progettato per terminare i caratteri nullo (Beqz).

encrypt:
# store string address in $t0
la $t0, ($a0)
#store key in $t1
move $t1, $a1   
# initialize index, $t2 to 0
add $t2, $zero, $zero
li $t4, 26

encrypt_loop:
# load the byte at index in $t3
lb $t3, ($t0)

# check if it's the end of the string
beqz $t3, encrypt_end
# also check if it's a space
beq $t3, 32, incr

# subtract to make a = 0 etc
addi $t3, $t3, -97
# add key
add $t3, $t3, $t1
# modulo to make sure that it isn't over 26
div $t3, $t4
mfhi $t3
# add 97 back to get it back to its position
addi $t3, $t3, 97

# store byte back where you found it
sb $t3, ($t0)

#la $a0, ($t3)
#jal _put_char

incr:
# increment address
la $t0, 1($t0)

#jump back to beginning of the loop
j encrypt_loop
.

Esempio ->

Inserisci un messaggio: super felice

Immettere un tasto: 5

Messaggio crittografato: xzujw mfuud]

Qualcuno può individuare un motivo per cui questo codice manipolerebbe quell'ultimo carattere e cambiarlo in una staffa finale?Grazie.

È stato utile?

Soluzione

Svolta che la stringa si stava terminando correttamente, ma ciò che non ho visto era il ritorno del carrello alla fine di una stringa che viene inserita nella console.Una volta ho contabilizzato, sono stato in grado di sbarazzarmi del personaggio misterioso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top