You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MIPS汇编中读取空格分隔整数?解决换行输入限制

解决MIPS汇编读取空格分隔整数的问题

哦,这个问题其实比你想的简单——MIPS的syscall 5(读取整数)本身就会自动跳过所有前导空白字符,包括空格、制表符和换行符!所以你现有的代码逻辑其实已经能处理空格分隔的输入了,只是可能你没意识到这一点。

举个实际的例子,下面这段代码会循环读取整数,直到你输入-1作为终止信号,期间不管你用空格还是换行分隔输入,它都能正确识别每个整数:

.data
    prompt: .asciiz "输入若干空格分隔的整数(输入-1结束):\n"
    space: .asciiz " "
    exit_msg: .asciiz "\n程序结束!"

.text
.globl main
main:
    # 打印提示语
    li $v0, 4
    la $a0, prompt
    syscall

read_loop:
    # 读取整数(自动跳过空格/换行)
    li $v0, 5
    syscall
    move $t0, $v0

    # 触发终止条件
    beq $t0, -1, end_program

    # 打印当前读取到的整数(演示用)
    li $v0, 1
    move $a0, $t0
    syscall
    li $v0, 4
    la $a0, space
    syscall

    j read_loop

end_program:
    li $v0, 4
    la $a0, exit_msg
    syscall
    # 退出程序
    li $v0, 10
    syscall

运行说明

当你运行这段代码后,直接输入类似15 25 35 45 -1然后回车,程序会依次读取15、25、35、45,直到遇到-1后退出。

额外提示

  • 如果你需要读取固定数量的整数(比如3个),只需要把循环改成固定次数即可,比如用一个计数器从3递减到0,每次循环减1,直到计数器为0时退出。
  • 如果你是从文件读取输入,这个逻辑同样完全适用,syscall 5会自动处理文件中的空格和换行分隔符。

内容的提问来源于stack exchange,提问作者Giorgi Tsertsvadze

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:27:44