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

如何在MIPS架构下从键盘输入多个整数到单个寄存器?

从单次键盘输入读取多整数并存为数组,再将数组基地址存入寄存器

首先明确:寄存器无法直接存储整个数组,实际是将数组的基地址存入寄存器,后续通过该地址访问数组元素完成排序等操作。以下以MIPS汇编为例(你提到的.word是MIPS的伪指令,适配你的场景),给出完整实现步骤:

核心步骤

  • 输出输入提示,读取包含空格分隔整数的整行输入到缓冲区
  • 解析缓冲区内容,将每个整数存入预分配的内存数组
  • 将数组的起始地址加载到目标寄存器

示例实现代码

.data
prompt: .asciiz "Enter Input:"
buffer: .space 256  # 分配足够空间存储输入内容
array: .space 24    # 预存6个整数(每个4字节,共24字节)

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

    # 打印换行优化输入体验
    li $v0, 11
    li $a0, '\n'
    syscall

    # 读取整行输入到缓冲区
    li $v0, 8
    la $a0, buffer
    li $a1, 256
    syscall

    # 解析缓冲区中的整数到数组
    la $t0, buffer   # 指向缓冲区当前字符
    la $t1, array    # 指向数组当前存储位置
    li $t2, 0        # 已存入整数计数器(上限6个)

parse_loop:
    # 跳过前导空格
skip_spaces:
    lb $t3, ($t0)
    beq $t3, ' ', increment_buffer
    beq $t3, '\n', parse_done  # 输入结束
    beq $t3, 0, parse_done

    # 字符串转整数
    li $t4, 0
convert_digit:
    mul $t4, $t4, 10
    sub $t3, $t3, '0'
    add $t4, $t4, $t3
    addi $t0, $t0, 1
    lb $t3, ($t0)
    bge $t3, '0', convert_digit

store_integer:
    sw $t4, ($t1)    # 将整数写入数组
    addi $t1, $t1, 4 # 数组指针后移4字节
    addi $t2, $t2, 1 # 计数器加1
    beq $t2, 6, parse_done  # 存满6个停止
    j skip_spaces

increment_buffer:
    addi $t0, $t0, 1
    j skip_spaces

parse_done:
    # 将数组基地址存入寄存器(示例用$s0)
    la $s0, array

    # 此处调用你的排序函数,传入$s0作为数组地址、$t2作为元素个数即可
    # jal your_sort_function

    # 退出程序
    li $v0, 10
    syscall

关键说明

  1. 数组预分配:用.space分配连续内存,若固定6个元素也可写成.word 0,0,0,0,0,0初始化
  2. 整行读取:通过系统调用读取整行输入,避免逐个读取时的多次交互
  3. 解析逻辑:跳过空格,逐个字符转换为整数,存入数组
  4. 寄存器存地址:用la指令将数组起始地址加载到寄存器,后续排序操作通过该地址索引数组元素即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 12:18:28