MIPS填充可变大小的数组

时间:2018-02-23 03:06:45

标签: arrays sorting input mips user-input

由于某种原因,即使在调试时我可以清楚地看到它们在0($ t0)的内存中正确存储,因此可以稍后访问放入基本$ t0数组的内存中的整数值i t。在2个整数的情况下为4($ t0)。当我进入passloop并尝试将它们加载到t6或t7时,没有传递任何值。有人可以解释为什么会这样吗?

# bubble sort

.data
prompt1: .asciiz "Enter the array size \n"
prompt2: .asciiz "Enter integers to fill the array \n"
prompt3: .asciiz "Sorted Array: "

.text
    .globl  main
main:
la $a0, prompt1
li $v0, 4
syscall

li $v0, 5
syscall

add $t1, $zero, $v0
add $t2, $zero, $v0
sll $a0, $v0, 2
li $v0, 9
syscall
add $t0, $zero, $v0

loop:
la $a0, prompt2
li $v0, 4
syscall

li $v0, 5
syscall

beqz $t1, mainloop
sw $v0, ($t0)
addiu $t0, $t0, 4
subiu $t1, $t1, 1
bnez $t1, loop                                   


mainloop:
    subi    $a1,$t2,1              
    blez    $a1,done           


    li      $t3,0                   

    jal     passloop               


    beqz    $t3,done           

    subi    $t2,$t2,1               
    j       mainloop


#print sorted data, code still needed. Need to fix accessing issue first

done:
    j       end                     


passloop:
    lw      $t6,0($t0)              
    lw      $t7,4($t0)              
    bgt     $t6,$t7,swap       

next:
    addiu   $t0,$t0,4               
    subiu   $a1,$a1,1               
    bgtz    $a1,passloop           
    jr      $ra                     

swap:
    sw      $t6,4($t0)              
    sw      $t7,0($t0)              
    li      $t3,1                   
    j       next


end:
    li      $v0,10
    syscall

0 个答案:

没有答案