close

.data

array:  .space  1024   #4*256
n:  .word   0
list:   .asciiz "
Sorted list: "
space:  .asciiz " "
mesg:   .ascii  "Bubble Sort
"
    .asciiz "
how many integers you want to sort: "

.text

main:
    li  $v0,4
    la  $a0,mesg
    syscall
    li  $v0,5         #input number of sort N
    syscall
    sw  $v0,n
    li  $s1,0         #initial
    li  $s2,0
    la      $t3,array     #t3存array[0]的位置
    move    $t0,$zero     #i=0
    lw  $s2,n
    next:

    beq     $t0,$s2,sort  #s2=len
    li      $v0,5
    syscall
    sw      $v0,($t3)     #存入a[j] j=0,4,8,16,....
    add     $t3,$t3,4
    add     $t0,1
    j   next


sort:
    move    $s5,$ra
    la  $s2,array
    lw  $s3,n
    move    $s0,$zero
for1tst:slt $t0,$s0,$s3
    beq $t0,$zero,exit1
    addi    $s1,$s0,-1
for2tst:slti    $t0,$s1,0
    bne $t0,$zero,exit2
        add $t2,$s2,$t1
    lw  $t3,0($t2)
    lw  $t4,4($t2)
    slt $t0,$t4,$t3
    beq $t0,$zero,exit2
    move    $a0,$s2
    move    $a1,$s1
    jal swap
    addi    $s1,$s1,-1
    j   for2tst
exit2:  addi    $s0,$s0,1
    j   for1tst
exit1:  move    $ra,$s5

out:    li  $v0,    4
    la  $a0,    list
    syscall
    li  $t1,    0
    lw  $s0,    n

    la  $t3 array
disply: beq $t1,    $s0,    exit
    li  $v0,    1
    lw  $a0,    ($t3)
    syscall
    li  $v0,    4
    la  $a0,    space
    syscall
    addi    $t3,    4
    addi    $t1,    $t1,    1
    j   disply

exit:   li      $v0,10           # finished processing.
        syscall

swap:   add $t1,$a1,$a1
    add $t1,$t1,$t1
    add $t1,$a0,$t1
    lw  $t0,0($t1)
    lw  $t2,4($t1)
    sw  $t2,0($t1)
    sw  $t0,4($t1)
    jr  $ra
    add $t1,$s1,$s1
    add $t1,$t1,$t1


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Kurumi 的頭像
    Kurumi

    LiFeどうでしょう

    Kurumi 發表在 痞客邦 留言(0) 人氣()