| 算数 | 加 | add $s1,$s2,$s3 | $s1 = $s2 + $s3 | 三个操作数;检测溢出 |
| 算数 | 减 | sub $s1,$s2,$s3 | $s1 = $s2 - $s3 | 三个操作数;检测溢出 |
| 算数 | 加立即数 | addi $s1,$s2,100 | $s1 = $s2 + 100 | 加常数;检测溢出 |
| 算数 | 无符号加 | addu $s1,$s2,$s3 | $s1 = $s2 + $s3 | 三个操作数;不检测溢出 |
| 算数 | 无符号减 | subu $s1,$s2,$s3 | $s1 = $s2 - $s3 | 三个操作数;不检测溢出 |
| 算数 | 无符号加立即数 | addiu $s1,$s2,100 | $s1 = $s2 + 100 | 加常数;不检测溢出 |
| 算数 | 从协处理器寄存器中获得 | mfc0 $s1,$epc | $s1 = $epc | 复制异常PC到专用处理器 |
| 算数 | 乘 | mult $s2,$s3 | Hi,Lo = $s2 × $s3 | 64位有符号积存在Hi,Lo中 |
| 算数 | 无符号乘 | multu $s2,$s3 | Hi,Lo = $s2 × $s3 | 64位无符号积存在Hi,Lo中 |
| 算数 | 除 | div $s2,$s3 | Lo = $s2 / $s3;Hi = $s2 mod $s3 | Lo = 商;Hi = 余数 |
| 算数 | 无符号除 | div $s2,$s3 | Lo = $s2 / $s3;Hi = $s2 mod $s3 | 无符号商和余数 |
| 算数 | 从Hi中获得 | mfhi $s1 | $s1 = Hi | 用来获得Hi的副本 |
| 算数 | 从Lo中获得 | mflo $s1 | $s1 = Lo | 用来获得Lo的副本 |
| 数据传输 | 取字 | lw $s1,20($s2) | $s1 = Memory[$s2 + 20] | 将一个字从内存中取到寄存器中 |
| 数据传输 | 存字 | sw $s1,20($s2) | Memory[$s2 + 20] = $s1 | 将一个字从寄存器中取到内存中 |
| 数据传输 | 取无符号半字 | lhu $s1,20($s2) | $s1 = Memory[$s2 + 20] | 将半字从内存中取到寄存器中 |
| 数据传输 | 存半字 | sh $s1,20($s2) | Memory[$s2 + 20] = $s1 | 将半字从寄存器中取到内存中 |
| 数据传输 | 取无符号字节 | lbu $s1,20($s2) | $s1 = Memory[$s2 + 20] | 将一个字节从内存中取到寄存器中 |
| 数据传输 | 存字节 | sb $s1,20($s2) | Memory[$s2 + 20] = $s1 | 将一个字节从寄存器中取到内存中 |
| 数据传输 | 取链接字 | ll $s1,20($s2) | $s1 = Memory[$s2 + 20] | 取字作为原子交换的前半部 |
| 数据传输 | 存条件字 | sc $s1,20($s2) | Memory[$s2 + 20] = $s1或$s1 = 0/1 | 存字作为原子交换的后半部 |
| 数据传输 | 立即数读入高16位 | lui $s1,100 | $s1 = 100 ×2^16 | 取立即数并放在高16位 |
| 逻辑运算 | 与 | AND $s1,$s2,$s3 | $s1 = $s2 & $s3 | 三个寄存器操作数按位与 |
| 逻辑运算 | 或 | OR $s1,$s2,$s3 | $s1 = $s2 | $s3 | 三个寄存器操作数按位或 |
| 逻辑运算 | 或非 | NOR $s1,$s2,$s3 | $s1 = ~($s2 | $s3) | 三个寄存器操作数按位或非 |
| 逻辑运算 | 与立即数 | ANDi $s1,$s2,100 | $s1 = $s2 & 100 | 和常数按位与 |
| 逻辑运算 | 或立即数 | ORi $s1,$s2,100 | $s1 = $s2 | 100 | 和常数按位或 |
| 逻辑运算 | 逻辑左移 | sll $s1,$s2,10 | $s1 = $s2 << 10 | 根据常数左移相应位 |
| 逻辑运算 | 逻辑右移 | srl $s1,$s2,10 | $s1 = $s2 >> 10 | 根据常数右移相应位 |
| 条件跳转 | 相等时跳转 | beq $s1,$s2,25 | if($s1 == $s2)跳至PC + 4 + 100 | 相等检测;和PC相关的跳转 |
| 条件跳转 | 不相等时跳转 | bne $s1,$s2,25 | if($s1 != $s2)跳至PC + 4 + 100 | 不相等检测;和PC相关的跳转 |
| 条件跳转 | 小于时置位 | slt $s1,$s2,$3 | if($s2 < $s3) $s1 = 1;否则等于0 | 比较是否小于;补码形式 |
| 条件跳转 | 小于立即数时置位 | slti $s1,$s2,100 | if($s2 < 100) $s1 = 1;否则等于0 | 比较是否小于常数 |
| 条件跳转 | 无符号数比较小于时置位 | sltu $s1,$s2,$3 | if($s2 < $s3) $s1 = 1;否则等于0 | 比较是否小于 |
| 条件跳转 | 无符号数比较小于立即数时置位 | sltiu $s1,$s2,100 | if($s2 < 100) $s1 = 1;否则等于0 | 比较是否小于常数 |
| 无条件跳转 | 跳转 | j 2500 | 跳至10000 | 跳转到目标地址 |
| 无条件跳转 | 跳转至寄存器所指地址 | jr $ra | 跳至$ra | 用于switch语句,以及过程调用的返回 |
| 无条件跳转 | 跳转并链接 | jal 2500 | $ra = PC + 4; 跳至10000 | 用于过程调用 |