2015-04-02 301 views
0

我正在編寫一個用於降低文本字符串的類的程序。這適用於第一個字符,但是當它循環返回第二個beq $ 10,$ 0,done行時總是將$ 10變爲0並終止循環。我不知道爲什麼。意外的循環終止

.text 
.globl main 
main: 
lui $9, 0x1000 

loop: 
lbu $10,0($9) 
sll $0,$0,0 

beq $10,$0,done 
sll $0,$0,0 

addiu $10,$10,0x20 
sw $10,0($9) 
addiu $9,$9,1 
ori $10,$0,1 
j loop 

sll $0,$0,0 
done: sll $0,$0,0 

.data 
string: .asciiz "ABCDEFG" 

回答

1

sw $10,0($9) < - 這是錯誤的

sw應該是一個sb。否則,您將在($9)處存儲32位字0x000000nn(其中0xnn是您的角色)。這意味着1($9)..3($9)中的字節將全部填充0值。因此,在循環的下一次迭代中,您將加載第一個0字節並退出循環。

+0

完美,我想出了自己,但感謝解釋,我不知道這一部分。 – user451711 2015-04-02 19:39:46