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

Need assistance on improving this Bubble Sort for MASM assembly. I know I need t

ID: 652700 • Letter: N

Question

Need assistance on improving this Bubble Sort for MASM assembly. I know I need to use a register as the exchange flag, not using a memory variable. Here is the code:

;----------------------------------------------------------
BubbleSort PROC USES eax ecx esi,
   pArray:PTR DWORD,       ; pointer to array
   Count:DWORD           ; array size
;
; Sort an array of 32-bit signed integers in ascending order
; using the bubble sort algorithm.
; Receives: pointer to array, array size
; Returns: nothing
;-----------------------------------------------------------

   mov ecx,Count
   dec ecx           ; decrement count by 1

L1:   push ecx           ; save outer loop count
   mov esi,pArray       ; point to first value

L2:   mov eax,[esi]       ; get array value
   cmp [esi+4],eax   ; compare a pair of values
   jge L3           ; if [esi] <= [edi], don't exch
   xchg eax,[esi+4]   ; exchange the pair
   mov [esi],eax

L3:   add esi,4       ; move both pointers forward
   loop L2       ; inner loop

   pop ecx       ; retrieve outer loop count
   loop L1       ; else repeat outer loop

L4:   ret
BubbleSort ENDP

Explanation / Answer

mov ecx,Count dec ecx ; decrement count by 1 L1: push ecx ; save outer loop count mov esi,pArray ; point to first value mov ebx, 0 ; init the exit var L2: mov eax, [esi] ; get array value cmp [esi+4],eax ; compare a pair of values jge L3 ; if [esi]
Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote