意外的循环终止
问题描述:
我正在编写一个用于降低文本字符串的类的程序。这适用于第一个字符,但是当它循环返回第二个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字节并退出循环。
完美,我想出了自己,但感谢解释,我不知道这一部分。 – user451711 2015-04-02 19:39:46