如何计算使用 MIPS 输入的字符数?

How do I count the number of characters entered using MIPS?

我提示用户输入最多 40 个字符的字符串。我如何计算用户输入了多少个字符?当我计算每个字符时,我需要存储数字、大写和小写字母、空格和任何其他字符的计数。我应该如何识别这些类型字符之间的区别?

.text                # beginning of code
.globl main          # beginning of main

main:                # main procedure
   li  $v0, 4        # print_string service number
   la  $a0, prompt00 # load address of prompt
   syscall           # print prompt

   li  $v0, 8        # read_string service number
   la  $a0, buffer   # load address of buffer
   la  $a1, 40       # max length of 40
   syscall           # read_string

   li $v0, 4         # print_string service number
   la $a0, buffer    # load address of buffer
   syscall           # print buffer

   li  $v0, 10       # using service 10, terminate
   syscall           # terminate

.data                # beginning of data area

   buffer:           # container for input string
      .space  40     # max length of 40 characters
   newline:          # variable to represent a newline
      .asciiz "\n"   # a newline character

   prompt00: .asciiz "Enter up to 40 characters: "

您可以检查您正在查看的寄存器中的字符是否在任何适用范围内:ASCII Values Table

字符串应该以空字符 '\0' 结尾存储,因此您可以查找它来找到长度。