├── README.md
├── Case_Converion.asm
├── Number 2.a. Odd_Even.asm
├── Number 1.a. Series summation.asm
├── Number 1.b. Factorial.asm
├── 1.b. String Reversal.asm
├── 1.a. Case Conversion.asm
├── vowel_consonant.asm
├── 3.b. Sorting.asm
└── 3.a. Countig on string .asm
/README.md:
--------------------------------------------------------------------------------
1 |
2 | CSE3232-Microprocessor-and-Assembly-Language-Lab
3 |
4 |
5 |
6 |
7 | * Case Conversion (1.a)
8 | * String Reversal (1.b)
9 | * String Counting (3.a)
10 | * String Sorting (3.b)
11 | * Number Series Summation (1.a)
12 | * Factorial (1.b)
13 | * Even-Odd Testing (2.a)
14 | * Number Sorting (3.a) - Same to String Sorting
15 |
--------------------------------------------------------------------------------
/Case_Converion.asm:
--------------------------------------------------------------------------------
1 | .MODEL SMALL
2 | .STACK 100H
3 | .CODE
4 |
5 | MAIN PROC
6 |
7 | ; 1 will request input
8 |
9 | MOV AH,1
10 | INT 21H
11 | ; storing input into temporary register
12 | MOV BL,AL
13 |
14 | ; converting upper to lower and vice-versa
15 |
16 | CMP BL,91
17 | JG Line1
18 |
19 | ADD BL,64
20 | Line1:
21 | SUB BL,32
22 |
23 | ;ADD DL,-10
24 | ; PRINTING NEW LINE (actually printing 80 chars)
25 | ; setting for output request
26 | MOV AH,2
27 | MOV DL,0AH
28 | INT 21H
29 | MOV DL,0DH
30 | INT 21H
31 |
32 | MOV DL,BL
33 | MOV AH,2
34 | INT 21H
35 |
36 | MOV AH,4CH ;eat extra printer char
37 | INT 21H
38 |
39 | MAIN ENDP
40 | END MAIN
41 |
42 |
--------------------------------------------------------------------------------
/Number 2.a. Odd_Even.asm:
--------------------------------------------------------------------------------
1 | ;EVEN ODD
2 |
3 | .MODEL SMALL
4 | .STACK 100H
5 |
6 | .DATA
7 | str DB 100 DUP ?
8 | inpmsg DB "Enter number between 0-9 : $"
9 |
10 | odd DB "ODD$"
11 | even DB "EVEN$"
12 |
13 | n DB ?
14 | dv DB 2
15 |
16 | .CODE
17 |
18 | MAIN PROC
19 | MOV AX,@DATA
20 | MOV DS,AX
21 |
22 | LEA DX,inpmsg
23 | MOV AH,09H
24 | INT 21H
25 |
26 | MOV AH,1
27 | INT 21H
28 | SUB AL,48
29 |
30 | DIV dv
31 | CMP AH,0
32 | JZ EVENN
33 |
34 | CALL NEWLINE
35 | LEA DX,odd
36 |
37 | JMP ENDEVENN
38 | EVENN:
39 | CALL NEWLINE
40 | LEA DX,even
41 | ENDEVENN:
42 |
43 | MOV AH,09H
44 | INT 21H
45 |
46 | MOV AH,4CH
47 | INT 21H
48 |
49 | MAIN ENDP
50 |
51 | NEWLINE PROC
52 | MOV AH,2
53 | MOV DL,0AH
54 | INT 21H
55 | MOV DL,0DH
56 | INT 21H
57 | RET
58 | NEWLINE ENDP
59 |
60 | END MAIN
--------------------------------------------------------------------------------
/Number 1.a. Series summation.asm:
--------------------------------------------------------------------------------
1 | ;Series summation
2 |
3 | .MODEL SMALL
4 | .STACK 100H
5 |
6 | .DATA
7 | str DB 100 DUP ?
8 | inpmsg DB "Enter number between 1-3 : $"
9 | outmsg DB "Summation: $"
10 |
11 | n DB ?
12 | d DB 2
13 |
14 | .CODE
15 |
16 | MAIN PROC
17 | MOV AX,@DATA
18 | MOV DS,AX
19 |
20 | LEA DX,inpmsg
21 | MOV AH,09H
22 | INT 21H
23 |
24 | MOV AH,1
25 | INT 21H
26 |
27 | SUB AL,48
28 |
29 | MOV n,AL
30 | INC n
31 |
32 | MUL n
33 | DIV d
34 |
35 | MOV n,AL
36 |
37 |
38 | CALL NEWLINE
39 |
40 | LEA DX,outmsg
41 | MOV AH,09H
42 | INT 21H
43 |
44 | MOV DL,n
45 | ADD DL,48
46 | MOV AH,2H
47 | INT 21H
48 |
49 |
50 | MOV AH,4CH
51 | INT 21H
52 |
53 | MAIN ENDP
54 |
55 | NEWLINE PROC
56 | MOV AH,2
57 | MOV DL,0AH
58 | INT 21H
59 | MOV DL,0DH
60 | INT 21H
61 | RET
62 | NEWLINE ENDP
63 |
64 | END MAIN
--------------------------------------------------------------------------------
/Number 1.b. Factorial.asm:
--------------------------------------------------------------------------------
1 | ;Factorial
2 |
3 | .MODEL SMALL
4 | .STACK 100H
5 |
6 | .DATA
7 | str DB 100 DUP ?
8 | inpmsg DB "Enter number between 0-3 : $"
9 | outmsg DB "Factorial: $"
10 |
11 | n DB ?
12 | dv DB 2
13 |
14 | .CODE
15 |
16 | MAIN PROC
17 | MOV AX,@DATA
18 | MOV DS,AX
19 |
20 | LEA DX,inpmsg
21 | MOV AH,09H
22 | INT 21H
23 |
24 | MOV AH,1
25 | INT 21H
26 |
27 | SUB AL,48
28 |
29 | MOV BL,AL
30 | MOV AL,1
31 | MOV n,1
32 |
33 | CMP BL,0
34 | JZ ENDTOP
35 |
36 | TOP:
37 | MUL n
38 |
39 | CMP BL,n
40 | JZ ENDTOP
41 |
42 | INC n
43 |
44 | JMP TOP:
45 | ENDTOP:
46 |
47 | MOV n,AL
48 |
49 |
50 | CALL NEWLINE
51 |
52 | LEA DX,outmsg
53 | MOV AH,09H
54 | INT 21H
55 |
56 | MOV DL,n
57 | ADD DL,48
58 | MOV AH,2H
59 | INT 21H
60 |
61 |
62 | MOV AH,4CH
63 | INT 21H
64 |
65 | MAIN ENDP
66 |
67 | NEWLINE PROC
68 | MOV AH,2
69 | MOV DL,0AH
70 | INT 21H
71 | MOV DL,0DH
72 | INT 21H
73 | RET
74 | NEWLINE ENDP
75 |
76 | END MAIN
--------------------------------------------------------------------------------
/1.b. String Reversal.asm:
--------------------------------------------------------------------------------
1 | ; string revarsal
2 |
3 | .MODEL SMALL
4 | .STACK 100H
5 |
6 | .DATA
7 | str DB 100 DUP ?
8 | inpmsg DB "Enter the string: $"
9 | outmsg DB "Reversed string: $"
10 | n DB ?
11 | .CODE
12 |
13 | MAIN PROC
14 | MOV AX,@DATA
15 | MOV DS,AX
16 |
17 | LEA DX,inpmsg
18 | MOV AH,09H
19 | INT 21H
20 |
21 | MOV SI,0
22 | MOV DI,0
23 |
24 | INPUT:
25 | MOV AH,1
26 | INT 21H
27 | CMP AL,0DH
28 | JZ ENDINPUT
29 |
30 | MOV str[SI],AL
31 | INC SI
32 |
33 | JMP INPUT
34 | ENDINPUT:
35 |
36 | ; printing new line
37 | CALL NEWLINE
38 |
39 | LEA DX,outmsg
40 | MOV AH,09H
41 | INT 21H
42 |
43 | DEC SI
44 | ;reversed string output
45 | OUTPUT:
46 | MOV DL,str[SI]
47 | CMP SI,0
48 | JL ENDOUTPUT
49 |
50 | MOV DL,str[SI]
51 | MOV AH,2
52 | INT 21H
53 | DEC SI
54 |
55 | JMP OUTPUT
56 | ENDOUTPUT:
57 |
58 | MOV AH,4CH
59 | INT 21H
60 |
61 | MAIN ENDP
62 |
63 | NEWLINE PROC
64 | MOV AH,2
65 | MOV DL,0AH
66 | INT 21H
67 | MOV DL,0DH
68 | INT 21H
69 | RET
70 | NEWLINE ENDP
71 |
72 | END MAIN
73 |
74 |
--------------------------------------------------------------------------------
/1.a. Case Conversion.asm:
--------------------------------------------------------------------------------
1 | ; string case_revarsal
2 |
3 | .MODEL SMALL
4 | .STACK 100H
5 |
6 | .DATA
7 | str DB 100 DUP ?
8 | inpmsg DB "Enter the string: $"
9 | outmsg DB "After changing case: $"
10 | n DB ?
11 | .CODE
12 |
13 | MAIN PROC
14 | MOV AX,@DATA
15 | MOV DS,AX
16 |
17 | LEA DX,inpmsg
18 | MOV AH,09H
19 | INT 21H
20 |
21 | MOV SI,0
22 | MOV DI,0
23 |
24 | INPUT:
25 | MOV AH,1
26 | INT 21H
27 | CMP AL,0DH
28 | JZ ENDINPUT
29 |
30 | CMP AL,'z'
31 | JG NOCHANGE
32 | CMP AL,'A'
33 | JL NOCHANGE
34 | CMP AL,'Z'
35 | JG TOP
36 |
37 | JMP ENDTOP
38 | TOP:
39 | CMP AL,'a'
40 | JL NOCHANGE
41 | ENDTOP:
42 |
43 | ; case vonversion
44 | XOR AL,32
45 |
46 | NOCHANGE:
47 | MOV str[SI],AL
48 | INC SI
49 |
50 | JMP INPUT
51 | ENDINPUT:
52 |
53 | ; printing new line
54 | CALL NEWLINE
55 |
56 | LEA DX,outmsg
57 | MOV AH,09H
58 | INT 21H
59 |
60 |
61 | OUTPUT:
62 | MOV DL,str[DI]
63 | CMP DI,SI
64 | JZ ENDOUTPUT
65 |
66 | MOV DL,str[DI]
67 | MOV AH,2
68 | INT 21H
69 | INC DI
70 |
71 | JMP OUTPUT
72 | ENDOUTPUT:
73 |
74 | MOV AH,4CH
75 | INT 21H
76 |
77 | MAIN ENDP
78 |
79 | NEWLINE PROC
80 | MOV AH,2
81 | MOV DL,0AH
82 | INT 21H
83 | MOV DL,0DH
84 | INT 21H
85 | RET
86 | NEWLINE ENDP
87 |
88 | END MAIN
89 |
90 |
--------------------------------------------------------------------------------
/vowel_consonant.asm:
--------------------------------------------------------------------------------
1 |
2 | .MODEL SMALL
3 | .STACK 100H
4 |
5 | .DATA
6 | str DB 80 DUP
7 |
8 | .CODE
9 | MOV AX, @DATA
10 | MOV DS, AX
11 |
12 | MAIN PROC
13 |
14 |
15 | MOV BL,48
16 | MOV CL, 48
17 | MOV AH, 1
18 |
19 | NEXT:
20 | INT 21H
21 | CMP AL, 0DH
22 | JZ EXIT
23 |
24 | CMP AL,'z'
25 | JG ignore
26 | CMP AL,'A'
27 | JL ignore
28 |
29 | CMP AL,96
30 | JG OK
31 |
32 | CMP AL,90
33 | JG ignore
34 |
35 | OK:
36 |
37 | MOV str[SI], AL
38 |
39 |
40 | CMP str[SI],'A'
41 | JZ vowel
42 | CMP str[SI],'a'
43 | JZ vowel
44 | CMP str[SI],'E'
45 | JZ vowel
46 | CMP str[SI],'e'
47 | JZ vowel
48 | CMP str[SI],'I'
49 | JZ vowel
50 | CMP str[SI],'i'
51 | JZ vowel
52 | CMP str[SI],'O'
53 | JZ vowel
54 | CMP str[SI],'o'
55 | JZ vowel
56 | CMP str[SI],'U'
57 | JZ vowel
58 | CMP str[SI],'u'
59 | JZ vowel
60 |
61 |
62 | ADD CL,1
63 | SUB BL,1
64 | vowel:
65 | ADD BL,1
66 |
67 | ignore:
68 |
69 | INC SI
70 | JMP NEXT
71 | EXIT:
72 |
73 | DEC SI
74 |
75 | MOV AH,2
76 | MOV DL,0AH
77 | INT 21H
78 | MOV DL,0DH
79 | INT 21H
80 |
81 |
82 | ;OUTPUT:
83 | ;MOV DL, str[SI]
84 | ;INT 21H
85 | ;DEC SI
86 | ;CMP SI, -1
87 | ;JZ SESH
88 | ;JMP OUTPUT
89 |
90 | ;SESH:
91 |
92 |
93 | MOV AH,2
94 | MOV DL,BL
95 | INT 21H
96 |
97 | MOV AH,2
98 | MOV DL,0AH
99 | INT 21H
100 | MOV DL,0DH
101 | INT 21H
102 |
103 | MOV AH,2
104 | MOV DL,CL
105 | INT 21H
106 |
107 |
108 | MOV AH, 4CH
109 | INT 21H
110 |
111 | MAIN ENDP
112 |
113 | END MAIN
--------------------------------------------------------------------------------
/3.b. Sorting.asm:
--------------------------------------------------------------------------------
1 | ;sorting
2 |
3 | .MODEL SMALL
4 | .STACK 100H
5 |
6 | .DATA
7 | str DB 100 DUP ?
8 | inpmsg DB "Enter the string: $"
9 | outmsg DB "After Sorting: $"
10 |
11 | n DW ?
12 | .CODE
13 |
14 | MAIN PROC
15 | MOV AX,@DATA
16 | MOV DS,AX
17 |
18 | LEA DX,inpmsg
19 | MOV AH,09H
20 | INT 21H
21 |
22 | MOV SI,0
23 | MOV DI,0
24 |
25 | INPUT:
26 | MOV AH,1
27 | INT 21H
28 | CMP AL,0DH
29 | JZ ENDINPUT
30 |
31 | MOV str[SI],AL
32 | INC SI
33 |
34 | JMP INPUT
35 | ENDINPUT:
36 |
37 | ;sorting segment increasing order (Using bubble sort)
38 | MOV n,SI;
39 | SUB n,1
40 |
41 | MOV CX,n
42 | OUTTOP:
43 | MOV SI,0
44 | MOV DI,1
45 | TOP:
46 | MOV AL,str[SI]
47 | CMP AL,str[DI]
48 | JL SKIP ; JG to decreasing order sort
49 |
50 | XCHG AL,str[DI]
51 | MOV str[SI],AL
52 |
53 | SKIP:
54 |
55 | CMP DI,n
56 | JZ ENDTOP
57 |
58 | INC DI
59 | INC SI
60 | JMP TOP:
61 | ENDTOP:
62 | LOOP OUTTOP:
63 |
64 |
65 | ;Printing segment
66 | CALL NEWLINE
67 | LEA DX,outmsg
68 | MOV AH,09H
69 | INT 21H
70 |
71 | INC n
72 | MOV DI,0
73 |
74 | OUTPUT:
75 | MOV DL,str[DI]
76 | CMP DI,n
77 | JZ ENDOUTPUT
78 |
79 | MOV DL,str[DI]
80 | MOV AH,2
81 | INT 21H
82 | INC DI
83 |
84 | JMP OUTPUT
85 | ENDOUTPUT:
86 |
87 | MOV AH,4CH
88 | INT 21H
89 |
90 | MAIN ENDP
91 |
92 | NEWLINE PROC
93 | MOV AH,2
94 | MOV DL,0AH
95 | INT 21H
96 | MOV DL,0DH
97 | INT 21H
98 | RET
99 | NEWLINE ENDP
100 |
101 | END MAIN
102 |
103 |
--------------------------------------------------------------------------------
/3.a. Countig on string .asm:
--------------------------------------------------------------------------------
1 | ; Count everything
2 |
3 |
4 | .MODEL SMALL
5 | .STACK 100H
6 |
7 | .DATA
8 | inpmsg DB "Enter the string: $"
9 | NV DB "Number of Vowels: $"
10 | NC DB "Number of Consonant: $"
11 | ND DB "Number of Digits: $"
12 | NS DB "Number of Spaces: $"
13 |
14 | vowels DB "AEIOUaeiou$"
15 |
16 | vc DB 48
17 | cc DB 48
18 | dc DB 48
19 | sc DB 48
20 | .CODE
21 |
22 | MAIN PROC
23 | MOV AX,@DATA
24 | MOV DS,AX
25 |
26 | LEA DX,inpmsg
27 | MOV AH,09H
28 | INT 21H
29 |
30 | INPUT:
31 | MOV AH,1
32 | INT 21H
33 | CMP AL,0DH
34 | JZ ENDINPUT
35 |
36 | ;Counting vowel and consonant
37 |
38 | CMP AL,'z'
39 | JG NOTALATTER
40 | CMP AL,'A'
41 | JL NOTALATTER
42 | CMP AL,'Z'
43 | JG TOPP
44 | JMP ENDTOPP
45 | TOPP:
46 | CMP AL,'a'
47 | JL NOTALATTER
48 | ENDTOPP:
49 |
50 |
51 | MOV SI,0
52 | MOV CX,12
53 | TOP:
54 | CMP AL,vowels[SI]
55 | JZ VOW
56 | INC SI
57 | LOOP TOP:
58 | DEC vc
59 | INC cc
60 | VOW:
61 | INC vc
62 |
63 | NOTALATTER:
64 |
65 | ;Counting space
66 | CMP AL,' '
67 | JZ SPACE
68 |
69 | DEC sc
70 | SPACE:
71 | INC sc
72 |
73 | ;Digit count segment
74 | CMP AL,'0'
75 | JL NOTADIGIT:
76 | CMP AL,'9'
77 | JG NOTADIGIT:
78 |
79 | INC dc
80 | NOTADIGIT:
81 |
82 | JMP INPUT
83 | ENDINPUT:
84 |
85 |
86 | ;printig number of vowels
87 | CALL NEWLINE
88 | LEA DX,NV
89 | MOV AH,09H
90 | INT 21H
91 |
92 | MOV DL,vc
93 | MOV AH,2
94 | INT 21H
95 |
96 | ;printing number of consonant
97 | CALL NEWLINE
98 | LEA DX,NC
99 | MOV AH,09H
100 | INT 21H
101 |
102 | MOV DL,cc
103 | MOV AH,2
104 | INT 21H
105 |
106 | ;printing number of digits
107 | CALL NEWLINE
108 | LEA DX,ND
109 | MOV AH,09H
110 | INT 21H
111 |
112 | MOV DL,dc
113 | MOV AH,2
114 | INT 21H
115 |
116 | ;printing number of spaces
117 |
118 | CALL NEWLINE
119 | LEA DX,NS
120 | MOV AH,09H
121 | INT 21H
122 |
123 | MOV DL,sc
124 | MOV AH,2
125 | INT 21H
126 |
127 | MOV AH,4CH
128 | INT 21H
129 |
130 | MAIN ENDP
131 |
132 | ; Newline print function
133 | NEWLINE PROC
134 | MOV AH,2
135 | MOV DL,0AH
136 | INT 21H
137 | MOV DL,0DH
138 | INT 21H
139 | RET
140 | NEWLINE ENDP
141 |
142 | END MAIN
143 |
144 |
--------------------------------------------------------------------------------