我正在编写一个用于降低文本字符串的类的程序。这适用于第一个字符,但当它循环返回第二个beq $ 10,$ 0时,完成的行总是将$ 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"
答案 0 :(得分:1)
sw $10,0($9)
< - 这是错误的
sw
应该是sb
。否则,您将0x000000nn
存储32位字0xnn
(($9)
是您的角色)。这意味着1($9)..3($9)
处的字节都将填充值0.因此,在循环的下一次迭代中,您将加载第一个0字节并退出循环。