2012-11-23 59 views
4

我試圖加載從保存在數據的單詞一個字節:MIPS負載字節(LB)與偏移

爲.text的
.data 
    number: 
    .word w1 

部分:

stringlength: 

    li $t2, 10 
    li $t1, -1 

    la $a0, number 

loop: 

    addiu $t1, $t1, 1 

    lb $t0, $t1($a0) 
    bne $t0, $t2, loop 

    move $v0, $t1 

jr $ra 

*代碼沒有完成

我的問題是,

lb $t0, $t1($a0) 

我試圖實現一個動態偏移量,它將增加1,以檢查字符串中的每個字節,以檢查它是否等於10(dec)。

QtSPIM提出了有關該行的異常語法錯誤,

什麼是這樣做的正確方法是什麼?

回答

4

有沒有這樣的尋址模式,你只需要通過將偏移,如計算自己的地址:

add $t0, $t1, $a0 
lb $t0, ($t0) 
+0

它似乎工作,但究竟如何? 它只是加載存儲在$ a0中的地址+ $ t1中的值嗎? – res

+0

您想要訪問地址爲'$ a0 + $ t1'的內存。這段代碼通過先計算'$ a0 + $ t1'然後從內存中獲取數據。 '$ t0'被用作臨時的,因爲它會被覆蓋。 – Jester

+0

明白了,非常感謝! – res