├── 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 | --------------------------------------------------------------------------------