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 an assembly language program that multiplies two numbers (of size one byte only) stored in the memory. The result should be output on the computer monitor.
DATA SEGMENT
NUM1 DB ?
NUM2 DB ?
RESULT DB ?
DIGIT1 DB ?
DIGIT2 DB ?
MSG1 DB 10,13,”ENTER FIRST 2 DIGIT NUMBER TO MULTIPLY : $”
MSG2 DB 10,13,”ENTER SECOND 2 DIGIT NUMBER TO MULTIPLY : $”
MSG3 DB 10,13,”RESULT OF MULTIPLICATION IS : $”
RES DB 10 DUP (‘$’)
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
MOV AH,DIGIT2
ADD AL,AH
MOV NUM1,AL
LEA DX,MSG2
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
MOV AH,DIGIT2
ADD AL,AH
MOV NUM2,AL
MOV AH,0
MOV BL,NUM1
MUL BL
LEA SI,RES
CALL HEX2DEC
LEA DX,MSG3
MOV AH,9
INT 21H
LEA DX,RES
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
HEX2DEC PROC NEAR
MOV CX,0
MOV BX,10
LOOP1: MOV DX,0
DIV BX
ADD DL,30H
PUSH DX
INC CX
CMP AX,9
JG LOOP1
ADD AL,30H
MOV [SI],AL
LOOP2: POP AX
INC SI
MOV [SI],AL
LOOP LOOP2
RET
HEX2DEC ENDP
END START
Program Code :
[codesyntax lang=”asm” lines=”normal”]
DATA SEGMENT
NUM1 DB ?
NUM2 DB ?
RESULT DB ?
DIGIT1 DB ?
DIGIT2 DB ?
MSG1 DB 10,13,”ENTER FIRST 2 DIGIT NUMBER TO MULTIPLY : $”
MSG2 DB 10,13,”ENTER SECOND 2 DIGIT NUMBER TO MULTIPLY : $”
MSG3 DB 10,13,”RESULT OF MULTIPLICATION IS : $”
RES DB 10 DUP (‘$’)
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
MOV AH,DIGIT2
ADD AL,AH
MOV NUM1,AL
LEA DX,MSG2
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
MOV AH,DIGIT2
ADD AL,AH
MOV NUM2,AL
MOV AH,0
MOV BL,NUM1
MUL BL
LEA SI,RES
CALL HEX2DEC
LEA DX,MSG3
MOV AH,9
INT 21H
LEA DX,RES
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
HEX2DEC PROC NEAR
MOV CX,0
MOV BX,10
LOOP1: MOV DX,0
DIV BX
ADD DL,30H
PUSH DX
INC CX
CMP AX,9
JG LOOP1
ADD AL,30H
MOV [SI],AL
LOOP2: POP AX
INC SI
MOV [SI],AL
LOOP LOOP2
RET
HEX2DEC ENDP
END START
[/codesyntax]
Screen shots :-
After Execution :