用户输入长度错误导致MIPS32

时间:2016-12-17 16:15:30

标签: assembly 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 个答案:

没有答案