Ciao a tutti, cm al solito ho bisogno di voi!
Allora, vengo subito al sodo!
Devo fare un esercizio in cui date 2 stringhe ne faccio una terza che contiene i caratteri di tutte e due!
Esempio: 1° stringa: ciao; 2°stringa: CIAO
la 3° stringa dovrebbe essere: cCiIaAoO
ho già buttato qualcosa! Ecco:
.data
str1: .asciiz "Inserisci la prima stringa: "
str2: .asciiz "Inserisci la seconda stringa: "
buf1: .space 16
buf2: .space 16
buf3: .space 16
outp: .asciiz "La stringa risultante è: "
.text
.globl main
main:
li $v0,4 #codice stampa stringa
la $a0,str1 #stringa
syscall #stampa
li $v0,8 #codice leggi stringa
la $a0,buf1 #indica dove partire con la memoria
li $a1,16 #indica dove metterla
syscall #leggi la stringa
li $v0,4 #codice stampa stringa
la $a0,str2 #stringa
syscall #stampa
li $v0,8 #codice leggi stringa
la $a0,buf2 #indica dove partire con la memoria
li $a2,16 #indica dove metterla
syscall #leggi la stringa
j invert #vai alla procedura che inverte
jr $ra #uscita
invert:
la $t0,buf1 #t0=puntatore 1 char 1 stringa
la $t1,buf2 #t1=puntatore 1 char 2 stringa
controlla:
lbu $t2,($t0) #in t2 carattere 1 stringa
lbu $t3,($t1) #in t3 carattere 2 stringa
sgt $t4,$t2,$zero
sgt $t5,$t3,$zero
add $t6,$t4,$t5
bnez $t6,componi
sw $t6,($a3)
j esci
componi:
lbu $t2,($t0) #in t2 carattere 1° stringa
sb $t2,($t9)
addi $t2,$t2,1
addi $t9,$t9,1
componi2:
lbu $t3,($t1) #in t3 carattere 2 stringa
sb $t3,($t9)
addi $t3,$t3,1
addi $t9,$t9,1
j controlla
esci:
li $v0,4
la $a0,outp
syscall
li $v0,4
la $a3,buf3
syscall