Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Imprime:
- add $t0,$s5,$s6
- sub $t9,$t0,$t9
- la $t0,$vetorResultado
- #Imprimindo na tela:
- #beq $t0,$zero,saida #Termina o programa
- #lw $a0,0($s2)
- #li $v0,1
- #syscall
- #la $a0,$espaco
- #li $v0,4
- #syscall
- #addi $s2,$s2,4 #Anda vetor resultado
- #subi $t0,$t0,1
- #j Imprimindo
- la $s0,$buffer3
- la $t0,$vetorResultado #carrega vetor resultado
- OutInverso:
- beq $t9,$zero,abreSaida
- add $v0, $zero, $zero # num = 0
- add $t4, $zero, $zero # isNegative = false
- lw $t1,0($t0)
- bgt $t1,$zero,VNumero #se numero for positivo continua, se for negativo anota
- addi $t4, $zero, 1 #isNegative = true
- sub $t1,$zero,$t1 #transforma em positivo
- VNumero:
- add $t2,$zero,0 #Zera t2 pra servir de contador
- loopVnumero:
- div $t1,$t1,10 #Numero dividido por 10
- mflo $t1
- mfhi $t6 #Resto
- #Push
- addi $sp, $sp, -4 # Decrement stack pointer by 4
- sw $t6, 0($sp) # Save $t6 na pilha
- addi $t2,$t2,1 #Aumenta contador de digitos no stack
- beq $t1,$zero,Proximo
- j loopVnumero
- Proximo:
- addi $t0,$t0,4
- sub $t9,$t9,1
- beq $t4,$zero,EscreveNoBuffer #Se eh positivo vai direto pro buffer, senao escreve '-'
- addi $t8,$zero,'-' #menos
- sb $t8,0($s0)
- addi $s0,$s0,1 #Anda proximo caractere
- EscreveNoBuffer:
- beq $t2,$zero,NextLineE
- #Pop
- lw $t1, 0($sp) # Pega o valor da pilha pro $t1
- addi $sp, $sp, 4 # Increment stack pointer by 4
- addi $t1,$t1, 48 #Converte Numero pra ascii
- sb $t1,0($s0) #Guarda o numero
- addi $s0,$s0,1 #Anda proximo caractere
- subi $t2,$t2,1 #Diminui contador de stack
- j EscreveNoBuffer
- NextLineE:
- la $t8,0x0A #Pula linha
- sb $t8,0($s0)
- addi $s0,$s0,1 #Anda proximo caractere
- j OutInverso
- abreSaida:
- la $t8,0x00 #Adiciona EOF
- sb $t8,1($s0)
- la $a0, $saida #Endere?o do arquivo do vetor 1
- li $a1, 1 #flag write only
- li $a2, 0 # mode is ignored
- li $v0, 13 #Sycall de abrir arquivo
- syscall
- move $t0,$v0 #Copia o t0 pra fechar arquivo depois
- move $a0,$v0 #Coloca o resultado como parametro
- la $a1, $buffer3 #Buffer que empurra texto
- lw $a2, $bufferSize #Tamanho do buffer
- li $v0, 15 #Syscall de ler arquivo
- syscall
- move $a0,$t0 #Coloca o endere?o do arquivo como parametro
- li $v0, 16 #syscall de fechar arquivo
- syscall
- saida: li $v0,10 #FECHA O PROGRAMA
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement