8086 program To multiply two 8 bit numbers




ØØ       Explanation :
·           Consider that a byte of data is present in the AL register and second byte of data is present in the BL register.
·           We have to multiply the byte in AL with the byte in BL.
·           Using MUL instruction, multiply the contents of two registers.
·           The multiplication of two 8 bit numbers may result into a 16 bit number. So result is stored in AX register.
·           The MSB is stored in AH and LSB in AL.                                                            

For example :
AL = 09 H

09 H

BL = 02 H
´
02 H



0012 H
ØØ       Algorithm :
Step I       :    Initialise the data segment.
Step II     :    Get the first number in AL register.
Step III   :    Get the second number in BL register.                                      Corel - 3
Step IV    :    Multiply the two numbers.
Step V     :    Display the result.
Step VI    :    Stop
ØØ       Flowchart : Refer flowchart 10.

ØØ       Program :
.model small
.data
a db 09H
b db 02H
.code
       mov     ax, @data               ; Initialize data section
       mov     ds, ax
       mov     ah, 0
       mov     al, a                       ; Load number1 in al
       mov     bl, b                      ; Load number2 in bl
       mul      bl                          ; multiply numbers and result in ax
       mov     ch, 04h                  ; Count of digits to be displayed
       mov     cl, 04h          ; Count to roll by 4 bits
       mov     bx, ax                    ; Result in reg bx
l2:    rol       bx, cl                     ; roll bl so that msb comes to lsb
       mov     dl, bl                     ; load dl with data to be displayed
       and      dl, 0fH          ; get only lsb
       cmp     dl, 09                    ; check if digit is 0-9 or letter A-F
       jbe       l4
       add      dl, 07                    ; if letter add 37H else only add 30H
l4:    add      dl, 30H
       mov     ah, 02                    ; Function 2 under INT 21H (Display character)
       int       21H
       dec      ch                         ; Decrement Count
       jnz       l2
       mov     ah, 4cH                  ; Terminate Program
       int       21H
       end
ØØ       Result :
C:\>tasm 8bit-mul.asm
Turbo Assembler  Version 3.0  Copyright (c) 1988, 1991 Borland International
Assembling file:   8bit-mul.asm
Error messages:    None
Warning messages:  None
Passes:            1
Remaining memory:  438k
C:\>tlink 8bit-mul.obj
Turbo Link  Version 3.0 Copyright (c) 1987, 1990 Borland International
Warning: No stack
C:\>8bit-mul
0012