常见指令:
结束程序:
li $v0, 10
syscall
________________________________
打印字符串:
li $v0, 4
la $a0, [name]
syscall
________________________________
打印整数:
li $v0, 1
lw $a0, [name] # 来源:数据段
move $a0, $t0 # 来源:寄存器
syscall
________________________________
输入整数并转存:
li $v0, 5
syscall
move $[xx], $v0
一个简单的循环,输出 1+2+3+...+n。
.text
li $v0,5
syscall # 输入一个整数,输入的数存到 $v0 中
move $s0, $v0 # 赋值,$s0 = $v0
li $s1, 0 # $s1 用于存储累加的值,$s1 = 0
li $t0, 1 # $t0 是循环变量
loop:
bgt $t0, $s0, loop_end # 这里用了一个扩展指令 bgt,当 $t0 > $s0 的时候跳转到 loop_end
add $s1, $s1, $t0 # $s1 = $s1 + $t0
addi $t0, $t0, 1 # $t0 = $t0 + 1
j loop # 无条件跳转到 loop 标签
loop_end:
move $a0, $s1 # 赋值,$a0 = $s1
li $v0, 1 # $v0 = 1,在 syscall 中会输出 $a0 的值
syscall
li $v0,10 # $v0 = 10
syscall # 结束程序
一维数组:
.data
array: .space 40 # 存储这些数需要用到数组,数组需要使用 10 * 4 = 40 字节
# 一个 int 整数需要占用 4 个字节,需要存储 10 个 int 整数
# 因此,array[0] 的地址为 0x00,array[1] 的地址为 0x04
# array[2] 的地址为 0x08,以此