我正在开发一个 mips 程序,将数字从 ascii 字符串转换为整数,其参数应该接受正整数和负整数十进制字符串。我知道这是一个很常见的任务,但我无法在线解决我的问题。我能够得到一些提示,但在尝试运行程序时仍然收到错误。
这是我此时的代码:
main: # convert string to integer
li $t6, 0x00 # $t6 = 0
li $t7, 0x09 # $t7 = 9
li $v0, 0x00 # initialize $v0 = 0
move $t0, $a0 # $t0 = pointer to string
lb $t1, ($t0) # load $t1 = digit character
loop:
blt $t1, $t6, Done # char < 0
bgt $t1, $t7, Done # char > 9
subu $t1, $t1, $t6 # convert char to int
mul $v0, $v0, 10 # multiply by 10
add $v0, $v0, $t1 # $v0 = $v0 * 10 + digit
addiu $t0, $t0, 1 # point to next char
lb $t1, ($t0) # load $t1 = next digit
bne $t1, $0, loop # repeat if not end of string
jr $ra # return integer
Done: #exit program if string not a number
li $v0, -1 # return -1 in $v0
jr $ra
我在尝试运行它时遇到大量错误,我只是不知道为什么。这是我第一次用mips写,所以我没有感觉。有小费吗?谢谢!
我确实修复了我能理解的错误。我所在的地区没有助教,也没有可用的导师。如果可能的话,我真的很想帮助理解这一点。我希望得到一些建设性的答复。