ALP to perform multiplication of two 8-bit hexadecimal numbers.
6. Write 8086 ALP to perform multiplication of two 8-bit hexadecimal numbers. Use successive addition and add and shift method. Accept input from the user.
;MULTIPLICATION USING:-
;SUCCSIVE ADITION AND SHIFT AND ADD METHOD
DISP MACRO MSG ;MARCO FOR DISPLAY MESSAGE
LEA DX,MSG
MOV AH,09H
INT 21H
ENDM
.MODEL SMALL
.DATA ;DEFINING DATA SEGMENT
MSG1 DB 10,13,"ENTER MULTIPLICAND:$"
MSG2 DB 10,13,"ENTER MULTIPLIER:$"
MSG3 DB 10,13,"ANSWER:$"
MSG4 DB 10,13,"1.SUCCSIVE ADITION$"
MSG5 DB 10,13,"2.SHIFT AND ADD$"
MSG6 DB 10,13,"3.EXIT$"
NO1 DW 1 DUP(0)
NO2 DB 1 DUP(0)
ANS DW 1 DUP(0)
.CODE
MOV AX,@DATA
MOV DS,AX
MENU: DISP MSG4
DISP MSG5
DISP MSG6
MOV AH,01H
INT 21H
SUB AL,30H
CMP AL,09H
JNZ X1
SUB AL,07H
X1:CMP AL,01H
JZ MENU1
CMP AL,02H
JZ MENU2
CMP AL,03H
JZ EXIT
JMP MENU
MENU1: CALL READ ;CALLING PROC FOR READ TWO NO
CALL SADD1 ;CALLING PROC FOR MULTIPLICATION
;USING SUCCSIVE ADITION METHOD
CALL DISP1 ;DISPLAY ANS
JMP MENU
MENU2: CALL READ ;CALLING PROC FOR READ TWO NO
CALL SADD2 ;CALLING PROC FOR MULTIPLICATION
;USING SHIFT AND ADD METHOD
CALL DISP1 ;DISPLAY ANS
JMP MENU
EXIT:MOV AH,4CH
INT 21H
READ PROC NEAR ;PROCEDURE FOR READING TWO NO
DISP MSG1
L1:MOV AH,01H
INT 21H
SUB AL,30H
CMP AL,09H
JBE L2
SUB AL,07H
L2:MOV AH,00H
MOV CL,0CH
ROL AX,CL
MOV DX,AX
L3:MOV AH,01H
INT 21H
SUB AL,30H
CMP AL,30H
JBE L4
SUB AL,07H
L4:MOV AH,00H
MOV CL,08H
ROL AX,CL
ADD DX,AX
L5:MOV AH,01H
INT 21H
SUB AL,30H
CMP AL,09H
JBE L6
SUB AL,07H
L6:MOV AH,00H
MOV CL,04H
ROL AX,CL
ADD DX,AX
L7:MOV AH,01H
INT 21H
SUB AL,30H
CMP AL,09H
JBE L8
SUB AL,07H
L8:MOV AH,00H
ADD DX,AX
MOV NO1,DX
L9:DISP MSG2
L11:MOV AH,01H
INT 21H
SUB AL,30H
CMP AL,09H
JBE L12
SUB AL,07H
L12:MOV CL,04H
ROL AL,CL
MOV DL,AL
L13:MOV AH,01H
INT 21H
SUB AL,30H
CMP AL,30H
JBE L14
SUB AL,07H
L14:ADD DL,AL
MOV NO2,DL
RET
ENDP
SADD1 PROC NEAR ;PROCEDURE FOR SUCCSIVE ADDITION METHOD
M1:MOV AX,NO1
MOV CL,NO2
MOV DX,0000H
MOV CH,00H
M2:ADD DX,AX
LOOP M2
MOV ANS,DX
RET
ENDP
SADD2 PROC NEAR ;PROCEDURE SHIFT AND ADD METHOD
A1:MOV AX,NO1
MOV BL,NO2
MOV CX,0801H
MOV DX,0000H
A2:SHL BL,CL
JC A3
SHL DX,CL
JMP A4
A3:SHL DX,CL
ADD DX,AX
A4:DEC CH
JNZ A2
MOV ANS,DX
RET
ENDP
DISP1 PROC NEAR ;PROCEDURE FOR DISPLAYING NO
R1:DISP MSG3
MOV BX,ANS
MOV CX,0204H
MOV DH,BH
R2:ROL DH,CL
MOV DL,DH
AND DL,0FH
CMP DL,09H
JBE R3
ADD DL,07H
R3:ADD DL,30H
MOV AH,02H
INT 21H
DEC CH
JNZ R2
MOV CX,0204H
MOV DH,BL
R4:ROL DH,CL
MOV DL,DH
AND DL,0FH
CMP DL,09H
JBE R5
ADD DL,07H
R5:ADD DL,30H
MOV AH,02H
INT 21H
DEC CH
JNZ R4
RET
ENDP
END
0 comments:
Post a Comment