好的所以我们有一个简单的程序从用户获取输入(字符串),最大长度为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
一个额外的小问题。我们如何更改此代码以根据用户输入的内容动态地输入最大长度变化?