Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2012
    Messaggi
    25

    [Assembly] Chiarimento esercizio

    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.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Scusa quell'istruzione cosa fa?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2012
    Messaggi
    25
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Scusa quell'istruzione cosa fa?
    Carica in $t1 il primo byte di $t0 (la $t0,stringa)

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Carica il carattere puntato dal puntatore corrente fino al terminatore (zero) della stringa. A quel punto la beq fa uscire l'esecuzione dal ciclo.

    Quindi è essenziale.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.