Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- algoritmoE_decodifica:
- li $t0, 0 # i = 0
- li $t1, 0 # j = 0
- li $t4,0
- newChar:
- lb $t2, buffer($t0) # $t2 contiene la lettera da scrivere ad ogni ciclo
- addi $t0, $t0, 2 # i = i + 2
- addLoop:
- lb $t3, buffer($t0) # $t3 = cifra da controllare
- beq $t3, 45, exitAdd # Se $t3 == 45 ("-") vai al label "exitAdd"
- beq $t3, 32, exitAdd # Se $t3 == 32 (" ") vai al label "exitAdd"
- mulu $t4, $t4, 10 # $t2 = $t2 * 10
- subi $t5, $t3, 48 # $t4 = $t3 - 48
- add $t4, $t4, $t5 # Composizione numero
- addi $t0, $t0, 1 # i++
- j addLoop
- exitAdd:
- sb $t2, buffer2($t4) # Scrivo la lettera alla posizione $tX di buffer2
- li $t4,0
- addi $t1, $t1, 1 # j++
- addi $t0, $t0, 1 # i++
- beq $t0, $s1, exitDecode # (oppure bge oppure beq) Se i > della lunghezza logica di buffer vai al label "exitDecode"
- beq $t3, 32, casoSpazio # Se $t3 == 32 (" ") vai al label "casoSpazio"
- j addLoop
- casoSpazio:
- #addi $t0, $t0, 1 # i++
- j newChar
- exitDecode:
- move $a0, $t1 # Passo la lunghezza logica come argomento
- # Chiamata da operazione non foglia, bisogna salvare $ra e ripristinarlo a fine
- addi $sp, $sp, -4
- sw $ra, 0($sp)
- jal arrayCopy
- lw $ra, 0($sp)
- addi $sp, $sp, 4
- move $v0, $t1 # Ritorno nuova dimesione logica di buffer
- jr $ra
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement