Advertisement
Guest User

Untitled

a guest
Jun 20th, 2019
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.31 KB | None | 0 0
  1.  
  2. algoritmoE_decodifica:
  3. li $t0, 0 # i = 0
  4. li $t1, 0 # j = 0
  5. li $t4,0
  6.  
  7. newChar:
  8. lb $t2, buffer($t0) # $t2 contiene la lettera da scrivere ad ogni ciclo
  9. addi $t0, $t0, 2 # i = i + 2
  10. addLoop:
  11. lb $t3, buffer($t0) # $t3 = cifra da controllare
  12. beq $t3, 45, exitAdd # Se $t3 == 45 ("-") vai al label "exitAdd"
  13. beq $t3, 32, exitAdd # Se $t3 == 32 (" ") vai al label "exitAdd"
  14.  
  15. mulu $t4, $t4, 10 # $t2 = $t2 * 10
  16. subi $t5, $t3, 48 # $t4 = $t3 - 48
  17. add $t4, $t4, $t5 # Composizione numero
  18.  
  19. addi $t0, $t0, 1 # i++
  20. j addLoop
  21.  
  22. exitAdd:
  23. sb $t2, buffer2($t4) # Scrivo la lettera alla posizione $tX di buffer2
  24. li $t4,0
  25. addi $t1, $t1, 1 # j++
  26. addi $t0, $t0, 1 # i++
  27. beq $t0, $s1, exitDecode # (oppure bge oppure beq) Se i > della lunghezza logica di buffer vai al label "exitDecode"
  28. beq $t3, 32, casoSpazio # Se $t3 == 32 (" ") vai al label "casoSpazio"
  29. j addLoop
  30.  
  31. casoSpazio:
  32. #addi $t0, $t0, 1 # i++
  33. j newChar
  34.  
  35. exitDecode:
  36.  
  37. move $a0, $t1 # Passo la lunghezza logica come argomento
  38. # Chiamata da operazione non foglia, bisogna salvare $ra e ripristinarlo a fine
  39. addi $sp, $sp, -4
  40. sw $ra, 0($sp)
  41. jal arrayCopy
  42. lw $ra, 0($sp)
  43. addi $sp, $sp, 4
  44.  
  45. move $v0, $t1 # Ritorno nuova dimesione logica di buffer
  46. jr $ra
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement