; ; CPE 221 Assembly Programming Asssignment #1 Solution ; Fall 2012 ; This program sort a list of numbers using bubble sort algorithm ; from highest to lowest and counts the number of swaps. ; orig: .org 1000 lar r30, End lar r29, phase lar r26, swap lar r25, loop lar r23, loop2 la r6, size addi r6,r6,-1 sub r12, r12, r12 phase: la r10,0(r6) ;copy the size to r10 addi r10,r10,-1 lar r28,array loop: ld r8, 0(r28) ;first number ld r9, 4(r28) ;second number sub r7,r8,r9 brmi r26,r7 ;if 1st number greater, r7 will be +ve(do swap) loop2: addi r28,r28,4 ;point to next number in the list addi r10,r10,-1 ; brpl r25,r10 ;if +ve go to next number in the phase , else go to next phase addi r6,r6,-1 brpl r29,r6 br r30 swap: la r11,0(r8) ;r11 temp register used for swapping la r8,0(r9) la r9,0(r11) st r8,0(r28) st r9,4(r28) la r9,0(r11) addi r12, r12, 1 br r23 End: st r12, num_swaps stop .org 3000 array: .dc -9,7,-7,15,8,2,20,1,12,23,-99,33,22,17 size: .equ 14 num_swaps: .dw 1