wap to sort 5 numbers in array in ascending order.
Wap to sort 5 numbers in array in ascending order.
TITLE INSERTION SORTING
Wap to sort 5 numbers in array in ascending order.
TITLE INSERTION SORTING
- Code:
.MODEL SMALL
.STACK 64H
.DATA
NUM DB 45,32,12,89,01
.CODE
PROCESS PROC
CMP AL,NUM[ST+1] ;COMPARES IF FIRST DATA IS SMALLER
JL GO ;AND IF SO JUMPS TO GO LABEL OTHERWISE
XCHG AL,NUM[SI+1] ;SWAP MEMORY CONTENT TO REGISTER
MOV NUM[SI],AL ;PUT SMALLER ONE TO FIRST MEMORY
MOV AH,1 ;SET FLAG
GO: INC SI ;IF NOT INCREASE SI BY 1
RET
PROCESS ENDP
MAIN PROC
MOV AX,@DATA ;LOAD BASE ADDRESS(BA) OF DATA SEGMENT
MOV DS,AX ;MOVED BA TO DS
MOV CX,04 ;COUNTER IS INITIALISED TO 4 AS THERE ARE 5 NUMBERS
MOV BX,CX ;SAVED COUNTER COUNTER TO BX REGISTER
MOV SI,0 ;TO POINT FIRST DATA OF VARIABLE NUM, SI IS INITIALISED 0
MOV AH,00 ;USED FOR FLAG
START: MOV AL,NUM[SI] ;FIRST DATA FROM MEMORY IS SAVED IN AL REGISTER
CALL PROCESS
CMP SI,4 ;CHECKS IF SI CONTENT REACHED TO LAST DATA POSITION
JNE CONTD ;IF NOT REACHED JUMPS TO CONTINUE OTHERWISE CHECKS FOR FLAG AH
CMP AH,1 ;IF AGAIN (AH != 1) THEN SORTING IS COMPLETED
JNE CONTD ;AND JUMPS TO CONTINUE OTHERWISE
MOV SI,0 ;AGAIN SI IS INITIALISED AND
DEC BX ;COUNTER SAVED IN BX IS DECREMENT BY 1
MOV CX,BX ;COMPLETE 1 FULL COUNTER MEANS GREATEST DATA IS AT LAST POSITION
MOV AH,0 ;AND IS NOT NECESSARY TO CHECK SO FLAG ANGAIN IS SET TO 0
CONTD: LOOP START
MOV AX,4C00H ;VALUE 4C IN AH REGISTER
INT 21H ;THIS INTERRUPT TERMINATES THE PROGRAM
MAIN ENDP
END MAIN