Buongiorno, ho scritto questo programma che, inserita un stringa, dovrebbe contare quante 'à' ci sono. Il problema è che non so come contare i caratteri accentati. Ho visto che nella tabella Ascii estesa 'à' corrisponde a 160 e il tutto funziona se la stringa la scrivo in memoria se invece la scrivo da tastiera non la legge. Ho visto che in quest'ultimo caso nei registri la 'à' corrisponde a 10 ma non penso sia molto corretto scrivere come nel modo che ho commentato mettendo di trovare appunto 10....

Quindi sono andato a guardare la tabella di Unicode dove però ogni carattere corrisponde a 2 byte quindi ho dovuto utilizzare la direttiva .halfword..ma sbaglio qualcosa e non funziona. qualcuno può aiutarmi a risolvere questo problema?

Inoltre, se la stringa che inserisco dovesse contente "Buongiorno a tutti" come faccio a trovare la parola più lunga nella stringa?

.text
.globl main
main:

la $a0, richiesta
li $v0, 4
syscall

la $a0, STRINGA
li $v0,8
syscall

li $s0,0
la $t0, STRINGA# punta al buffer che contiene la stringa acquisita
lhu $t3,char
#lbu $t3,char

loop:
lbu $a0, ($t0)#carico un byte alla volta
beqz $a0, fine#se è 0 è il terminatore della stringa
beq  $a0,$t3,trovata

addi $t0,$t0,1# punta al carattere ( byte) successivo della stringa
j loop

trovata:
add $s0,$s0,1# aggiorna contatore vocali
addi $t0,$t0,1# punta al carattere ( byte) successivo della stringa
j loop

fine:   la $a0, risultato
li $v0, 4
syscall

li $v0,1
move $a0,$s0# passa il numero di vocali totali alla syscall
syscall

la $a0, spazio
li $v0, 4
syscall

li $v0,10
syscall

.data
STRINGA:                .space 255
char:                 .half 133
#char:                 .byte 10
richiesta:              .asciiz "Immetti una stringa: "
spazio:                 .asciiz "\n"
risultato:              .asciiz "\nNumero vocali stringa: "

chiesto 24 Mar '18, 08:56

aleli's gravatar image

aleli
3013

Scrivi tu la prima risposta!
abilita/disabilita anteprima

Segui questa domanda

Via email:

Una volta eseguito l'accesso potrai iscriverti a tutti gli aggiornamenti qui

Via RSS:

Risposte

Risposte e commenti

Basi di markdown

  • *corsivo* o __corsivo__
  • **grassetto** o __grassetto__
  • collegamento:[testo](http://url.com/ "titolo")
  • immagine?![alt testo](/path/img.jpg "titolo")
  • elenco numerato: 1. Foo 2. Bar
  • per aggiungere un'interruzione di riga, aggiungi due spazi a fine riga e premi «Invio»
  • è supportato anche semplice HTML

Tag:

×108

domanda posta: 24 Mar '18, 08:56

domanda visualizzata: 732 volte

ultimo aggiornamento: 19 Sep, 06:16

Chiedi è un servizio di supporto gestito da Ubuntu-it. Contattaci!

powered by OSQAPostgreSQL database
Ubuntu e Canonical sono marchi registrati da Canonical Ltd.