Assembly 通过移位和相加计算13*x

Assembly 通过移位和相加计算13*x,assembly,mips,pcspim,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 for x并在程序开始时用ori指令加载它来实现这一点。假设x是用无符号二进制表示的正整数。通过移位和相加计算13*x。不要使用显式乘法指令。不要做输入或输出。将结

我刚刚开始学习汇编语言,并且很难让这段代码正常工作,所以如果有人能帮助我,我将不胜感激

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 for x并在程序开始时用ori指令加载它来实现这一点。假设x是用无符号二进制表示的正整数。通过移位和相加计算13*x。不要使用显式乘法指令。不要做输入或输出。将结果放入程序末尾的寄存器$10中。编写程序,以便可以轻松更改x的值。“

以下是基本步骤。由于
13x
(8+4+1)x
相同,因此可以通过移位和添加(伪代码)来完成此操作:

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


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

$5
的修改应该按照我上面指定的顺序进行。如果将其向左移动三次,然后再向左移动两次,即乘以25或
32


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

编写一个计算13*x的程序。为此,请使用寄存器$5 for x并在程序开始时使用ori指令加载它。假设x是以无符号二进制表示的正整数。通过移位和加法。不要使用显式乘法指令。不要进行输入或输出。将结果放入程序末尾的寄存器$10中。编写程序以便可以轻松更改x的值。归结起来是:13x=8x+4x+x。谢谢!这对我帮助很大。@user1984103-如果这篇文章回答了你的问题,p租赁。你问的其他问题也一样。
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.