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

MIPS代码中双用户输入提示异常:prompt1输出双语句

MIPS输入提示字符串异常输出的解决方法

我在MIPS代码中尝试为变量a和b获取输入,定义了prompt1和prompt2两个字符串作为输入提示。运行代码时,prompt1对应的系统调用会同时输出两条提示语句,但prompt2仅输出自身的提示,我需要让prompt1也能像prompt2一样正常输出。

原代码

.data 
prompt1: .ascii "\nPlease enter input for a: "
    
prompt2: .ascii "\nPlease enter input for b: "

main:
.text


    li $v0, 4
    la $a0, prompt1 
    syscall 

    li $v0, 5
    syscall

    move $t0, $v0
    
    li $v0, 4
    la $a0, prompt2
    syscall 

    li $v0, 5
    syscall

    move $t1, $v0

问题原因

运行时prompt1会连带prompt2的内容一起输出,是因为你使用.ascii定义字符串,这种指令不会自动在字符串末尾添加空终止符\0。MIPS的系统调用4(打印字符串)会持续从内存中读取字符,直到遇到\0才停止,所以prompt1之后的prompt2内容会被一并输出。而prompt2之后没有其他字符串数据,所以输出正常。

解决方法

将定义字符串的.ascii替换为.asciiz,该指令会自动在字符串末尾添加空终止符,让系统调用能正确识别字符串的结束位置:

.data 
prompt1: .asciiz "\nPlease enter input for a: "
    
prompt2: .asciiz "\nPlease enter input for b: "

main:
.text


    li $v0, 4
    la $a0, prompt1 
    syscall 

    li $v0, 5
    syscall

    move $t0, $v0
    
    li $v0, 4
    la $a0, prompt2
    syscall 

    li $v0, 5
    syscall

    move $t1, $v0

内容的提问来源于stack exchange,提问作者Randolf Gabrielle Uy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 22:50:03