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.