Loops 退出添加带有字符的整数循环

Loops 退出添加带有字符的整数循环,loops,assembly,character,mips,Loops,Assembly,Character,Mips,我正在尝试编写MIPS代码,将从用户处获取的整数求和,直到用户输入字符“*” 输出将为“1 4 3*总计:8” 当用户输入“-1”而不是“*”时,我编写了代码终止循环条件。我试着写“*”语法而不是-1,但它没有给出总和。当用户输入“*”字符时,如何退出循环?这是我的第一个问题,这是我的“-1”工作代码 我的第二个问题是,我使用了“syscall”,我的用法是否适用于stdin和stdout系统函数 非常感谢。您正在读取像-1这样的整数,很明显*不是整数。要退出循环,您必须了解如何读取字符和整数。

我正在尝试编写MIPS代码,将从用户处获取的整数求和,直到用户输入字符“*”

输出将为“1 4 3*总计:8”

当用户输入“-1”而不是“*”时,我编写了代码终止循环条件。我试着写“*”语法而不是-1,但它没有给出总和。当用户输入“*”字符时,如何退出循环?这是我的第一个问题,这是我的“-1”工作代码

我的第二个问题是,我使用了“syscall”,我的用法是否适用于stdin和stdout系统函数


非常感谢。

您正在读取像
-1
这样的整数,很明显
*
不是整数。要退出循环,您必须了解如何读取字符和整数。如果数字只有一位数,则可以将所有输入读取为字符,并根据需要转换为整数。否则,您将不得不读取字符串并转换为整数


至于第二个问题,对于标准输入和输出系统函数使用syscall是正确的

多谢各位。我发布了一个与此相关的新问题
 # $s0=Sum, $s1=Checkvalue 

         .data                    # Data memory area 
 prompt: .asciiz "Total: " 
         .text                    # Code area

 main:  
         move   $s0, $zero        # Sum is made "0"
         li     $s1, -1           # Checkvalue is made "-1"

 loop:   bne    $s0, $s0, exit    # Infinite loop is described
         li     $v0, 5            # Read integer into $v0
         syscall                  # Make the syscall read_int

         move   $t0, $v0          # Move the integer read into $t0

         beq    $t0, $s1, exit    # If the read value is equal "-1", exit
         add    $s0, $t0, $s0     # Add the read integer to sum
         j      loop              # Return loop

 exit:
         li     $v0, 4            # Syscall to print string
         la     $a0, prompt
         syscall

         move   $a0, $s0          # Syscall to print string
         li     $v0, 1
         syscall

         li     $v0, 10           # Syscall to exit
         syscall

 # Reference: www.es.ele.tue.nl/~heco/courses/ProcDesign/SPIM.ppt