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

MIPS编程实现根据用户输入分配数组并填充整数的问题

MIPS 动态数组分配与填充实现方案

核心实现逻辑

  • 首先读取用户输入的数组长度,可根据自身需求补充非正输入的异常处理逻辑,本示例默认用户输入为正整数
  • 调用MIPS系统调用完成堆内存分配,单个int类型整数占4字节,总分配字节数 = 数组长度 × 4
  • 启动循环读取用户输入的整数,依次写入数组对应偏移地址完成填充

可运行示例代码

.data
prompt_len: .asciiz "请输入数组长度:"
prompt_elem: .asciiz "请输入第"
prompt_elem_suffix: .asciiz "个整数:"

.text
.globl main
main:
    # 1. 读取用户输入的数组长度
    li $v0, 4
    la $a0, prompt_len
    syscall
    li $v0, 5
    syscall
    move $s0, $v0       # $s0 寄存器存储数组长度

    # 2. 分配对应大小的堆内存作为数组存储空间
    li $v0, 9
    mul $a0, $s0, 4     # 计算需要分配的总字节数
    syscall
    move $s1, $v0       # $s1 寄存器存储数组首地址

    # 3. 循环读取整数填充数组
    li $s2, 0           # $s2 作为循环计数器
fill_loop:
    bge $s2, $s0, fill_end  # 计数器等于数组长度时结束循环

    # 输出输入提示
    li $v0, 4
    la $a0, prompt_elem
    syscall
    li $v0, 1
    addi $a0, $s2, 1    # 展示给用户的序号从1开始
    syscall
    li $v0, 4
    la $a0, prompt_elem_suffix
    syscall

    # 读取整数写入数组
    li $v0, 5
    syscall
    mul $t0, $s2, 4     # 计算当前元素的偏移地址
    add $t1, $s1, $t0
    sw $v0, 0($t1)      # 将输入的整数存入数组对应位置

    addi $s2, $s2, 1    # 计数器自增
    j fill_loop
fill_end:
    # 此处可添加后续数组处理逻辑
    li $v0, 10
    syscall

关键接口说明

  • syscall 5:MIPS读取整数输入的系统调用,输入的返回值存储在$v0寄存器中
  • syscall 9:MIPS堆内存分配系统调用,需要提前在$a0寄存器传入要分配的字节数,返回的内存首地址存储在$v0寄存器中
  • 数组元素采用基地址+偏移量的方式访问,偏移量为元素下标 × 单元素占用字节数(int类型固定为4)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 18:54:07