; 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
Comments