用MIPS汇编语言实现:MinMax &X N Min Max写一个函数:搜索大小为N个字word的数组X找出其中的最小值和最大值。输入参数X和N以及返回的最小值和最大值都通过栈传递。显示最小值和最大值通过调用MinMax函数实现
.text .globl MinMax MinMax: addi $sp, $sp, -12 # 分配空间 sw $ra, 0($sp) # 保存返回地址 sw $s0, 4($sp) # 保存s0 sw $s1, 8($sp) # 保存s1
li $s0, 0 # s0保存最小值 li $s1, 0 # s1保存最大值
addi $t0, $a0, 0 # t0保存数组X的地址 add $t1, $zero, $s0 # t1保存当前最小值 add $t2, $zero, $s1 # t2保存当前最大值
Loop: # 循环开始 beq $a1, $zero, End # 如果N为0,跳转到End
lw $t3, 0($t0) # 从X中读取一个word addi $t0, $t0, 4 # X指向下一个word blt $t3, $t1, SetMin # 如果t3 < t1,跳转到SetMin bgt $t3, $t2, SetMax # 如果t3 > t2,跳转到SetMax j Next # 否则跳转到Next
SetMin: # 设置最小值 add $t1, $zero, $t3 # 将t3赋值给t1 j Next
SetMax: # 设置最大值 add $t2, $zero, $t3 # 将t3赋值给t2 j Next
Next: # 继续搜索下一个word addi $a1, $a1, -1 # N = N - 1 j Loop
End: # 搜索结束 add $s0, $zero, $t1 # 将t1赋值给s0 add $s1, $zero, $t2 # 将t2赋值给s1
lw $ra, 0($sp) # 恢复返回地址 lw $s0, 4($sp) # 恢复s0 lw $s1, 8($sp) # 恢复s1 addi $sp, $sp, 12 # 回收空间
jr $ra # 返
原文地址: https://www.cveoy.top/t/topic/dVEC 著作权归作者所有。请勿转载和采集!