Advertisement
Atick_Faisal

ASSEBLY CODE TO SORT A CHAR ARRAY

Apr 22nd, 2018
179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;------------------ASSEMBLY CODE TO SORT AN ARRAY IN ASCENDING ORDER------------------
  2. .MODEL SMALL
  3. .STACK 100H
  4. .DATA
  5.     PROMPT1 DB "ENTER YOUR TEXT : $"
  6.     PROMPT2 DB 0AH, 0DH, "IN ASCENDING ORDER IT IS : $"  
  7.     ;------------------ARRAY TO STORE CHARS-----------------
  8.     A DB 100 DUP(?)  
  9.     ;-----------------ARRAY LENGTH VARIABLE-----------------
  10.     SIZE DW 0
  11. .CODE
  12. MAIN PROC
  13.     MOV AX, @DATA
  14.     MOV DS, AX
  15.     ;-------------FIRST PROMPT-------------
  16.     MOV AH, 9
  17.     LEA DX, PROMPT1
  18.     INT 21H
  19.     ;---------------TAKE INPUT-------------
  20.     MOV AH, 1
  21.     MOV DI, 0  
  22.    
  23. TAKE_INPUT:
  24.     ;--------------INPUT LOOP--------------
  25.     INT 21H
  26.     CMP AL, 0DH
  27.     JE NEXT
  28.     MOV A[DI], AL
  29.     INC DI
  30.     JMP TAKE_INPUT
  31.    
  32. NEXT:
  33.     ;---------------INITIALIZE COUNTER REGISTERS-----------------    
  34.     MOV SIZE, DI
  35.     MOV DI, 0
  36.     MOV BX, 0
  37.     MOV CX, 0
  38.     ;-------------------NESTED FOR LOOP-------------------------
  39.     ;--------ARRAY SORT ALGORITHM----------
  40.     ;for (i = 0; i < n; ++i)
  41.         ;{
  42.         ;    for (j = i + 1; j < n; ++j)
  43.         ;    {
  44.         ;        if (number[i] > number[j])
  45.         ;        {
  46.         ;            a =  number[i];
  47.         ;            number[i] = number[j];
  48.         ;            number[j] = a;
  49.         ;        }
  50.         ;    }
  51.         ;}
  52.         ;------------ALGO IMPLEMENTATION---------  
  53. LOOP1:
  54.     MOV CX, BX
  55.     ADD CX, 1
  56. LOOP2:
  57.     MOV DI, BX
  58.     MOV DH, A[DI]
  59.     MOV DI, CX
  60.     MOV DL, A[DI]
  61.     CMP DH, DL
  62.     JG EXCHANGE
  63. CONTINUE:
  64.     INC CX
  65.     CMP CX, SIZE
  66.     JL LOOP2
  67.     INC BX
  68.     CMP BX, SIZE
  69.     JL LOOP1
  70.     JMP OUTPUT  -  
  71. EXCHANGE:
  72.     ;-------------------SORT IN ASCENDING ORDER-----------------
  73.     MOV DI, BX
  74.     MOV A[DI], DL
  75.     MOV DI, CX
  76.     MOV A[DI], DH
  77.     JMP CONTINUE
  78.     ;-----------------OUTPUT LOOP-----------------
  79. OUTPUT:
  80.     ;--------------SHOW OUTPUT PROMPT-------------
  81.     MOV AH, 9
  82.     LEA DX, PROMPT2
  83.     INT 21H
  84.     ;-----------PRINT SORTED ARRAY----------------
  85.     MOV AH, 2
  86.     MOV DI, SIZE
  87.     SUB DI, 1
  88.     MOV SIZE, DI
  89.     MOV DI, 0
  90. OUTPUT_LOOP:
  91.     ;-----------DISPLAY OUTPUT CHAR BY CHAR------------
  92.     MOV DL, A[DI]
  93.     INT 21H
  94.     INC DI
  95.     CMP DI, SIZE
  96.     JL OUTPUT_LOOP 
  97.     MOV DL, A[DI+1]
  98.     INT 21H
  99.         ;-------------END PROGRAM-------------
  100.         MOV AH, 4CH
  101.         INT 21H
  102.     MAIN ENDP
  103. END MAIN
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement