Created
December 1, 2019 15:03
-
-
Save nahiyan/a2b159690a0b273fc3b86a91a79080c6 to your computer and use it in GitHub Desktop.
Revisions
-
nahiyan created this gist
Dec 1, 2019 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,119 @@ .MODEL SMALL .DATA NUMBERS DB 4 DUP (?) J DW 1 I DW ? LINEBREAK DB 10, 13, "$" KEY DB ? MSG1 DB "Ascending Order: $" MSG2 DB "Descending Order: $" .CODE MOV AX, @DATA MOV DS, AX ; take input of 4 numbers MOV CX, 4 MOV AH, 1 LEA SI, NUMBERS L1: INT 21h MOV [SI], AL INC SI LOOP L1 ; line break MOV AH, 9 LEA DX, LINEBREAK INT 21h ; sort the numbers MOV CX, 3 L3: ; key = A[j] LEA SI, NUMBERS ADD SI, J MOV BH, [SI] MOV KEY, BH ; i = j - 1 MOV DX, J MOV I, DX DEC I PREPREWHILE: ; i > 0 CMP I, 0 JGE PREWHILE JNGE AFTERWHILE PREWHILE: ; A[i] => BH LEA SI, NUMBERS ADD SI, I MOV BH, [SI] ; A[i] > key CMP BH, KEY JG WHILE JNG AFTERWHILE WHILE: ; A[i] => BH LEA SI, NUMBERS ADD SI, I MOV BH, [SI] ; A[i + 1] = A[i] LEA SI, NUMBERS ADD SI, I INC SI MOV [SI], BH DEC I JMP PREPREWHILE AFTERWHILE: ; A[i + 1] = key LEA SI, NUMBERS ADD SI, I INC SI MOV BH, KEY MOV [SI], BH INC J LOOP L3 ; ascending order MOV AH, 9 LEA DX, MSG1 INT 21h MOV CX, 4 LEA SI, NUMBERS MOV AH, 2 L2: MOV DL, [SI] INT 21h INC SI LOOP L2 ; line break MOV AH, 9 LEA DX, LINEBREAK INT 21h ; descending order MOV AH, 9 LEA DX, MSG2 INT 21h MOV CX, 4 LEA SI, NUMBERS ADD SI, CX MOV AH, 2 L4: DEC SI MOV DL, [SI] INT 21h LOOP L4