math - 有人可以解释一下汇编中多精度乘法的过程吗?

标签 math assembly multiplication

引用下图和this link .

Figure 2.3

关于图 2.3,我理解为什么 M(乘数)和 N(被乘数)出现在最右列“部分积..M..L”中列出的那些顺序中。它来 self 们通常被教导乘法的方式:

我明白为什么这个数字是 64 位长,因为它是 32 位乘以 32 位。

我知道地址是从 P~P+7 开始的,因为 H.O.最终产品的一部分从 P 和 L.O 开始。最终产品的一部分以 P+7 结束。

我明白为什么每个大矩形都分成上半部分和下半部分,因为 HCS12 一次最多只能处理 16 位乘以 16 位。

我的问题:每个小矩形(下半部分和上半部分)的排列方式让我感到困惑。显然,它应该模仿简化的乘法过程,我可以理解它是如何完成的。我只是不完全理解它是如何转化为数字的。我第一行的链接也显示了类似的过程。我不想猜测或假设我认为正在发生的事情。有人能详细解释一下(最好是步骤)你是如何弄清楚哪个小矩形进入哪一列和哪一行的吗?或者换句话说,你能告诉我乘法过程是如何转化为数字的吗?

最佳答案

你的等式是

( MH<<16 + ML ) x ( NH<<16 + NL> )

<<意思是“左移”。请注意,左移 16 位相当于乘以 65536,两次 16 位相当于一次乘以 32。

如果你把它相乘,你会得到

ML x NL +
MH<<16 x NL +
ML x NH<<16 +
MH<<16 x NH<<16

如果你取消类次:

(ML x NL) << 0 +
(MH x NL) << 16 +
(ML x NH) << 16 +
(MH x NH) << 32

现在移位量显示每个 block 在图形中向左移动的位数。

关于math - 有人可以解释一下汇编中多精度乘法的过程吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9614158/

相关文章:

arrays - 在程序集中打印数组元素

assembly - 使用乘法执行整数除法

math - 如何判断一个点是否在四边形内

javascript - 将一个值除以另一个值

C# 四舍五入除法

c - 在澄清简单的汇编代码和有关我的分析的反馈方面需要帮助

assembly - 查找给定数字的所有因数时出错

python - 数据框中更快的列乘法

assembly - 在 x86 汇编中是否可以用 mul 乘以立即数?

c# - 模拟海水,需要计算复杂的值