【问题标题】:MIPS Assembly finding if prime or notMIPS 程序集发现是否素数
【发布时间】:2022-11-24 16:53:36
【问题描述】:

我写这段代码是为了检查某个东西是否是素数。

    .data
is_prime:   .asciiz "--Prime--"
not_prime:  .asciiz "--No prime--"
element:    .word 2

    .text
main:
    #importeer prime messages
    la $t3, is_prime
    la $t4, not_prime
    lw $t1, element
    # input variabele n
    li $v0, 5
    syscall
    move $t0, $v0

if_loop:
    beq $t0, 1, prime_true
    bgt $t0, 1, prime_check

prime_check:
    beq $t0, $t1, prime_true
    div $t1, $t0
    mfhi $t6
    beq $t6, 0, prime_false
    addi $t0, $t0, 1

prime_true:
    li $v0, 4
    move $a0, $t3
    syscall
    j exit
prime_false:
    li $v0, 4
    move $a0, $t4
    syscall
    j exit
exit:

但是,每次我使用 3、4、5 或 6 等任何输入运行它时,它都会给出 --Prime-- 而对于 4 和 6 它不应该。

【问题讨论】:

  • 我没有看到任何跳回到 if_loop: 所以我想你的代码会声明像 9 这样的东西是素数,因为你目前只检查一个数字是否可以被 2 整除
  • 没错,它说 9 也是素数。忘记补充了,谢谢!
  • 嗯,还有一些问题。现在它说 3 不是质数。

标签: mips32 mars-simulator


【解决方案1】:

我想通了,对于模​​块部分,我切换了我的两个元素。

这是:

div $t1, $t0

并且应该是:

div $t0, $t1

编辑:仍有问题,在 if_loop 循环通过 prime_check 后添加跳转回到 if_loop,现在它说 3 不是素数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-03
    • 2015-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多