在Linux中不使用乘法运算符的情况下,两个整数乘积的汇编代码
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Linux中不使用乘法运算符的情况下,两个整数乘积的汇编代码相关的知识,希望对你有一定的参考价值。
我正在尝试编写一个汇编代码,该代码可以在不使用乘法运算符的情况下从键盘计算两个整数的乘积。我完全被困住了,我是汇编语言和Linux / C的新手,所以请多多指教。
答案
您要使用移位和加法执行此操作。
让我们说您要乘以3 * 3,并且我们有一个4位寄存器。
二进制:0011 * 0011
如果遇到1,我们将向右移找到1的索引的值;如果我们为零,则不执行任何操作:
0011
首先我们在位置0处有1,所以我们将数字添加到一个空寄存器中而不会发生移位:到目前为止,我们有0011
然后我们在位置1处又有了一个1,我们将原始数字0110移到了先前的值0011上
0011 + 0110 => 1001 ; since we have all 0's after we are done
您需要遍历将要相乘的值之一的位,并且每当您有一个1时,将应用一个与其位置相对应的移位。
以上是关于在Linux中不使用乘法运算符的情况下,两个整数乘积的汇编代码的主要内容,如果未能解决你的问题,请参考以下文章