TITLE     AL3MULT (COM) MUL and IMUL operations
          .MODEL SMALL
          .CODE
          OrG    100
BEGIN:    JMP    SHORT A10MAIN
;--------------------------------------------------
BYTE1     DB        80H
BYTE2     DB        40H
WORD1     DW        8000H
WORD2     DW        2000H
DWORD1    DD        80000000
DWORD2    DD        20000000
;---------------------------------------------------
.386
A10MAIN   PROC      NEAR                ;Main procedure
          CALL      B10MUL              ;call MUL  routine
          CALL      C10IMUL             ;call IMUL routine
          MOV       AX,4C00H            ;End processing
          INT       21H
A10MAIN   ENDP
;                   Examples of MUL:
;                   ---------------
B10MUL    PROC
          MOV       AL,BYTE1            ;Byte x byte
          MUL       BYTE2               ;  prodect in AX

          MOV       AX,WORD1            ;word x word
          MUL       WORD2               ;  product in DX:AX

          MOV       AL,BYTE1            ;Byte x word
          SUB       AH,AH               ;  extend multiplicand in AH
          MUL       WORD1               ;  prodect in DX:AX

          MOV       EAX,DWORD1          ;Doubleword x
          MUL       DWORD2              ;  doubleword
          RET
B10MUL    ENDP
;                   Examples of IMUL:
;                   -----------------
C10IMUL   PROC
          MOV       AL,BYTE1            ;Byte x byte
          IMUL      BYTE2               ;  prodect in AX

          MOV       AX,WORD1            ;Word x word
          IMUL      WORD2               ;  product in DX:AX

          MOV       AL,BYTE             ;Byte x word
          CBW                           ;  extend multiplicand in AH
          IMUL      WORD1               ;  product in DX:AX

          MOV       EAX,DWORD1          ;Doubleword x
          IMUL      DWoRD2               ;  doubleword
          RET
C10IMUL   ENDP
          END       BEGIN

