我有一个包含.space 36的数组,其中包含7个数字和8个字母。 (结构如下:xxxxxx11x11x111)
我可以成功加载前6个字符,但我无法加载第一个(和其他)数字。
我像这样迭代数组:
#5th char: the last x before the first 1
la $t0, array
lb $a0, 5($t0)
move $t0, $a0
beq $t0, 'x', loop
这可以正常使用,但如果我写:
#6th position, the first number 1 of the sequence
la $t0, array
lw $a0, 6($t0)
move $t0, $a0
beq $t0, 1, loop
它不起作用! (即使数字是1,它也不会产生正确的beq)
为什么呢?谢谢:))
我以这种方式实例化数组:
#Get the user input string and save it as an array
li $v0, 8
la $a0, array
li $a1, 36
syscall
答案 0 :(得分:3)
它可能无法正常工作,因为执行加载字指令时出现对齐错误。 lw只能加载来自4的倍数的地址(0x1001000,0x1001004,0x1001008,0x100100c,0x1001010等)的数据。 lb(加载字节)然而不必担心对齐,因为你只加载一个字节而不是一个字。这个答案更详细地解释了它: