
Enviado em 07/05/2016 - 09:31h
Olá pessoal tudo bem? Tenho que implementar o bubblesort para o Mips32, escrevemos o código e ele começa a ordenação, porém como resultado final só o valor do numero mais alto e o valor onde está o vetor está sendo mostrado na memória, alguém poderia dar uma força. Segue o código:
.data
_A: .word 0x40, 0x30, 0x20, 0x10, 0x39
_n: .word 5
.text
.globl main
#####################################################
main: la $s0, _A #$s0 tem o endereco de 'A'
lw $s7, _n #$s7 tem o valor de 'n'
move $s1, $zero #$s1 representa 'i'
move $s2, $zero #$s2 representa 'j'
addi $s1, $s7, -1 #i = n-1
for1: slt $t3, $zero, $s1 #i > 0?
beq $t3, $zero, fimfor1 #nao? sai do laco
addi $s2, $zero, 1 #j = 1
for2: slt $t3, $s1, $s2 #j <= i? (teste se i < j)
bne $t3, $zero, fimfor2 #nao? sai do laco (se i < j, entao !(j <= i))
sll $s4, $s2, 2
add $s4, $s4, $s0 #A[j]
lw $t5, -4($s4) #temp1 = A[j-1]
lw $t6, 0($s4) #temp2 = A[j]
#parte 1: chamada do metodo max
#passagem de parametros para o metodo max
addi $sp, $sp, -8
sw $t5, 4($sp)
sw $t6, 0($sp)
jal max
#$s5 representa Maximo e deve receber o valor de retorno do metodo (move $s5, algo)
lw $s5, 0($sp)
addi $sp, $sp, 4
#parte 2: chamada do metodo min
#passagem de parametros para o metodo min
addi $sp, $sp, -8
sw $t5, 4($sp)
sw $t6, 0($sp)
jal min
#$s6 representa Minimo e deve receber o valor de retorno do metodo (move $s6, algo)
sw $s6, -4($s4) #A[j-1] = minimo
sw $s5, 0($s4) #A[j] = maximo
addi $s2, $s2, 1 #j++
j for2
fimfor2:addi $s1, $s1, -1 #i--
j for1
fimfor1:j fimdetudo
#####################################################
max: #parte 3 implementacao do metodo max
lw $t1, 0($sp)
lw $t2, 4($sp)
addi $sp, $sp, 8
slt $t0, $t1, $t2
bne $t0 ,$zero, t2maior
sw $t1,0($sp)
j fim_max
t2maior:
sw $t2,0($sp)
fim_max:
jr $ra
#####################################################
min: #parte 4 implementacao do metodo min
lw $t1, 0($sp)
lw $t2, 4($sp)
addi $sp, $sp, 8
slt $t0, $t1, $t2
beq $t0, $zero, t2menor
sw $t1, 0($sp)
j fim_max
t2menor:
sw $t2,0($sp)
fim_min:
jr $ra
#####################################################
fimdetudo:
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Jogar games da Battle.net no Linux com Faugus Launcher
Como fazer a Instalação de aplicativos para acesso remoto ao Linux
Como fazer a instalação do Samba
Como fazer a conversão binária e aplicar as restrições no Linux
Duas Pasta Pessoal Aparecendo no Ubuntu 24.04.3 LTS (19)
Formas seguras de instalar Debian Sid (13)
Malware encontrado em extensões do Firefox. (0)
Fiz uma pergunta no fórum mas não consigo localizar [RESOLVIDO] (21)









