-2

我刚刚开始学习汇编并且无法使此代码正常工作,因此如果有人可以帮助我,我将不胜感激。

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 的值。

4

1 回答 1

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 532

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

于 2013-02-17T04:16:58.520 回答