Неверный результат ввода данных пользователем в 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

Небольшой дополнительный вопрос. Как мы можем изменить этот код, чтобы динамически изменять максимальную длину ввода в зависимости от того, что вводит пользователь?

0 ответов

Другие вопросы по тегам