整数加法
.data
num1:.word 5
num2:.word 10
.text
lw $t0,num1($zero)
lw $t1,num2($zero)
add $t2,$t0,$t1 # t2 = t0 + t1
li $v0 ,1
add $a0,$zero,$t2
syscall
另一版本
.data
a: .word 3
b: .word 7
.text
lw $t0,a
lw $t1,b
add $t2,$t1,$t0
li $v0,1
move $a0,$t2
syscall
整数减法
.data
num1 : .word 20
num2 : .word 3
.text
lw $s0,num1 # s0 = 20
lw $s1,num2 # s1 = 3
sub $t0,$s0,$s1
li $v0,1
move $a0,$t0
syscall
整数乘法
1.使用 mul指令
mul缺点:乘数只能是16位的,结果是32位。
.data
#立即数直接赋值
.text
addi $s0,$zero,10
addi $s1,$zero,7
mul $t0 ,$s0,$s1
li $v0 ,1
move $a0,$t0
syscall
2.使用 mult 指令
mult指令有两个参数,是两个乘数,而结果存在lo和hi寄存器。结果是2个32位寄存器拼接而成。
.data
.text
addi $t0,$zero,200
addi $t1,$zero,1000
mult $t0,$t1
mflo $s0
li $v0,1
move $a0,$s0
syscall
3.使用 sl 指令 (移位乘法)
.data
.text
addi $s0,$zero,4
sll $t0,$s0,2 # 4X4 =16
li $v0,1
move $a0,$t0
syscall
整数除法
1、div $s0, $ t0, $t1, s0 = t0/t1
.data
.text
addi $t0,$zero,12
addi $t1,$zero,3
div $s0,$t0,$t1
li $v0,1
move $a0,$s0
syscall
2、div $ t0, $t1, {hi} = t0/t1,余数存hi,商存lo
.data
.text
addi $t0,$zero,30
addi $t1,$zero,3
div $t0,$t1
mflo $s0
li $v0,1
move $a0,$s0
syscall
有余数情况
3、div $ t0, $t1,10, t0 = t1/10
.data
.text
addi $t1,$zero,30
div $t0,$t1,6
li $v0,1
move $a0,$t0
syscall