8086 program To multiply two 8 bit numbers
02:59
ØØ 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
0 comments: