Buonasera a tutti,
sto svolgendo degli esercizi in Assembly, in particolare sto studiando come si gestiscono le strutture dati. Il quesito è di creare un programma che conti il numero di caratteri presenti in una stringa.
Ho fatto così:
codice:
.data
mess1: .asciiz "La stringa è lunga "
mess2: .asciiz " caratteri"
stringa: .asciiz "vercingetorige"
lung: .half 0
.text
.globl main
main:
la $t0,stringa #carico l'indirizzo della stringa in t0
lh $t2,lung #carico in t2 l'int lung
while:
lb $t1,($t0) # x=p
beqz $t1,endwhile
addiu $t2,$t2,1 #lung++
addiu $t0,$t0,1 #p++
j while
endwhile:
la $a0,mess1
li $v0,4
syscall
add $a0,$t2,$zero
li $v0,1
syscall
la $a0,mess2
li $v0,4
syscall
Lasciando l'istruzione lb $t1,($t0) fuori dal ciclo while il programma va in loop. Perchè??
Grazie per il vostro aiuto.