Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2016
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.29 KB | None | 0 0
  1.  
  2. Imprime:
  3. add $t0,$s5,$s6
  4. sub $t9,$t0,$t9
  5. la $t0,$vetorResultado
  6. #Imprimindo na tela:
  7. #beq $t0,$zero,saida #Termina o programa
  8. #lw $a0,0($s2)
  9. #li $v0,1
  10. #syscall
  11. #la $a0,$espaco
  12. #li $v0,4
  13. #syscall
  14. #addi $s2,$s2,4 #Anda vetor resultado
  15. #subi $t0,$t0,1
  16. #j Imprimindo
  17. la $s0,$buffer3
  18. la $t0,$vetorResultado #carrega vetor resultado
  19. OutInverso:
  20. beq $t9,$zero,abreSaida
  21. add $v0, $zero, $zero # num = 0
  22. add $t4, $zero, $zero # isNegative = false
  23. lw $t1,0($t0)
  24. bgt $t1,$zero,VNumero #se numero for positivo continua, se for negativo anota
  25. addi $t4, $zero, 1 #isNegative = true
  26. sub $t1,$zero,$t1 #transforma em positivo
  27. VNumero:
  28. add $t2,$zero,0 #Zera t2 pra servir de contador
  29.  
  30. loopVnumero:
  31. div $t1,$t1,10 #Numero dividido por 10
  32. mflo $t1
  33. mfhi $t6 #Resto
  34. #Push
  35. addi $sp, $sp, -4 # Decrement stack pointer by 4
  36. sw $t6, 0($sp) # Save $t6 na pilha
  37. addi $t2,$t2,1 #Aumenta contador de digitos no stack
  38. beq $t1,$zero,Proximo
  39. j loopVnumero
  40.  
  41.  
  42. Proximo:
  43. addi $t0,$t0,4
  44. sub $t9,$t9,1
  45. beq $t4,$zero,EscreveNoBuffer #Se eh positivo vai direto pro buffer, senao escreve '-'
  46. addi $t8,$zero,'-' #menos
  47. sb $t8,0($s0)
  48. addi $s0,$s0,1 #Anda proximo caractere
  49.  
  50. EscreveNoBuffer:
  51. beq $t2,$zero,NextLineE
  52. #Pop
  53. lw $t1, 0($sp) # Pega o valor da pilha pro $t1
  54. addi $sp, $sp, 4 # Increment stack pointer by 4
  55. addi $t1,$t1, 48 #Converte Numero pra ascii
  56. sb $t1,0($s0) #Guarda o numero
  57. addi $s0,$s0,1 #Anda proximo caractere
  58. subi $t2,$t2,1 #Diminui contador de stack
  59. j EscreveNoBuffer
  60.  
  61. NextLineE:
  62. la $t8,0x0A #Pula linha
  63. sb $t8,0($s0)
  64. addi $s0,$s0,1 #Anda proximo caractere
  65. j OutInverso
  66.  
  67. abreSaida:
  68. la $t8,0x00 #Adiciona EOF
  69. sb $t8,1($s0)
  70. la $a0, $saida #Endere?o do arquivo do vetor 1
  71. li $a1, 1 #flag write only
  72. li $a2, 0 # mode is ignored
  73. li $v0, 13 #Sycall de abrir arquivo
  74. syscall
  75. move $t0,$v0 #Copia o t0 pra fechar arquivo depois
  76. move $a0,$v0 #Coloca o resultado como parametro
  77. la $a1, $buffer3 #Buffer que empurra texto
  78. lw $a2, $bufferSize #Tamanho do buffer
  79. li $v0, 15 #Syscall de ler arquivo
  80. syscall
  81. move $a0,$t0 #Coloca o endere?o do arquivo como parametro
  82. li $v0, 16 #syscall de fechar arquivo
  83. syscall
  84. saida: li $v0,10 #FECHA O PROGRAMA
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement