#********************************************
# 10個數字的輸入與排序
#********************************************
#********************************************
.text # **段
.globl main # 程式從此開始
main:
la $t6,array #t6為陣列首位址
move $t7,$zero #初始化t7,用於迴圈計數
input:
li $v0,5
syscall #系統呼叫 輸入數字
move $t0,$t7
mul $t0,$t0,4
addu $t1,$t0,$t6
sw $v0,0($t1) #將數字存進array[i]
addi $t7,$t7,1 #i++
blt $t7,10,input #輸入待排序整數,直至達到t8中的給定數目
move $t2,$zero #外迴圈計數i
move $t3,$zero #內迴圈計數j
sort:
bge $t2,10,output #若迴圈次數達到10,跳轉至輸出
addi $t3,$t2,1 #t3=t2+1
inner_loop:
mul $t1,$t2,4
addu $t1,$t1,$t6
lw $t4,0($t1) #t4=array[i]
mul $t1,$t3,4
addu $t1,$t1,$t6
lw $t5,0($t1) #t5=array[j]
bge $t5,$t4,swap #如果array[j]>=array[i],交換
addi $t3,$t3,1
blt $t3,10,inner_loop
addi $t2,$t2,1
blt $t2,10,sort
swap:
mul $t1,$t2,4
addu $t1,$t1,$t6
sw $t5,0($t1)
mul $t1,$t3,4
addu $t1,$t1,$t6
sw $t4,0($t1)
addi $t3,$t3,1
blt $t3,9,inner_loop
blt $t2,9,sort
output:
move $t7,$zero
print_loop:
move $t0,$t7
mul $t0,$t0,4
addu $t1,$t0,$t6
lw $a0,0($t1)
li $v0,1
syscall
addi $t7,$t7,1
la $a0, seperate
li $v0, 4
syscall
blt $t7,10,print_loop
jr $ra
li $v0,10
syscall
.data
array:
.space 1024 #開闢陣列空間
seperate:
.asciiz " "
不知道說什麼直接放**吧,它的對應c++原始碼如下圖(懶得打):
注釋比較少不過應該挺好懂的,雖然思維比較混亂orz
如果有大佬看出有什麼不妥的地方提點我一下那就更棒了~
不知道說什麼了就這樣吧_(:з」∠)_
MIPS彙編 選擇排序13條指令
mips彙編 選擇排序13條指令 單純地為了減少彙編指令數,所以就別指望效率了 在下面也寫了c語言對應的 希望有助於理解 mips彙編 t0 the base address of the array t1 the size of the array size 1 sll t1,t1,2 add t...
MIPS組合語言實現選擇排序
mips組合語言實現排序演算法,其實並不難。只要你掌握了基本的指令語句,並且熟悉c或c 相關演算法,即可輕鬆寫出來。對於mips組合語言還不太熟悉的夥伴,可以參考下面這篇部落格 它的具體實現 如下 c include using namespace std int main num index nu...
MIPS下的氣泡排序
mips組合語言的特點在於整齊劃一。本文主要實現氣泡排序演算法。話不多說,先給出其中兩個函式的c語言 void swap int v,int k void sort int v,int n 下面給出mips 備註 程式是基於winmips64模擬器下執行 實現氣泡排序 data 資料區 before...