|
|
|
|
Strumenti |
22-07-2014, 12:47 | #1 |
Member
Iscritto dal: Jun 2013
Messaggi: 120
|
Estrarre consonanti in assembler
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. |
22-07-2014, 15:40 | #2 |
Senior Member
Iscritto dal: Jan 2014
Messaggi: 852
|
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. |
22-07-2014, 17:00 | #3 |
Member
Iscritto dal: Jun 2013
Messaggi: 120
|
Il dubbio è: come faccio un vettore in assembler?
Ho trovato questo qui http://www.hwupgrade.it/forum/showpo...30&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 |
23-07-2014, 09:44 | #4 |
Senior Member
Iscritto dal: Jan 2014
Messaggi: 852
|
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.
|
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:07.