print macro msg
lea dx,msg
mov ah,09h
int 21h
endm
read macro n,j1,j2
j1:mov ah,01h
int 21h
cmp al,0dh
je j2
sub al,30h
mov bl,al
mov ax,n
mov dx,0ah
mul dx
xor bh,bh
add ax,bx
mov n,ax
jmp j1
j2 :nop
endm
printmul macro n1,l2,l3
mov bx,000ah
mov ax,n1
xor cx,cx
;push into stack
l2:xor dx,dx
div bx
push dx
inc cx
cmp ax,0000h
jne l2
;pop from stack
l3:pop dx
add dl,30h
mov ah,02h
int 21h
loop l3
endm
.model small
.stack 100h
.data
msg1 db 10,13,'Enter a number: $'
msg2 db 10,13,' Sorted Array $'
msg3 db 10,13,' $'
msg4 db 10,13,'Enter the size of array: $'
msg5 db 10,13,' Orginal Array $'
n dw 0
num dw 50 dup(0)
sml dw 0
.code
main proc
mov ax,@data
mov ds,ax
print msg4
read n,jump1,jump2
;read n elements
mov cx,n
mov si,00h
loop1:print msg1
;read a multidigit number
read num[si],jump3,jump4
add si,02
loop loop1
;printing unsorted array
print msg5
call display
mov ax,n
mov ah,2
mul ah
mov si,ax
sub si,02
lea di,num[si]
lea si,num
call quicksort
;printing sorted array
print msg2
call display
mov ah,4ch
int 21h
main endp
quicksort proc
cmp si,di
jnc j1
push si
push di
call part
mov dx,si
pop di
pop si
push di
mov di,dx
push di
sub di,02
call quicksort
pop si
add si,02
pop di
call quicksort
j1:ret
quicksort endp
part proc
mov ax,[di]
mov cx,di
mov di,si
sub si,02
j21:cmp ax,[di]
jc j11
add si,02
mov bx,[si]
mov dx,[di]
mov [si],dx
mov [di],bx
j11:add di,02
cmp di,cx
jnz j21
add si,2
mov bx,[si]
mov di,cx
mov [di],bx
mov [si],ax
ret
part endp
display proc
mov cx,n
mov si,00h
l4: push cx
print msg3
printmul num[si],l5,l6
add si,02h
pop cx
loop l4
ret
display endp
end
ভাই ইনপুট ক্যামনে নিব বুঝতে পারছি না !
ReplyDelete