意外的循环终止

意外的循环终止

问题描述:

我正在编写一个用于降低文本字符串的类的程序。这适用于第一个字符,但是当它循环返回第二个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" 

sw $10,0($9) < - 这是错误的

sw应该是一个sb。否则,您将在($9)处存储32位字0x000000nn(其中0xnn是您的角色)。这意味着1($9)..3($9)中的字节将全部填充0值。因此,在循环的下一次迭代中,您将加载第一个0字节并退出循环。

+0

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