所以我创建了这个程序来计算字符串中小写字母的数量。我遇到的问题是,当我到达字符串的末尾并且到达nl
字符时,行beq $t0, $t1, end
没有被执行;它只是无限期地继续下去。我不确定我做错了什么。
.data
msg1: .word 0:24
.text
.globl main
main:
addu $s0, $0, $ra
li $v0, 8
la $a0, msg1
la $a1, 100
syscall
loop:
lb $t0, 4($a0)
li $t1, 0x0a
beq $t0, $t1, end
continue:
li $t1, 'a'
blt $t0, $t1, count
li $t1, 'z'
bgt $t0, $t1, count
count:
addi $t4, $t4, 1
j loop
end:
li $v0, 1
addu $a0, $t2, $0
syscall
jr $ra
答案 0 :(得分:1)
您在循环的每次迭代中将4($a0)
与0x0a
进行比较,但是您永远不会在循环中更改$a0
,因此您不会通过字符串前进而永远不会查看{ {1}}在字符串的末尾。
您的代码中还有一些其他错误。
在循环开始时使用它:
\n