(SRCTools Version 3.1.1) HexLoc DecLoc MachWord Label Instruction Comment ; ; 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 000003e8 0000001000 37800070 lar r30, End 000003ec 0000001004 37400018 lar r29, phase 000003f0 0000001008 36800048 lar r26, swap 000003f4 0000001012 3640001c lar r25, loop 000003f8 0000001016 35c00028 lar r23, loop2 000003fc 0000001020 2980000e la r6, size 00000400 0000001024 698dffff addi r6, r6, -1 00000404 0000001028 7318c000 sub r12, r12, r12 00000408 0000001032 2a8c0000 phase: la r10, 0(r6) ;copy the size to r10 0000040c 0000001036 6a95ffff addi r10, r10, -1 00000410 0000001040 370007a4 lar r28, array 00000414 0000001044 0a380000 loop: ld r8, 0(r28) ;first number 00000418 0000001048 0a780004 ld r9, 4(r28) ;second number 0000041c 0000001052 71d09000 sub r7, r8, r9 00000420 0000001056 40347004 brpl r26, r7 ;if 1st number greater, r7 will be +ve(do swap) 00000424 0000001060 6f380004 loop2: addi r28, r28, 4 ;point to next number in the list 00000428 0000001064 6a95ffff addi r10, r10, -1 ; 0000042c 0000001068 4032a004 brpl r25, r10 ;if +ve go to next number in the phase , else go to next phase 00000430 0000001072 698dffff addi r6, r6, -1 00000434 0000001076 403a6004 brpl r29, r6 00000438 0000001080 403c0001 br r30 0000043c 0000001084 2ad00000 swap: la r11, 0(r8) ;r11 temp register used for swapping 00000440 0000001088 2a120000 la r8, 0(r9) 00000444 0000001092 2a560000 la r9, 0(r11) 00000448 0000001096 1a380000 st r8, 0(r28) 0000044c 0000001100 1a780004 st r9, 4(r28) 00000450 0000001104 2a560000 la r9, 0(r11) 00000454 0000001108 6b180001 addi r12, r12, 1 00000458 0000001112 402e0001 br r23 0000045c 0000001116 1b000bf0 End: st r12, num_swaps 00000460 0000001120 f8000000 stop .org 3000 00000bb8 0000003000 fffffff7 array: .dc -9, 7, -7, 15, 8, 2, 20, 1, 12, 23, -99, 33, 22, 17 00000bbc 0000003004 00000007 00000bc0 0000003008 fffffff9 00000bc4 0000003012 0000000f 00000bc8 0000003016 00000008 00000bcc 0000003020 00000002 00000bd0 0000003024 00000014 00000bd4 0000003028 00000001 00000bd8 0000003032 0000000c 00000bdc 0000003036 00000017 00000be0 0000003040 ffffff9d 00000be4 0000003044 00000021 00000be8 0000003048 00000016 00000bec 0000003052 00000011 size: .equ 14 00000bf0 0000003056 num_swaps: .dw 1 --- Symbol Table --- swap: 1084 End: 1116 loop: 1044 array: 3000 loop2: 1060 orig: 1000 phase: 1032 num_swaps: 3056 size: 14