/* * C Program sorts the numbers in ascending order using bubble sort (bubble_sort.c) */ /* #include #define MAXSIZE 1000 void swap (int *a, int *b) { int temp = *a; *a = *b; *b = temp; } void bubble_sort(int list[], int size) { int i, j; for (i = 0; i < size-1; i++) { for (j = 0; j < size-i-1; j++) { if (list[j] > list[j+1]) { swap(&list[j], &list[j+1]); } } } } int main() { int array[MAXSIZE]; int i, num; printf("enter the number of elements n = "); scanf("%d", &num); printf("enter %d elements one by one\n", num); for (i = 0; i < num; i++) { scanf("%d", &array[i]); } printf("\nthe original array is "); for (i = 0; i < num; i++) { printf("%d ", array[i]); } printf("\n"); bubble_sort(array, num); printf("the sorted array is "); for (i = 0; i < num; i++) { printf("%d ", array[i]); } printf("\n"); return 0; } */ .text swap: addiu $sp,$sp,-16 sw $fp,12($sp) move $fp,$sp sw $4,16($fp) sw $5,20($fp) lw $2,16($fp) nop lw $2,0($2) nop sw $2,0($fp) lw $2,20($fp) nop lw $3,0($2) lw $2,16($fp) nop sw $3,0($2) lw $2,20($fp) lw $3,0($fp) nop sw $3,0($2) move $sp,$fp lw $fp,12($sp) addiu $sp,$sp,16 j $31 nop bubble_sort: addiu $sp,$sp,-32 sw $31,28($sp) sw $fp,24($sp) move $fp,$sp sw $4,32($fp) sw $5,36($fp) sw $0,16($fp) j $L3 nop $L7: sw $0,20($fp) j $L4 nop $L6: lw $2,20($fp) nop sll $2,$2,2 lw $3,32($fp) nop addu $2,$3,$2 lw $3,0($2) lw $2,20($fp) nop addiu $2,$2,1 sll $2,$2,2 lw $4,32($fp) nop addu $2,$4,$2 lw $2,0($2) nop slt $2,$2,$3 beq $2,$0,$L5 nop lw $2,20($fp) nop sll $2,$2,2 lw $3,32($fp) nop addu $4,$3,$2 lw $2,20($fp) nop addiu $2,$2,1 sll $2,$2,2 lw $3,32($fp) nop addu $2,$3,$2 move $5,$2 jal swap nop $L5: lw $2,20($fp) nop addiu $2,$2,1 sw $2,20($fp) $L4: lw $3,36($fp) lw $2,16($fp) nop subu $2,$3,$2 addiu $3,$2,-1 lw $2,20($fp) nop slt $2,$2,$3 bne $2,$0,$L6 nop lw $2,16($fp) nop addiu $2,$2,1 sw $2,16($fp) $L3: lw $2,36($fp) nop addiu $3,$2,-1 lw $2,16($fp) nop slt $2,$2,$3 bne $2,$0,$L7 nop move $sp,$fp lw $31,28($sp) lw $fp,24($sp) addiu $sp,$sp,32 j $31 nop main: addiu $sp,$sp,-4032 sw $31,4028($sp) sw $fp,4024($sp) move $fp,$sp lui $2,%hi($LC0) addiu $4,$2,%lo($LC0) jal printf nop addiu $3,$fp,4020 lui $2,%hi($LC1) addiu $4,$2,%lo($LC1) move $5,$3 jal scanf nop lw $3,4020($fp) lui $2,%hi($LC2) addiu $4,$2,%lo($LC2) move $5,$3 jal printf nop sw $0,16($fp) j $L9 nop $L10: addiu $3,$fp,20 lw $2,16($fp) nop sll $2,$2,2 addu $3,$3,$2 lui $2,%hi($LC1) addiu $4,$2,%lo($LC1) move $5,$3 jal scanf nop lw $2,16($fp) nop addiu $2,$2,1 sw $2,16($fp) $L9: lw $2,4020($fp) lw $3,16($fp) nop slt $2,$3,$2 bne $2,$0,$L10 nop lui $2,%hi($LC3) addiu $4,$2,%lo($LC3) jal printf nop sw $0,16($fp) j $L11 nop $L12: lw $2,16($fp) nop sll $2,$2,2 addiu $3,$fp,16 addu $2,$3,$2 lw $3,4($2) lui $2,%hi($LC4) addiu $4,$2,%lo($LC4) move $5,$3 jal printf nop lw $2,16($fp) nop addiu $2,$2,1 sw $2,16($fp) $L11: lw $2,4020($fp) lw $3,16($fp) nop slt $2,$3,$2 bne $2,$0,$L12 nop li $4,10 jal putchar nop lw $2,4020($fp) addiu $3,$fp,20 move $4,$3 move $5,$2 jal bubble_sort nop lui $2,%hi($LC5) addiu $4,$2,%lo($LC5) jal printf nop sw $0,16($fp) j $L13 nop $L14: lw $2,16($fp) nop sll $2,$2,2 addiu $3,$fp,16 addu $2,$3,$2 lw $3,4($2) lui $2,%hi($LC4) addiu $4,$2,%lo($LC4) move $5,$3 jal printf nop lw $2,16($fp) nop addiu $2,$2,1 sw $2,16($fp) $L13: lw $2,4020($fp) lw $3,16($fp) nop slt $2,$3,$2 bne $2,$0,$L14 nop li $4,10 jal putchar nop move $2,$0 move $sp,$fp lw $31,4028($sp) lw $fp,4024($sp) addiu $sp,$sp,4032 j $31 nop .data $LC0: .ascii "enter the number of elements n = \000" $LC1: .ascii "%d\000" $LC2: .ascii "enter %d elements one by one\012\000" $LC3: .ascii "\012the original array is \000" $LC4: .ascii "%d \000" $LC5: .ascii "the sorted array is \000" .end