通过移位和添加来计算13 * x

时间:2013-02-17 04:11:53

标签: assembly mips pcspim

我刚刚开始学习汇编并且无法让这些代码工作,所以如果有人能帮助我,我会非常感激。

main:
ori $5,$0,x 
addu $10,$0,$5
sll $5,3,shft 
addu $10, $0, $5
sll $5,2,shft 
addu $10,$0 ,$5 

“编写一个计算13 * x的程序。通过使用寄存器$ 5获取x并使用ori指令在程序开头加载它来执行此操作。假设x是以无符号二进制表示的正整数。计算13 * x通过移位和添加。不要使用显式乘法指令。不要输入或输出。将结果放在程序末尾的寄存器$ 10中。编写程序,以便可以很容易地改变x的值。

1 个答案:

答案 0 :(得分:2)

以下是基本步骤。由于13x(8 + 4 + 1)x相同,您可以通过移位和添加(伪代码)来实现此目的:

move x to accumulator.

shift x left twice, it is now 4x.
add x to accumulator.

shift x left once more, it is now 8x.
add x to accumulator.

现在累加器保持13x。您所要做的就是找出正确的MIPS指令。


我会告诉你一些你做错的事情,虽然这很模糊,因为这看起来像是作业: - )

$5的修改应按照我上面指定的顺序进行。如果将它向左移动三个,然后向左移动另外两个,则将其乘以2 5 32

此外,您可能想要检查其中一些参数的顺序。它们似乎并不符合预期。