2014-10-10 55 views
0

我在MIPS(組裝)的循環,看起來像這樣:需要幫助解決MIPS(組裝)這個循環

LOOP: 
     slt $t2, $0, $t1 
     beq $t2, $0, DONE 
     subi $t1, $t1, 1 
     addi $s2, $s2, 2 
     j LOOP 
DONE: 

如果$t1值在開始時設置爲10,什麼是$s2的值如果$s2在開始時設置爲零?

我試圖解決這個問題的答案,我得到了20.但是,解決方案手冊說它的200.誰能告訴我什麼我錯過了嗎? $s2會不會遞增2,直到$t1爲0?

+2

我很肯定你是正確的,即答案是20而不是200. – 2014-10-10 01:01:17

+0

任何想法我怎麼能輸出$ s2在這個? – user3701204 2014-10-10 01:21:17

+0

只需使用調試器/模擬器。它是20. – Jester 2014-10-10 01:31:42

回答

2

我@Joe法瑞爾同意,這個循環基本上等同於這個C風格的循環:

while(t1 > 0) 
{ 
    --t1; 
    s2 += 2; 
} 

看起來像你的工作出的書「計算機組成與設計:硬件/軟件接口「我只能設法找到第3版和第4版的勘誤表,而且我也沒有看到這兩個錯字。你正在使用哪個版本?

+0

是的,這正是我的想法。 現在使用第5版,這是最新的(2014) – user3701204 2014-10-10 01:27:50

+0

研究,我意識到解決方案手冊充滿錯誤..關於浪費紙幣 – user3701204 2014-10-10 02:01:18

1

答案是22.因爲如果你重複循環直到t1 = -1,s2將是22,並且當循環再次開始時t2變成0,這導致打印DONE,這是循環退出的地方。