ALP to perform multiplication of two 8-bit hexadecimal numbers.

, by Prashant Gunjal


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: