MASTER OF COMPUTER APPLICATIONS
Course Code : MCSL-017
Course Title : C and Assembly Language Programming
Assignment Number : MCA(1)/L017/Assign/2013
Write an assembly language program to accept a decimal number and display it’s two’s complement representation in binary and hexadecimal formats
DATA SEGMENT
DIGIT1 DB ?
DIGIT2 DB ?
HEXNUM DB ?
HEXADEC DB 3 DUP (‘$’)
TWOSCOMP DB 10 DUP (‘$’)
MSG1 DB “ENTER NUMBER : $”
MSG2 DB 10,13,”HEXADECIMAL FORM IS : $”
MSG3 DB 10,13,”TWO’S COMPLEMENT FORM IS : $”
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
START:
MOV AX,DATA
MOV DS,AX
LEA DX,MSG1
MOV AH,9
INT 21H
MOV AH,1
INT 21H
SUB AL,30H
MOV DIGIT1,AL
MOV AH,1
INT 21H
SUB AL,30H
MOV DIGIT2,AL
MOV AH,0
MOV AL,DIGIT1
MOV CL,10
MUL CL
ADD AL,DIGIT2
MOV HEXNUM,AL
NOT AL
ADD AL,1
LEA SI,TWOSCOMP
CALL HEX2BIN
MOV AL,HEXNUM
MOV BL,AL
AND AL,0F0H
AND BL,0FH
MOV CL,04H
ROL AL,CL
LEA DI,HEXADEC
MOV [DI],AL
MOV [DI+1],BL
LEA SI,HEXADEC
MOV CL,2
MOV CH,0
CHECK:
CMP [SI],9
JG ALPHA
NUM: ADD [SI],30H
JMP DONE
ALPHA: ADD [SI],37H
DONE:
INC SI
LOOP CHECK
LEA DX,MSG2
MOV AH,9
INT 21H
LEA DX,HEXADEC
MOV AH,9
INT 21H
LEA DX,MSG3
MOV AH,9
INT 21H
LEA DX,TWOSCOMP
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
HEX2BIN PROC NEAR
MOV CX,0
MOV BX,2
LOOP1: MOV DX,0
DIV BX
ADD DL,30H
PUSH DX
INC CX
CMP AX,1
JG LOOP1
ADD AL,30H
MOV [SI],AL
LOOP2: POP AX
INC SI
MOV [SI],AL
LOOP LOOP2
RET
HEX2BIN ENDP
END START
program code :
[codesyntax lang=”asm” lines=”normal”]
DATA SEGMENT
DIGIT1 DB ?
DIGIT2 DB ?
HEXNUM DB ?
HEXADEC DB 3 DUP (‘$’)
TWOSCOMP DB 10 DUP (‘$’)
MSG1 DB “ENTER NUMBER : $”
MSG2 DB 10,13,”HEXADECIMAL FORM IS : $”
MSG3 DB 10,13,”TWO’S COMPLEMENT FORM IS : $”
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
START:
MOV AX,DATA
MOV DS,AX
LEA DX,MSG1
MOV AH,9
INT 21H
MOV AH,1
INT 21H
SUB AL,30H
MOV DIGIT1,AL
MOV AH,1
INT 21H
SUB AL,30H
MOV DIGIT2,AL
MOV AH,0
MOV AL,DIGIT1
MOV CL,10
MUL CL
ADD AL,DIGIT2
MOV HEXNUM,AL
NOT AL
ADD AL,1
LEA SI,TWOSCOMP
CALL HEX2BIN
MOV AL,HEXNUM
MOV BL,AL
AND AL,0F0H
AND BL,0FH
MOV CL,04H
ROL AL,CL
LEA DI,HEXADEC
MOV [DI],AL
MOV [DI+1],BL
LEA SI,HEXADEC
MOV CL,2
MOV CH,0
CHECK:
CMP [SI],9
JG ALPHA
NUM: ADD [SI],30H
JMP DONE
ALPHA: ADD [SI],37H
DONE:
INC SI
LOOP CHECK
LEA DX,MSG2
MOV AH,9
INT 21H
LEA DX,HEXADEC
MOV AH,9
INT 21H
LEA DX,MSG3
MOV AH,9
INT 21H
LEA DX,TWOSCOMP
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
HEX2BIN PROC NEAR
MOV CX,0
MOV BX,2
LOOP1: MOV DX,0
DIV BX
ADD DL,30H
PUSH DX
INC CX
CMP AX,1
JG LOOP1
ADD AL,30H
MOV [SI],AL
LOOP2: POP AX
INC SI
MOV [SI],AL
LOOP LOOP2
RET
HEX2BIN ENDP
END START
[/codesyntax]
Screen shots :-
Outputs :-