Sort array

PHOTO EMBED

Fri May 31 2024 14:53:25 GMT+0000 (Coordinated Universal Time)

Saved by @signup

; array_sort.asm
.model small
.stack 100h
.data
    array db 5, 3, 8, 4, 2 ; Array to be sorted
    array_size equ $-array ; Size of the array
    newline db 0Dh, 0Ah, '$' ; Newline characters for printing
    space db ' $' ; Space character for printing

.code
main proc
    mov ax, @data
    mov ds, ax
    mov es, ax

    ; Initialize pointers
    lea si, array
    mov cx, array_size

outer_loop:
    dec cx
    jz sorted ; If the size is 0, array is sorted

    mov di, si
    mov bx, cx

inner_loop:
    mov al, [di]
    mov ah, [di+1]
    cmp al, ah
    jbe no_swap

    ; Swap elements
    xchg al, ah
    mov [di], al
    mov [di+1], ah

no_swap:
    inc di
    dec bx
    jnz inner_loop

    jmp outer_loop

sorted:
    ; Print sorted array
    lea si, array
    mov cx, array_size

print_loop:
    mov al, [si]
    add al, '0' ; Convert to ASCII
    mov dl, al
    mov ah, 02h
    int 21h

    ; Print space
    lea dx, space
    mov ah, 09h
    int 21h

    inc si
    loop print_loop

    ; Print newline
    lea dx, newline
    mov ah, 09h
    int 21h

    ; Terminate program
    mov ah, 4Ch
    int 21h

main endp
end main
content_copyCOPY