-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path3.b. Sorting.asm
101 lines (76 loc) · 1.59 KB
/
3.b. Sorting.asm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
;sorting
.MODEL SMALL
.STACK 100H
.DATA
str DB 100 DUP ?
inpmsg DB "Enter the string: $"
outmsg DB "After Sorting: $"
n DW ?
.CODE
MAIN PROC
MOV AX,@DATA
MOV DS,AX
LEA DX,inpmsg
MOV AH,09H
INT 21H
MOV SI,0
MOV DI,0
INPUT:
MOV AH,1
INT 21H
CMP AL,0DH
JZ ENDINPUT
MOV str[SI],AL
INC SI
JMP INPUT
ENDINPUT:
;sorting segment increasing order (Using bubble sort)
MOV n,SI;
SUB n,1
MOV CX,n
OUTTOP:
MOV SI,0
MOV DI,1
TOP:
MOV AL,str[SI]
CMP AL,str[DI]
JL SKIP ; JG to decreasing order sort
XCHG AL,str[DI]
MOV str[SI],AL
SKIP:
CMP DI,n
JZ ENDTOP
INC DI
INC SI
JMP TOP:
ENDTOP:
LOOP OUTTOP:
;Printing segment
CALL NEWLINE
LEA DX,outmsg
MOV AH,09H
INT 21H
INC n
MOV DI,0
OUTPUT:
MOV DL,str[DI]
CMP DI,n
JZ ENDOUTPUT
MOV DL,str[DI]
MOV AH,2
INT 21H
INC DI
JMP OUTPUT
ENDOUTPUT:
MOV AH,4CH
INT 21H
MAIN ENDP
NEWLINE PROC
MOV AH,2
MOV DL,0AH
INT 21H
MOV DL,0DH
INT 21H
RET
NEWLINE ENDP
END MAIN