-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy path1a_Case_Conversion.asm
More file actions
91 lines (74 loc) · 2.81 KB
/
Copy path1a_Case_Conversion.asm
File metadata and controls
91 lines (74 loc) · 2.81 KB
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
; My First Git File
;Shabbir Mahmood ID: 14015139 Assembly Language Lab Problem-1a(Case Conversion of Input String) Date: 25-02-2017
.MODEL SMALL
.STACK 100H
.DATA
LF EQU 0AH
CR EQU 0DH
MSG1 DB 'Enter the Input String: $'
MSG2 DB CR,LF,'Converted Output String is: $'
ARRAY DB 100 DUP (?) ; INPUT ARRAY OF STRING
.CODE
MAIN PROC
MOV AX,@DATA
MOV DS,AX ;ADJUSTING PROGRAM SEGMENT PREFIX(PSP)
LEA DX,MSG1
MOV AH,09H
INT 21H ; SHOWING MESSAGE FOR INPUT
MOV BX,00H
MOV AH,01H
LOOP_1:
INT 21H
CMP AL,0DH
JE EXIT_LOOP_1
MOV ARRAY[BX],AL ; STORING CHARACTER INTO ARRAY
INC BX
JMP LOOP_1 ;UNCODITIONAL JUMP TO LOOP_1
EXIT_LOOP_1:
LEA DX,MSG2
MOV AH,09H
INT 21H ; SHOWING MESSAGE FOR OUTPUT
MOV CX,BX ; STORING TOTAL NUMBER OF CHARACTER INTO COUNT REGISTER CX
MOV BX,00H ; CLEARING BASE REGISTER BX
CHECKING_LOOP:
MOV DL,ARRAY[BX] ; COPYING CHARACTER FROM THE ARRAY ONE BY ONE FOR CHECKING
CMP DL,'a'
JL NOT_LOWERCASE ;IF ASCII VALE OF DL IS LESS(JL) THAN 'a' THEN JUMP
CMP DL,'z'
JG NOT_LOWERCASE ;IF ASCII VALE OF DL IS GREATER(JG) THAN 'z' THEN JUMP
;******* LOWER_TO_UPPER_CASE_CONVERSION *******
LOWER_TO_UPPER_CASE_CONVERSION:
SUB DL,20H
MOV AH,02H
INT 21H
INC BX
CMP BX,CX
JNZ CHECKING_LOOP ; IF THE VALUE IS NOT ZERO THEN CHECK THE LOOP AGAIN
JMP TERMINATE
NOT_LOWERCASE:
CMP DL,'A'
JL NOT_UPPERCASE ;IF ASCII VALE OF DL IS LESS(JL) THAN 'a' THEN JUMP
CMP DL,'Z'
JG NOT_UPPERCASE ;IF ASCII VALE OF DL IS GREATER(JG) THAN 'z' THEN JUMP
;******* UPPER_TO_LOWER_CASE_CONVERSION *******
UPPER_TO_LOWER_CASE_CONVERSION:
ADD DL,20H
MOV AH,02H
INT 21H
INC BX
CMP BX,CX
JNZ CHECKING_LOOP ; IF THE VALUE IS NOT ZERO THEN CHECK THE LOOP AGAIN
JMP TERMINATE ; UNCONDITIONAL JUMP TO TERMINATE THE PROGRAM
;******* NON CHARACTER (NOT A-Z & a-z) *******
NOT_UPPERCASE:
MOV AH,02H
INT 21H
INC BX
CMP BX,CX
JNZ CHECKING_LOOP ; IF THE VALUE IS NOT ZERO THEN CHECK THE LOOP AGAIN
JMP TERMINATE ; UNCONDITIONAL JUMP TO TERMINATE THE PROGRAM
TERMINATE:
MOV AH,4CH
INT 21H
MAIN ENDP
END MAIN