私は、数値をASCII文字列から整数に変換するmipsプログラムに取り組んでおり、正と負の整数の10進文字列を受け入れる必要があるというパラメーターを使用しています。これは非常に一般的な課題であることは承知していますが、オンラインで問題を解決できませんでした。いくつかのヒントを得ることができましたが、プログラムを実行しようとするとエラーが発生します。
現時点で私が持っているコードは次のとおりです。
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 で書くのはこれが初めてなので、感覚がありません。任意のヒント?ありがとう!
理解できるエラーを修正しました。私の地域にはTAもチューターもいません。可能であれば、これを理解する手助けをしたいと思います。建設的な回答をいただければ幸いです。