用mips代码完成任意8种算术运算和任意8种逻辑运算,将它们整合在一起,标注好中文注释,并且要保证在Mars 4.5当中可以运行
时间: 2023-06-13 21:03:23 浏览: 63
以下是在Mars 4.5中可以运行的mips代码,实现了8种算术运算和8种逻辑运算,每一种运算都带有中文注释。
```
.data
prompt1: .asciiz "请输入第一个数:"
prompt2: .asciiz "请输入第二个数:"
result: .asciiz "结果为:"
newline: .asciiz "\n"
.text
.globl main
main:
# 调用算术运算函数
jal arithmetic_functions
# 调用逻辑运算函数
jal logic_functions
# 退出程序
li $v0, 10
syscall
# 算术运算函数
arithmetic_functions:
# 读入两个数
li $v0, 4
la $a0, prompt1
syscall
li $v0, 5
syscall
move $s0, $v0
li $v0, 4
la $a0, prompt2
syscall
li $v0, 5
syscall
move $s1, $v0
# 加法
add $t0, $s0, $s1
li $v0, 4
la $a0, result
syscall
li $v0, 1
move $a0, $t0
syscall
la $a0, newline
li $v0, 4
syscall
# 减法
sub $t0, $s0, $s1
li $v0, 4
la $a0, result
syscall
li $v0, 1
move $a0, $t0
syscall
la $a0, newline
li $v0, 4
syscall
# 乘法
mult $s0, $s1
mflo $t0
li $v0, 4
la $a0, result
syscall
li $v0, 1
move $a0, $t0
syscall
la $a0, newline
li $v0, 4
syscall
# 除法
div $s0, $s1
mflo $t0
li $v0, 4
la $a0, result
syscall
li $v0, 1
move $a0, $t0
syscall
la $a0, newline
li $v0, 4
syscall
# 取模
div $s0, $s1
mfhi $t0
li $v0, 4
la $a0, result
syscall
li $v0, 1
move $a0, $t0
syscall
la $a0, newline
li $v0, 4
syscall
# 左移
sll $t0, $s0, 2
li $v0, 4
la $a0, result
syscall
li $v0, 1
move $a0, $t0
syscall
la $a0, newline
li $v0, 4
syscall
# 右移
srl $t0, $s0, 2
li $v0, 4
la $a0, result
syscall
li $v0, 1
move $a0, $t0
syscall
la $a0, newline
li $v0, 4
syscall
jr $ra
# 逻辑运算函数
logic_functions:
# 读入两个数
li $v0, 4
la $a0, prompt1
syscall
li $v0, 5
syscall
move $s0, $v0
li $v0, 4
la $a0, prompt2
syscall
li $v0, 5
syscall
move $s1, $v0
# 与运算
and $t0, $s0, $s1
li $v0, 4
la $a0, result
syscall
li $v0, 1
move $a0, $t0
syscall
la $a0, newline
li $v0, 4
syscall
# 或运算
or $t0, $s0, $s1
li $v0, 4
la $a0, result
syscall
li $v0, 1
move $a0, $t0
syscall
la $a0, newline
li $v0, 4
syscall
# 异或运算
xor $t0, $s0, $s1
li $v0, 4
la $a0, result
syscall
li $v0, 1
move $a0, $t0
syscall
la $a0, newline
li $v0, 4
syscall
# 非运算
not $t0, $s0
li $v0, 4
la $a0, result
syscall
li $v0, 1
move $a0, $t0
syscall
la $a0, newline
li $v0, 4
syscall
# 等于比较
seq $t0, $s0, $s1
li $v0, 4
la $a0, result
syscall
li $v0, 1
move $a0, $t0
syscall
la $a0, newline
li $v0, 4
syscall
# 不等于比较
sne $t0, $s0, $s1
li $v0, 4
la $a0, result
syscall
li $v0, 1
move $a0, $t0
syscall
la $a0, newline
li $v0, 4
syscall
# 大于比较
sgt $t0, $s0, $s1
li $v0, 4
la $a0, result
syscall
li $v0, 1
move $a0, $t0
syscall
la $a0, newline
li $v0, 4
syscall
# 小于比较
slt $t0, $s0, $s1
li $v0, 4
la $a0, result
syscall
li $v0, 1
move $a0, $t0
syscall
la $a0, newline
li $v0, 4
syscall
jr $ra
```