This is the easiest way I found for 16 bit multiplication. After getting this trick you can also multiply two 32 bits, 64 bits, and so on.
Suppose I have two hex number "ABCD" and "EFGH". Here each alphabet is 4 bit binary number. In 8051 we can multiply 8 bit binary number with using MUL instruction.
here AB= MSB1 (most significant bit of 1st number)
CD= LSB1
EF= MSB2
GH= LSB2
Now,
LSB1*LSB2 = W1,W2
LSB1*MSB2 = W3,W4
MSB1*LSB2 = W5,W6
MSB1*MSB2 = W7,W8
Here Wi(where i is number 1 to 8) is word length. e.g. in F01D W1 is "F0" and W2 is "1D".
This operation can done by MUL instruction. Now the final answer is 32 bit long so we have 4 word of 8 bit length. So assume our final answer is
ABCD*EFGH = WXYZ
.
Here WXYZ each alphabet represent a word length of 8 bit binary number.
Now Z = W2
Y+C1 = W1+W4+W6
Here you find one carry byte. e.g. 110 number 01 is carry byte and value of Y is 10.
X+C2 = W3+W5+W8+C1
W = W7+C2
If you find any carry in last summation ignore it.
Ex. You have two number FFFF*EF9D
FF*9D=9C 63
FF*EF=EE 11
FF*9D=9C 63
FF*EF=EE 11
Z= 63
Y=9C+11+63=110 where Y=10 and C1=01
X=EE+9C+11+01=19C where X=9C and C2=01
W= EE+01=EF
Our answer is FFFF*EF9D = EF 9C 10 63
You will find assembly program of this multiplication in onward post in Fab,2014.
Using this technique you can also solve 32 bits or 64 bits multiplication.
Thank you.
Suppose I have two hex number "ABCD" and "EFGH". Here each alphabet is 4 bit binary number. In 8051 we can multiply 8 bit binary number with using MUL instruction.
here AB= MSB1 (most significant bit of 1st number)
CD= LSB1
EF= MSB2
GH= LSB2
Now,
LSB1*LSB2 = W1,W2
LSB1*MSB2 = W3,W4
MSB1*LSB2 = W5,W6
MSB1*MSB2 = W7,W8
Here Wi(where i is number 1 to 8) is word length. e.g. in F01D W1 is "F0" and W2 is "1D".
This operation can done by MUL instruction. Now the final answer is 32 bit long so we have 4 word of 8 bit length. So assume our final answer is
ABCD*EFGH = WXYZ
.
Here WXYZ each alphabet represent a word length of 8 bit binary number.
Now Z = W2
Y+C1 = W1+W4+W6
Here you find one carry byte. e.g. 110 number 01 is carry byte and value of Y is 10.
X+C2 = W3+W5+W8+C1
W = W7+C2
If you find any carry in last summation ignore it.
Ex. You have two number FFFF*EF9D
FF*9D=9C 63
FF*EF=EE 11
FF*9D=9C 63
FF*EF=EE 11
Z= 63
Y=9C+11+63=110 where Y=10 and C1=01
X=EE+9C+11+01=19C where X=9C and C2=01
W= EE+01=EF
Our answer is FFFF*EF9D = EF 9C 10 63
You will find assembly program of this multiplication in onward post in Fab,2014.
Using this technique you can also solve 32 bits or 64 bits multiplication.
Thank you.
thank you..
ReplyDeletethanks
ReplyDeleteThanks bro :)
ReplyDeleteThank you for sharing such great information very useful to us.
ReplyDeleteEmbedded System Training in Delhi