Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Description: Your task is to implement a bubble sort algorithm in MIPS assembly

ID: 3726743 • Letter: D

Question

Description: Your task is to implement a bubble sort algorithm in MIPS assembly language. Your program must implement the following steps: Prompt the user for a number that defines the size of an array Prompt the user to enter n integers based on the size of the array Store all integer values in an array in memory Sort all integer values Print out the sorted integer list . . To assist you in completing the assignment, review and trace the pseudo-code for bubble sort algorithm. (source: Wikipedia) procedure bubblesort( A: list of sortable items n - length(A) for i = 0 to n-1 for j _ 1 to n-1 if Aj-1]A[j] then swap( Aj-1], A1] end if end for end for end procedure Example Program Execution: Reads in 10 integers, stores them in memory, sorts the array in memory and displays the sorted array. Enter Array Size: 10 Enter Integer: 2 Enter Integer: 4

Explanation / Answer

.file 1 "" .section .mdebug.abi32 .previous .nan legacy .module fp=32 .module nooddspreg .abicalls .rdata .align 2 $LC0: .ascii "Enter number of elements" .align 2 $LC1: .ascii "%d" .align 2 $LC2: .ascii "Enter %d integers
" .align 2 $LC3: .ascii "Sorted list in ascending order:" .align 2 $LC4: .ascii "%d
" .text .align 2 .globl main .set nomips16 .set nomicromips .ent main .type main, @function main: .frame $fp,448,$31 # vars= 416, regs= 2/0, args= 16, gp= 8 .mask 0xc0000000,-4 .fmask 0x00000000,0 .set noreorder .cpload $25 .set nomacro addiu $sp,$sp,-448 sw $31,444($sp) sw $fp,440($sp) move $fp,$sp .cprestore 16 movz $31,$31,$0 lw $2,%got($LC0)($28) nop addiu $4,$2,%lo($LC0) lw $2,%call16(puts)($28) nop move $25,$2 .reloc 1f,R_MIPS_JALR,puts 1: jalr $25 nop lw $28,16($fp) addiu $2,$fp,436 move $5,$2 lw $2,%got($LC1)($28) nop addiu $4,$2,%lo($LC1) lw $2,%call16(__isoc99_scanf)($28) nop move $25,$2 .reloc 1f,R_MIPS_JALR,__isoc99_scanf 1: jalr $25 nop lw $28,16($fp) lw $2,436($fp) nop move $5,$2 lw $2,%got($LC2)($28) nop addiu $4,$2,%lo($LC2) lw $2,%call16(printf)($28) nop move $25,$2 .reloc 1f,R_MIPS_JALR,printf 1: jalr $25 nop lw $28,16($fp) sw $0,24($fp) b $L2 nop $L3: addiu $3,$fp,36 lw $2,24($fp) nop sll $2,$2,2 addu $2,$3,$2 move $5,$2 lw $2,%got($LC1)($28) nop addiu $4,$2,%lo($LC1) lw $2,%call16(__isoc99_scanf)($28) nop move $25,$2 .reloc 1f,R_MIPS_JALR,__isoc99_scanf 1: jalr $25 nop lw $28,16($fp) lw $2,24($fp) nop addiu $2,$2,1 sw $2,24($fp) $L2: lw $2,436($fp) lw $3,24($fp) nop slt $2,$3,$2 bne $2,$0,$L3 nop sw $0,24($fp) b $L4 nop $L8: sw $0,28($fp) b $L5 nop $L7: lw $2,28($fp) nop sll $2,$2,2 addiu $3,$fp,24 addu $2,$3,$2 lw $3,12($2) lw $2,28($fp) nop addiu $2,$2,1 sll $2,$2,2 addiu $4,$fp,24 addu $2,$4,$2 lw $2,12($2) nop slt $2,$2,$3 beq $2,$0,$L6 nop lw $2,28($fp) nop sll $2,$2,2 addiu $3,$fp,24 addu $2,$3,$2 lw $2,12($2) nop sw $2,32($fp) lw $2,28($fp) nop addiu $2,$2,1 sll $2,$2,2 addiu $3,$fp,24 addu $2,$3,$2 lw $3,12($2) lw $2,28($fp) nop sll $2,$2,2 addiu $4,$fp,24 addu $2,$4,$2 sw $3,12($2) lw $2,28($fp) nop addiu $2,$2,1 sll $2,$2,2 addiu $3,$fp,24 addu $2,$3,$2 lw $3,32($fp) nop sw $3,12($2) $L6: lw $2,28($fp) nop addiu $2,$2,1 sw $2,28($fp) $L5: lw $3,436($fp) lw $2,24($fp) nop subu $2,$3,$2 addiu $3,$2,-1 lw $2,28($fp) nop slt $2,$2,$3 bne $2,$0,$L7 nop lw $2,24($fp) nop addiu $2,$2,1 sw $2,24($fp) $L4: lw $2,436($fp) nop addiu $3,$2,-1 lw $2,24($fp) nop slt $2,$2,$3 bne $2,$0,$L8 nop lw $2,%got($LC3)($28) nop addiu $4,$2,%lo($LC3) lw $2,%call16(puts)($28) nop move $25,$2 .reloc 1f,R_MIPS_JALR,puts 1: jalr $25 nop lw $28,16($fp) sw $0,24($fp) b $L9 nop $L10: lw $2,24($fp) nop sll $2,$2,2 addiu $3,$fp,24 addu $2,$3,$2 lw $2,12($2) nop move $5,$2 lw $2,%got($LC4)($28) nop addiu $4,$2,%lo($LC4) lw $2,%call16(printf)($28) nop move $25,$2 .reloc 1f,R_MIPS_JALR,printf 1: jalr $25 nop lw $28,16($fp) lw $2,24($fp) nop addiu $2,$2,1 sw $2,24($fp) $L9: lw $2,436($fp) lw $3,24($fp) nop slt $2,$3,$2 bne $2,$0,$L10 nop move $2,$0 move $sp,$fp lw $31,444($sp) lw $fp,440($sp) addiu $sp,$sp,448 j $31 nop .set macro .set reorder .end main .size main, .-main .ident "GCC: (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609"