#bubblesort
.data
array:
.space 100
mesaj1:
.asciiz "Numarul de componente: "
mesaj2:
.asciiz "Componentele:\n"
spatiu:
.asciiz " "
mesaj3:
.asciiz "Rezultatul: \n"
.text
main:
li $v0, 4
la $a0, mesaj1
syscall
li $v0, 5
move $t0, $v0
syscall
li $v0, 4
la $a0, mesaj2
syscall
xor $s0, $zero, $zero
li $v0, 0
la $t1, array
readarray:
beq $s0, $t0, afterread
li $v0, 5
syscall
sw $v0, 0($t1)
addi $t1, $t1, 4
addi $s0, $s0, 1
j readarray
afterread:
xor $s0, $zero, $zero
li $v0, 0
la $t1, array
li $v0, 4
la $a0, mesaj3
syscall
print:
beq $s0, $t0, afterprint
lw $t2, 0($t1)
addi $t1, $t1, 4
li $v0, 1
move $a0, $t2
syscall
li $v0, 4
la $a0, spatiu
syscall
addi $s0, $s0, 1
j print
afterprint:
li $v0, 10
syscall
Благодаря Питеру Кордесу я нашел решение. Это правильный код. Проблема заключалась в том, что я не правильно сохранил значения в массиве.
readarray:
beq $s0, $t0, afterread
li $v0, 5
syscall
sw $v0, array
addi $s0, $s0, 1
j readarray
Правильный путь:
readarray:
beq $s0, $t0, afterread
li $v0, 5
syscall
sw $v0, 0($t1)
addi $t1, $t1, 4
addi $s0, $s0, 1
j readarray
Загрузить первый адрес массива в $ t1 la $t1, array
и l oop через него addi $t1, $t1, 4
после сохранения значения, считанного с клавиатуры sw $v0, 0($t1)
.
Спасибо, Питер.