mips 選擇排序

2021-07-30 03:24:03 字數 2133 閱讀 2922

#********************************************

# 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...