Ciao a tutti, ho questo esercizio da svolgere.
Utilizzando QtSpim, scrivere e provare un programma che richieda all’utente l’inserimento di un vettore di caratteri contenente al massimo 20 elementi e visualizzi i caratteri del vettore che compaiono un numero dispari di volte (1,3,5,…).
Per quanto riguarda l'inserimento di al massimo 20 caratteri penso di essere apposto, anche se non mi piace tanto il metodo di inserimento e di visualizzazione. Per quanto riguarda la seconda parte, vedere quali sono i caratteri che compaiono un numero dispari di volte, avete qualche idea su come poter realizzarlo?
################# Data segment #####################
.data
input: .asciiz "\nInserire un carattere --> "
fine: .asciiz "\nFine del programma!"
output: .asciiz "\nI caratteri inseriti sono --> "
howMany: .asciiz "\nQuanti elementi vuoi inserire? --> "
array: .space 20 #alloca 20 byte (ogni carattere vale 1 byte)
################# Code segment #####################
.text
.globl main
main:
li $s0, 0 #uso $s0 come indice dell'array
li $s1, 19 #max elementi memorizzabili
numEl:
la $a0, howMany
li $v0, 4
syscall
li $v0, 5
syscall
move $s2, $v0
bge $s2, 21, numEl
inserimento:
la $a0, input #stampa della stringa input
li $v0, 4
syscall
la $t0, array #$t0 prende l'indirizzo dell'array
li $v0, 12
syscall
move $t1, $v0
sb $t1, array($s0)
addi $t0,$t0, 1
addi $s0, $s0, 1
bne $s0, $s1, inserimento
print:
la $a0, output #stampa della stringa output
li $v0, 4
syscall
addi $s0, $s0, -1
lb $a0, array($s0)
li $v0, 11
syscall
bne $s0, $zero, print
la $a0, fine #stampa della stringa fine
li $v0, 4
syscall
li $v0, 10 #uscita dal programma
syscall
Grazie mille a tutti