在MIPS汇编中执行17+54加法结果始终为G,求解决方法
MIPS加法结果显示为G的修复方案
问题根源
你代码里的加法逻辑是对的(17+54=71),但输出环节犯了关键错误:
- 你调用了
li $v0,4,这个MIPS系统调用是打印字符串的,要求$a0传入字符串的起始地址。 - 但
variable3是用.word存储的整数,你用la $a0, variable3把它的地址传给$a0后,系统会把该地址存储的71当作ASCII字符解析——而ASCII码71对应的字符正是'G',所以才会输出G。
修正后的代码
.data variable1: .word 17 variable2: .word 54 variable3: .word 0 .text main: lw $t0, variable1 lw $t1, variable2 add $t2, $t0, $t1 sw $t2, variable3 # 使用打印整数的系统调用 li $v0, 1 lw $a0, variable3 syscall li $v0, 10 syscall
关键修改点
- 把打印字符串的
li $v0,4改成打印整数的li $v0,1 - 把取地址的
la $a0, variable3改成加载整数的lw $a0, variable3,这样$a0里存的是加法结果71,而不是内存地址 - 删除了中间无意义的
syscall,避免触发未定义的系统调用行为
内容的提问来源于stack exchange,提问作者Joel
相关产品推荐
相关产品推荐

