我正在尝试在汇编中实现两个功能。 第一个is_prime检查特定数字是否为素数。
第二个find_primes循环遍历从3到101的所有数字,并使用is_prime函数评估其中是否为素数。
我应该在sw(保存字功能)和lw(加载字功能)之间插入什么代码。
名称:find_primes 描述:找到3到101之间的质数。 编码说明:此函数必须调用is_prime以确定是否 数字是素数,并基于的返回值 is_prime,调用print_number以打印该素数 参数:无 返回:无
find_primes:
addi $sp,$sp,-40 # allocate stack frame (on doubleword boundary)
sw $ra, 32($sp) # store the ra & s reg's on the stack
sw $s7, 28($sp)
sw $s6, 24($sp)
sw $s5, 20($sp)
sw $s4, 16($sp)
sw $s3, 12($sp)
sw $s2, 8($sp)
sw $s1, 4($sp)
sw $s0, 0($sp)
lw $ra, 32($sp) # restore the ra & s reg's from the stack
lw $s7, 28($sp)
lw $s6, 24($sp)
lw $s5, 20($sp)
lw $s4, 16($sp)
lw $s3, 12($sp)
lw $s2, 8($sp)
lw $s1, 4($sp)
lw $s0, 0($sp)
addi $sp,$sp,40 # clean up stack
jr $ra
名称:is_prime
说明:检查传入的数字是否为质数 参数:a0要测试以查看是否为质数的数字 如果a0中的数字是质数,则返回:v0的值为1 否则为0的值
is_prime:
addi $sp,$sp,-40 # allocate stackframe (doubleword aligned)
sw $ra, 32($sp) # store the ra & s reg's on the stack
sw $s7, 28($sp)
sw $s6, 24($sp)
sw $s5, 20($sp)
sw $s4, 16($sp)
sw $s3, 12($sp)
sw $s2, 8($sp)
sw $s1, 4($sp)
sw $s0, 0($sp)
lw $ra, 32($sp) # restore the ra & s reg's from the stack
lw $s7, 28($sp)
lw $s6, 24($sp)
lw $s5, 20($sp)
lw $s4, 16($sp)
lw $s3, 12($sp)
lw $s2, 8($sp)
lw $s1, 4($sp)
lw $s0, 0($sp)
addi $sp,$sp,40 # clean up the stack
jr $ra