Неверный результат ввода данных пользователем в MIPS32
Итак, у нас есть простая программа, которая принимает ввод (строку) от пользователя, максимальная длина равна 1000, а затем она печатает длину этой строки. Но по какой-то причине результат не является правильным. Например, если я ввожу имя слова я получаю результат 5, и если я ввожу пример слова, я получаю 8, что, конечно, неправильно. Может кто-нибудь сказать мне, почему это происходит? Вот мой код:
.data
buffer: .space 1000
str1: .asciiz "Enter string:"
str2: .asciiz "You wrote:\n"
str3: .asciiz "String length is: \n"
CRLF: .asciiz "\n"
.text
main:
la $a0, str1 # Load and print string asking for string
li $v0, 4
syscall
la $a0, CRLF
li $v0, 4
syscall #change line
li $v0, 8 # take in input
la $a0, buffer # load byte space into address
li $a1, 1000 # allot the byte space for string
move $t0, $a0 # save string to t0
syscall
loop:
lb $t1 0($t0)
beq $t1 $zero end
addi $t0 $t0 1
j loop
end:
la $t1 buffer
sub $t3 $t0 $t1 #$t3 now contains the length of the string
la $a0, str3 # Load and print string about string length
li $v0, 4
syscall
move $a0,$t3
li $v0,1
syscall
la $a0, CRLF
li $v0, 4
syscall #change line
li $v0, 10 # end program
syscall
Небольшой дополнительный вопрос. Как мы можем изменить этот код, чтобы динамически изменять максимальную длину ввода в зависимости от того, что вводит пользователь?