2013-02-17 29 views
-2

我剛開始學習大會並且無法讓此代碼正常工作,因此如果任何人都可以幫助我,那我會非常感激。通過移動和添加來計算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 $,並在與ORI指令的程序的開始加載它做到這一點。假設x是無符號二進制表示的正整數。通過移位和相加計算13 * x不要使用明確的乘法指令,不要做輸入或輸出,在程序結束時將結果寫入寄存器$ 10中,編寫程序以便x的值很容易被改變。「

+0

編寫一個計算13 * x的程序。通過對x使用寄存器$ 5並通過ori指令在程序的開始處加載它來執行此操作。假設x是一個正整數,表示爲 無符號二進制。通過移動和添加來計算13 * x。 請勿使用明確的乘法指令。不要做輸入或輸出。在計劃結束時將結果存入$ 10 。編寫程序,以便可以輕鬆更改x的值。 – user1984103 2013-02-17 04:12:17

+2

結論是:13x = 8x + 4x + x。 – 2013-02-17 04:14:30

回答

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 或32

另外,您可能想要檢查其中一些參數的順序。他們似乎沒有凝聚預期的東西。

+0

謝謝!這幫了我很多。 – user1984103 2013-02-17 05:23:28

+0

@ user1984103 - 如果這篇文章回答了您的問題,請[接受它](http://meta.stackexchange.com/a/5235/159676)。你問的其他問題也一樣。 – MByD 2013-02-18 09:52:35

相關問題