Can anyone explain the process of multipoint multiplication in assembly?

Refer to the picture below and this link .

Figure 2.3

With regard to diagram 2.3, I understand why M (multiplier) and N (multiplier) are in the orders listed in "Partial product..M..L" in the rightmost column. This comes from the way we are usually taught to reproduce:

I understand why a digit is 64 bits long, because it is 32 bits times 32 bits.

I understand that the addresses go from P ~ P + 7 this way because the HO bit of the final product starts with P and the LO bit of the final product ends with P + 7.

I understand why each big rectangle splits into top and bottom half, because HCS12 can handle a maximum of 16 bits at a time, 16 bits at a time.

My problem: The way each small rectangle (bottom and top halves) is arranged confuses me. Apparently it should emulate a simplified multiplication process that I can understand how it's done. I just don't quite understand how this translates into numbers. The link from my first line also shows a similar process. I don't want to guess or guess what I think is going on. Can someone please explain in detail (preferably steps) how you figure out which small rectangle goes into which column and row; or, in other words, can you tell me how the multiplication process translates into a number?


source to share

1 answer

The equation you have

(M H <16 + M L) x (N H <16 + N L)

s <<

, which means "left shift". Note that a left shift by 16 is equivalent to multiplying by 65536, and two shifts by 16 are equivalent to one by 32.

If you multiply this, you get

M L x N L+
M H <16 x N L+
M L x N H<16 +
M H <16 x N H <16

If you pull out the shifts:

(M L x N L) <<0 +
(M H x N L) <16 +
(M L x N H) <<16 +
(M H x N H) <32

The shift values ​​now show the number of bits, each block is shifted from the left in the graph.



All Articles