# Can anyone explain the process of multipoint multiplication in assembly?

Refer to the picture below and this link .

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

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.

source to share