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

为何MIPS汇编名称加密程序完成加密却未输出结果?

MIPS加密程序打印问题修复

你的代码加密逻辑没问题,但打印函数里有个明显错误导致加密结果无法正常输出:

在PrintEncryptedName函数中,你先通过la $a0,encryptedname把加密后字符串的地址加载到$a0,但紧接着用move $a0, $s1直接覆盖了这个值——而$s1根本没被赋值为加密字符串的地址,这就导致系统调用打印的是无效地址的内容,自然看不到正确结果。

修正后的打印函数需要去掉那行多余的move指令,直接保留加载好的加密字符串地址:

PrintEncryptedName:
    li $v0, 4
    la $a0, encryptednamemsg
    syscall
    li $v0,4
    la $a0,encryptedname  # 保留加密字符串的地址在$a0中
    syscall
    jr $ra

另外再提醒两个需要确认的细节:

  • 确保$s0已经正确读取了用户输入的偏移量(比如用syscall 5读入整数后存到$s0),这是加密逻辑的核心参数。
  • 定义name和encryptedname时要分配足够的内存空间,比如.space 8(因为名称长度小于8,加上字符串终止符),避免内存溢出破坏数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 13:05:30