PDA

View Full Version : Estrarre consonanti in assembler


Shika93
22-07-2014, 12:47
Con l'assembler del MIPS come faccio ad estrarre 3 consonanti da una stringa di caratteri?
(Sto facendo un programma che generi il codice fiscale)

Ho usato la syscall per inserire nome, cognome e data di nascita ognuna dentro un'area di memoria per semplicità.
Dentro la variabile "cognome" trovo il cognome che ho inserito da tastiera.
Lo pensavo come
if (cognome[i] =='a' || cognome[i] =='e' || cognome[i] =='i' || cognome[i] =='o' || cognome[i] =='u')
è una vocale
else
consonante

e quindi mettere quei tre caratteri dentro un registro.

Daniels118
22-07-2014, 15:40
Quindi dov'è il dubbio?
Devi fare un ciclo non calcolato che itera sul cognome fino a quando il numero di consonanti arriva a 3, oppure hai raggiunto la fine del cognome (in questo caso credo si applichi qualche regola per gestire l'eccezione).
Ogni volta che trovi una consonante la inserisci direttamente nel vettore codice_fiscale ed incrementi il contatore.

Shika93
22-07-2014, 17:00
Il dubbio è: come faccio un vettore in assembler?
Ho trovato questo qui http://www.hwupgrade.it/forum/showpost.php?p=12709930&postcount=2
ma non ho capito.

se name è l'area di memoria dove ho messo il nome, non posso semplicemente fare:
name: .word 0:4
li $v0, 8 #Richiesta del nome
syscall
sw $v0, name

Daniels118
23-07-2014, 09:44
Non conosco questo assembly specifico, ma suppongo che come hai allocato il nome puoi fare la stessa cosa per il vettore dove metterai le consonanti. Nota che per il processore non esiste alcuna differenza tra stringa e vettore, sono entrambi aree contigue di memoria, poco importa come vengono dichiarate.