Question: In NASM: I am trying to sort the array in ascending order, but I have in the program using bubble sort. I am getting this

In NASM:

I am trying to sort the array in ascending order, but I have in the program using bubble sort.

I am getting this :

In NASM: I am trying to sort the array in ascending order,

instead of this:

but I have in the program using bubble sort. I am getting

Here is my code below:

;;;;;;;;;;;;;;;;;;;; MACRO DEFINITIONS ;;;;;;;;;;;;;;;;;;;;

; A macro with two parameters

; Implements the write system call

%macro writestring 2

mov eax, 4 ;sys_write system call number

mov ebx, 1 ;file descriptor std_out

mov ecx, %1 ;message to write from parameter 1

mov edx, %2 ;message length from parameter 2

int 0x80

%endmacro

;;;;;;;;;;;;;;;;;;;; DATA SEGMENT ;;;;;;;;;;;;;;;;;;;;

section .data

msg1 db 'Before sorting: '

lenmsg1 equ $-msg1

msg2 db 'After sorting: '

lenmsg2 equ $-msg2

asciinums db '7','3','2','1','0','5','6','4','8','9'

lenasciinums equ $-asciinums

crlf db 0x0d, 0x0a

lencrlf equ $ - crlf

swap: db 0

section .text

global _start

_start:

writestring msg1, lenmsg1

writestring asciinums, lenasciinums

writestring crlf, lencrlf

outer:

mov eax, 10

mov ebx, 0

mov esi, asciinums

inner:

mov al, [esi+1]

mov ah, [esi]

inc esi

cmp ah, [esi]

jl skip

mov [esi], ah

mov [esi-1], al

skip:

dec eax

cmp eax, ebx

jl inner

loop outer

writestring msg2, lenmsg2

writestring asciinums, lenasciinums

writestring crlf, lencrlf

mov eax, 1 ;terminate program

int 0x80

Before sorting: 7321056489 After sorting 3721056489

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!