主要功能组装

时间:2019-06-10 00:26:49

标签: assembly mips

我正在尝试在汇编中实现两个功能。 第一个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

0 个答案:

没有答案