用組合語言實現氣泡排序 基於MIPS指令系統

2021-07-30 03:26:08 字數 2380 閱讀 2917

這是計組第乙個小實驗,實現從鍵盤輸入十個數字,並把它們按從大到小排序輸出。

氣泡排序流程圖

c語言實現氣泡排序

void swap(int a, int k) 

void sort(int a, int n) }}

.data

sortarray:

.space 40

separate:

.asciiz " "

line:

.asciiz "\n"

.text

.globl main

main:

la $t0, sortarray #陣列起始位址

add $t1, $zero, $t0

#指向陣列起始位址

addi $t8, $t0, 40

#陣列終止位址

addi $t3, $zero, 0

#輸入計數器

inputdata:

li $v0, 5

#輸入整型資料/read_int

syscall

sw $v0, 0($t1) #存入陣列

addi $t1, $t1, 4

addi $t3, $t3, 1

#輸入計數器加1

slti $s0, $t3, 10

#計數器小於10,繼續輸入

bnez $s0, inputdata

addi $t3, $zero, 0

#外層迴圈計數器i = 0

outloop:

add $t1, $zero, $t0

#每次進入排序迴圈,讓$t1指向陣列起始位址

slti $s0, $t3, 10

#i < 10,進入內層迴圈

beqz $s0, print

#i > 10, 退出迴圈,列印排序後的陣列

addi $t4, $t3, -1

#j = i - 1

inloop:

slti $s0, $t4, 0

#j < 0,退出內層迴圈

bnez $s0, exitinloop

sll $t5, $t4, 2

#$t5 = j * 4

add $t5, $t1, $t5

#$t5 = 陣列起始位址 + j * 4

lw $t6, 0($t5) #$t6 = a[j]

lw $t7, 4($t5) #$t7 = a[j + 1]

slt $s0, $t6, $t7

#a[j] < a[j + 1],交換

bnez $s0, swap

addi $t4, $t4, -1

#j--

j inloop #繼續內層迴圈

swap:

sw $t6, 4($t5) #$t6 = a[j + 1]

sw $t7, 0($t5) #$t7 = a[j]

addi $t4, $t4, -1

#j--

j inloop #繼續內層迴圈

exitinloop:

addi $t3, $t3, 1

#i++

j outloop #進入外層迴圈

print:

lw $a0, 0($t0) #要列印的資料存到$a0

li $v0, 1

#系統呼叫/print_int

syscall

la $a0, separate #列印空格

li $v0, 4

#系統呼叫/print_string

syscall

addi $t0, $t0, 4

bne $t0, $t8, print

#在陣列終止位址前繼續列印

la $a0, line #陣列列印完後換行

li $v0, 4

#系統呼叫/print_string

syscall

j exit

#退出程式

exit:

li $v0, 10

#系統呼叫/退出程式

syscall

實驗結果

pcspim模擬器顯示

組合語言實現氣泡排序

氣泡排序 author jrh 2011.7.10 assume ds data data segment a dw 1,4,2,5,7,9,6,3 data ends code segment start mov ax,data mov ds,ax mov cx,8 dec cx lop1 pus...

彙編 組合語言實現氣泡排序 loop指令實現

1 2 迴圈程式設計3 loop指令實現4 氣泡排序5 for int i 0 i6 for int h 0 j j 10 11 12datas segment 13 buffer db 12,3,6,23,54,121,99,100,46,23 待排序的10個數 14datas ends 15co...

組合語言 氣泡排序

在資料區,給出了學生人數及組合語言課程的成績,請將成績排序並儲存在原資料區。assume cs cseg,ds dseg,ss sseg sseg segment stack dw 10h dup sseg ends dseg segment dw 123,5,9,11,33,6,9,76,100,...