Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Ciao a tutti, sono nuovo di questo forum e vorrei chiedere un aiuto perchè mi sto dilettando con alcuni programmi e mi servirebbe un aiuto. Il programma dovrebbe leggere una frase da tastiera e conteggiare le vocali minuscole (per ora). Potete dirmi dove sbaglio per favore....grazie .data 0x10000000 #ROM
msg: .asciiz "Inserisci una frase: \n" msg1: .asciiz "Le vocali sono: \n" #msg2: .asciiz "Le consonanti sono: \n" #msg3: .asciiz "Gli spazi sono: \n"
#imposto la lettura da tastiera di una stringa e la salvo in un buffer di dim 100 max li $v0, 8 la $a0, buffer1 li $a1, 100 syscall
#stampo msg1 li $v0, 4 la $a0, msg1 syscall
#richiamo la subroutine del calcolo delle vocali inserite dall'utente la $a0, buffer1 #indirizzo di inizio del buffer delle vocali jal vocali
#sposto il valore ottenuto in t0, visto che v0 lo uso per altre syscall move $t0, $v0
#stampo risultato li $v0, 4 la $a0, risul syscall
#stampo il numero di vocali calcolate li $v0, 1 move $a0, $t0 syscall
#uscita senza errori li $v0, 10 syscall
#-------------------------------------# # calculate_vocali # #-------------------------------------# # Param: a0 = ind iniziale buffer # # t0: contatore ciclo # # t1: contenitore caratteri a0 # # t2: contenitore caratteri a1 # # t3: usato per confronto t1 t2 # # t4: line feed # #-------------------------------------# # v0: vocali trovate # #-------------------------------------# # Questa funzione si occupa di # # calcolare le vocali presenti # # in due parole inserite dall'utente. # # Visto che si possono mettere # # stringhe di diversa lunghezza, # # sostituisco al carattere di line # # feed il carattere null, per una # # comparazione piu' corretta. # #-------------------------------------#
vocali: li $t0, 0 #contatore ciclo li $v0,0 #contatore vocali li $t4, 10 #carattere di line feed
ciclo: beq $t0, 100, fine #100 è la dimensione massima del buffer della parola
lb $t1, 0($a0) lb $t2, 0($a1)
bne $t1, $t4, othercheck #controllo se il carattere e' quello di line feed move $t1, $zero #se è line feed allora lo imposto a null
Nella funzione manca totalmente il conteggio delle vocali
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
#imposto la lettura da tastiera di una stringa e la salvo in un buffer di dim 100 max li $v0, 8 la $a0, buffer1 la $a1, caratteri syscall
#stampo msg1 li $v0, 4 la $a0, msg1 syscall
#richiamo la subroutine del calcolo delle vocali inserite dall'utente la $a0, buffer1 #indirizzo di inizio del buffer delle vocali jal vocali
#sposto il valore ottenuto in t0, visto che v0 lo uso per altre syscall move $t0, $v0
#stampo risultato li $v0, 4 la $a0, risul syscall
#stampo il numero di vocali calcolate li $v0, 1 move $a0, $t0 syscall
#uscita senza errori li $v0, 10 syscall
#-------------------------------------# # calculate_vocali # #-------------------------------------# # Param: a0 = ind iniziale buffer # # t0: contatore ciclo # # t1: contenitore caratteri a0 # # t2: contenitore caratteri a1 # # t3: usato per confronto t1 t2 # # t4: line feed # #-------------------------------------# # v0: vocali trovate # #-------------------------------------# # Questa funzione si occupa di # # calcolare le vocali presenti # # in due parole inserite dall'utente. # # Visto che si possono mettere # # stringhe di diversa lunghezza, # # sostituisco al carattere di line # # feed il carattere null, per una # # comparazione piu' corretta. # #-------------------------------------#
vocali: li $t0, 0 #contatore ciclo li $t1, 0 #contatore valori li $v0,0 #contatore vocali li $t4, 10 #carattere di line feed
ciclo: beq $t0, 100, fine #100 è la dimensione massima del buffer della parola
lb $t1, 0($a0) lb $t2, 0($a1)
bne $t1, $t4, othercheck #controllo se il carattere e' quello di line feed move $t1, $zero #se è line feed allora lo imposto a null
othercheck: bne $t2, $t4, ciclo1 #stesso controllo ma per l'altra parola move $t2, $zero
ciclo1: lb $t0, 0($a0) #caricamento lettera lw $t1, 0($a1) #caricamento primo valore