MASTER OF COMPUTER APPLICATIONS
Course Code : MCSL-017
Course Title : C and Assembly Language Programming (Lab Course)
Assignment Number : MCA(1)/L-017/Assignment/17-18
Maximum Marks : 50
Weightage : 25%
Write and run an Assembly language program that converts an ASCII string containing decimal digits, stored in three consecutive locations in the memory into equivalent binary number. You may assume that the three locations contains ASCII equivalent of digit 3, digit 4 and digit 5. The output of this program should be stored in AX register – IGNOU MCA Assignment 2017 – 18
Code:-
DATA SEGMENT
MSG1 DB 10,13,’ENTER ANY STRING :- $’
MSG2 DB 10,13,’ENTERED STRING IS : $’
MSG3 DB 10,13,’ENTERED DATA IS NOT ALPABETS ! $’
MSG4 DB 10,13,’ENTERED DATA NOT A 4 DIGIT VALUE ! $’
MSG5 DB 10,13,’UPPER CASE OF STRING IS :- $’
FLAG DB 0H
P1 LABEL BYTE
M1 DB 0FFH
L1 DB ?
P11 DB 0FFH DUP (‘$’)
DATA ENDS
DISPLAY MACRO MSG
MOV AH,9
LEA DX,MSG
INT 21H
ENDM
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
DISPLAY MSG1
LEA DX,P1
MOV AH,0AH
INT 21H
DISPLAY MSG2
DISPLAY P11
CHECK1: CMP L1,04H
JNE NOT4D
LEA SI,P11
MOV CH,0
MOV CL,L1
DEC CL
CHECK2:
CMP [SI],41H
JB INCFLAG
CMP [SI],7BH
JB NOINC
INCFLAG:
INC FLAG
NOINC:
INC SI
LOOP CHECK2
CHECK3: CMP FLAG,0H
JNE NOTALP
CONV:
LEA SI,P11
MOV CL,L1
MOV CH,0
CHECK4:
CMP [SI],61H
JB DONE1
CMP [SI],5BH
UPR: SUB [SI],20H
DONE1: INC SI
LOOP CHECK4
DISPLAY MSG5
DISPLAY P11
JMP DONE
NOTALP:
DISPLAY MSG3
JMP DONE
NOT4D:
DISPLAY MSG4
DONE:
MOV AH,4CH
INT 21H
CODE ENDS
END START
[codesyntax lang=”asm”]
DATA SEGMENT
MSG1 DB 10,13,’ENTER ANY STRING :- $’
MSG2 DB 10,13,’ENTERED STRING IS : $’
MSG3 DB 10,13,’ENTERED DATA IS NOT ALPABETS ! $’
MSG4 DB 10,13,’ENTERED DATA NOT A 4 DIGIT VALUE ! $’
MSG5 DB 10,13,’UPPER CASE OF STRING IS :- $’
FLAG DB 0H
P1 LABEL BYTE
M1 DB 0FFH
L1 DB ?
P11 DB 0FFH DUP (‘$’)
DATA ENDS
DISPLAY MACRO MSG
MOV AH,9
LEA DX,MSG
INT 21H
ENDM
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
DISPLAY MSG1
LEA DX,P1
MOV AH,0AH
INT 21H
DISPLAY MSG2
DISPLAY P11
CHECK1: CMP L1,04H
JNE NOT4D
LEA SI,P11
MOV CH,0
MOV CL,L1
DEC CL
CHECK2:
CMP [SI],41H
JB INCFLAG
CMP [SI],7BH
JB NOINC
INCFLAG:
INC FLAG
NOINC:
INC SI
LOOP CHECK2
CHECK3: CMP FLAG,0H
JNE NOTALP
CONV:
LEA SI,P11
MOV CL,L1
MOV CH,0
CHECK4:
CMP [SI],61H
JB DONE1
CMP [SI],5BH
UPR: SUB [SI],20H
DONE1: INC SI
LOOP CHECK4
DISPLAY MSG5
DISPLAY P11
JMP DONE
NOTALP:
DISPLAY MSG3
JMP DONE
NOT4D:
DISPLAY MSG4
DONE:
MOV AH,4CH
INT 21H
CODE ENDS
END START
[/codesyntax]
Screen Shots :-
After Execution :-
Note :- To see the variable and its value you have to click vars button in the emulator.