【发布时间】:2020-01-03 16:30:55
【问题描述】:
la $a0, number
li $t3, 0 #Iterator = 0
li $v1, 0 #Sum = 0
while:
add $t1, $a0, $t3 #t1 = &A[i]
lb $t1, 0($t1) # A[i]
beq $t1, $zero, endwhile
add $v1, $v1, $t1 # Sum
addi $t3, $t3, 1 # Iterator + 1
subi $v1, $v1, 48 # ???? Every digit is added with 48, so i have to subtract but why ???
j while
endwhile:
li $v0, 1 #Print the sum
move $a0, $v1
syscall
有人可以帮助我吗?为什么我必须用 48 减去每个数字才能得到正确的结果? 我不知道为什么它每次都会将 48 添加到我的字符串中的数字。 例如,我有字符串:“1234”,如果我不用 48 减去每个数字,结果是 202。每个数字减去 48,正确的结果是 10。
【问题讨论】:
-
是的,您需要从每个数字中减去 48。请咨询ascii table。可以看到字符
0-9对应的代码是48-57。 -
哦,谢谢..我不知道