A near procedure in assembly lang. that converts a packed 2 digit BCD number stored in AL register to equivalent Binary number – IGNOU MCA Assignment 2015 – 16

By | August 18, 2015

BACHELOR OF COMPUTER APPLICATIONS

 

Course Code : BCSL-022
Course Title : Assembly Language Programming Lab
Assignment Number : BCA(II)/L-022/Assignment/2015
Maximum Marks : 50
Weightage : 25%

 

Write and run (using appropriate calling program) a near procedure in assembly language that converts a packed 2 digit BCD number stored in AL register to equivalent Binary number. For example, if AL contains a packed BCD number 64 as 0110 0100, then the program will convert this BCD to equivalent binary number 01000000. The binary number should be returned back in the AL register itself. 

 

DATA SEGMENT
MSG1 DB “ENTER NUMBER : $”
DIGIT1 DB ?
DIGIT2 DB ?
BINARY DB ?
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,DIGIT1
MOV AL,DIGIT2

MOV CL,4
ROL AH,CL

ADD AL,AH

CALL CONVERT

MOV BINARY,AL

MOV AH,4CH
INT 21H

CODE ENDS

CONVERT PROC NEAR

MOV AH,0
MOV BL,AL

AND AL,0F0H
AND BL,0FH

MOV CL,04H
ROL AL,CL

MOV CL,10
MUL CL

ADD AL,BL
RET
CONVERT ENDP

END START

Program Code :

[codesyntax lang=”asm” lines=”normal”]

DATA SEGMENT
MSG1 DB “ENTER NUMBER : $”
DIGIT1 DB ?
DIGIT2 DB ?
BINARY DB ?
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,DIGIT1
MOV AL,DIGIT2

MOV CL,4
ROL AH,CL

ADD AL,AH

CALL CONVERT

MOV BINARY,AL

MOV AH,4CH
INT 21H

CODE ENDS

CONVERT PROC NEAR

MOV AH,0
MOV BL,AL

AND AL,0F0H
AND BL,0FH

MOV CL,04H
ROL AL,CL

MOV CL,10
MUL CL

ADD AL,BL
RET
CONVERT ENDP

END START

[/codesyntax]

Screen shots :-

Asm_program_Proc_Packed_BCD_to_AL(Binary)

After Execution :

Asm_program_Proc_Packed_BCD_to_AL(Binary)_Out