8086 program to Multiply two 16 bit numbers
03:56
ØØ Explanation :
·
Consider that a word of data is present in the
AX register and 2nd word of data is present in the BX register.
·
We have to multiply the word in AX with the word
in BX. Using MUL instruction, multiply the contents of the 2 registers.
·
The multiplication of the two 16 bit numbers may
result into a 32 bit number. So result is stored in the DX and AX register.
·
The MSB of result is stored in the DX register
and LSB of result in AX register.
ØØ Algorithm :
Step I : Initialise the data segment.
Step II : Get the first number in AX register.
Step III : Get the second number in BX register.
Step IV : Multiply the two 16 bit numbers.
Step V : Display the result.
Step VI : Stop
ØØ Flowchart : Refer
flowchart 20.
ØØ Program :
.model small
.data
a dw 1234H
b dw 0100H
.code
mov
ax, @data ; Initialize data section
mov
ds, ax
mov
ax, a ;
Load number1 in ax
mov
bx, b ;
Load number2 in bx
mul
bx ;
multiply numbers. Result in dx and ax
mov
si, ax
mov
bx, dx ;
Result in reg bx
mov
dh, 2
l1: mov
ch, 04h ; Count of digits to be displayed
mov
cl, 04h ; Count to roll by 4 bits
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
dec
dh
cmp
dh, 0
mov
bx, si
jnz
l1
mov
ah, 4cH ; Terminate Program
int
21H
end
ØØ Result :
C:\programs>tasm
16-mul.asm
Turbo
Assembler Version 3.0 Copyright (c) 1988, 1991 Borland
International
Assembling
file: 16-mul.asm
Error
messages: None
Warning
messages: None
Passes: 1
Remaining
memory: 438k
C:\programs>tlink
16-mul
Turbo
Link Version 3.0 Copyright (c) 1987,
1990 Borland International
Warning: No
stack
C:\programs>16-mul
00123400
0 comments: