2011-03-22 93 views
0

我想要一個程序,從用戶接受2個輸入並使用加法相互相乘(例如3 * 2加3兩次),但我不知道它有什麼問題。 在此先感謝彙編代碼問題

.text  
.globl main 
main: 
    li   $v0, 5      # Code for read int. 
    syscall         # Ask the system for service. 
    move   $s0, $v0      # Copy to safer location. 

    # Ask for another number. 
    li   $v0, 5      # Code for read int. 
    syscall         # Ask the system for service. 

loop: 
    add $s0,$s0,$s0 
    addi $v0,$v0,-1 
    bne $v0,$zero,loop         

    li  $v0, 1 
    syscall         # print out actual sum 
    li  $v0, 10       # Code for program exit. 
    syscall 
+0

@ user671645,下次請格式化你的代碼。 – 2011-03-22 17:11:37

+0

有什麼不對?不正確的結果,崩潰,無限循環......? – Justin 2011-03-22 17:17:39

+0

好的謝謝。我可以得到什麼幫助? – user671645 2011-03-22 17:18:11

回答

4

你怎麼看add $s0,$s0,$s0呢?

它使數字加倍。如果迭代次數是6,那麼它會將第一個值翻倍六次。

這功課嗎?如果是這樣,請將該標記添加到問題中。

+0

我知道。這就是我想要的。我想把它的價值翻倍。乘以6 * 6將加倍6 6次得到36. – user671645 2011-03-22 17:26:44

+2

加倍6次得到6,12,24,48,96,192,384,最終結果爲384.不是36。 – wallyk 2011-03-22 18:44:19

0

您每次都會將值加倍,而不是按照需要向其中添加初始值。這意味着它變成$ s0 = 6,$ s0 = 12,$ s0 = 24,$ s0 = 48,$ s0 = 96等。

使用臨時寄存器來保存初始值$ s0($ t0)當你添加的時候就像添加$ s0 $ s0 $ t0(或者這個效果),它會做你認爲你的代碼在做的事情