MIPS中创建数组并求和:.word语法错误求助
MIPS代码语法错误修复方案
你的代码报错并非.word指令的问题,而是存在几处语法和指令使用错误,具体修复如下:
全局符号声明拼写错误
原代码中globl main缺少开头的点,MIPS汇编里声明全局符号必须用.globl,正确写法是.globl main。addi指令操作数不完整
addi $t0 , 1缺少源操作数,addi是立即数加法指令,需要三个操作数:目标寄存器、源寄存器、立即数,正确写法为addi $t0, $t0, 1。退出程序的syscall编号错误
原代码用li $v0 , 4调用syscall,但编号4对应打印字符串功能,退出程序需要使用编号10,正确写法是:li $v0, 10 syscall
修复后的完整代码:
.data foo: .word 16,2,77,40,12071 .text .globl main li $t0, 0 # int n = 0 li $t1, 0 # int sum = 0 la $t2, foo # 加载数组基地址到t2 main: loop: beq $t0, 5, end # 当n等于5时跳转到end lw $t3, 0($t2) # 将数组当前元素加载到t3 add $t1, $t1, $t3 # 累加求和 addi $t0, $t0, 1 # n++ add $t2, $t2, 4 # 移动到数组下一个元素(每个word占4字节) j loop end: # 打印结果 li $v0, 1 move $a0, $t1 syscall # 退出程序 li $v0, 10 syscall
内容的提问来源于stack exchange,提问作者Rain Black
相关产品推荐
相关产品推荐

