| | |
Printing prime numbers in MIPS
Thread Solved
![]() |
•
•
Join Date: Sep 2007
Posts: 36
Reputation:
Solved Threads: 0
I need to get a MIPS program to print out the first 30 prime numbers and to compute the first 200 (strange, but its the assignment). I can figure out what's wrong with this program. All it does is print 2's out in an infinite loop and I cannot figure out why. We're only supposed to use three procedures (main, testprime, and print) but I'm so bad that I decided to use more. Thank you in advance for helping me.
Assembly Syntax (Toggle Plain Text)
.text .globl main main: # intialize values ori $s0, $0, 20 ori $s1, $0, 30 ori $s2, $0, 2 ori $s3, $0, 2 loop: ori $s3, $0, 2 beq $s0, $0, exit beq $t0, $s4, print j testprime testprime: beq $s2, $s3, prime div $s2, $s3 mfhi $t1 beq $t1, $0, noprime addi $s3, $s3, 1 j testprime noprime: ori $t0, $0, 0 addi $s2, $s2, 1 j loop prime: ori $t0, $0, 1 sub $s0, $s0, $s4 addi $s2, $s2, 1 j loop print: ori $t0, $0, 0 beq $s1, $0, loop sub $s1, $s1, $s4 li $v0, 1 or $a0, $0, $s2 syscall li $v0, 4 la $a0, newline syscall j loop exit: li $v0, 10 syscall .data newline: .asciiz "\n"
Last edited by DeadJustice; Jul 1st, 2009 at 10:24 pm.
Hmm. Sorry I dont know mips assembly but on line 12 It looks like your resetting something back to 2. Just an educated guess.
Good luck!
Assembly Syntax (Toggle Plain Text)
ori $s3, $0, 2
Good luck! "Sometimes, when I lie in bed at night and look up at the stars, I think to myself, "Man! I really need to fix that roof."-Jack Handy
So why aren't you using an empty block of stack and filling it with primes so then you only need to divide by earlier resolved primes instead of the entire set of numbers?
My mind is a bit tired, but as a rule you should always heavily comment your code. Right now would be a good time to do so. Have you tried single stepping your code yet?
My mind is a bit tired, but as a rule you should always heavily comment your code. Right now would be a good time to do so. Have you tried single stepping your code yet?
•
•
Join Date: Sep 2007
Posts: 36
Reputation:
Solved Threads: 0
Well I already noted $s4 wasn't initialized. You're right about commenting my code I usually do but I was just tired. I didn't notice about $t0 though.
My logic was sort of checking each number (n) against a counter which started out as 2 then incremented. If n mod counter equaled zero then I jumped out and didn't count it as prime, but somehow I messed up.
I figured out that I was incrementing my answer before the display so that's what was wrong. I even managed to backtrack to fulfill the original condition of my assignment.
My logic was sort of checking each number (n) against a counter which started out as 2 then incremented. If n mod counter equaled zero then I jumped out and didn't count it as prime, but somehow I messed up.
I figured out that I was incrementing my answer before the display so that's what was wrong. I even managed to backtrack to fulfill the original condition of my assignment.
Last edited by DeadJustice; Jul 2nd, 2009 at 7:25 am.
![]() |
Similar Threads
- finding prime numbers (C++)
- C++ prime number program help (C++)
- Prime Numbers (C)
- prime numbers homework trouble (C++)
- help with array that determines prime numbers (C)
- prime numbers (C++)
- prime numbers (C++)
Other Threads in the Assembly Forum
- Previous Thread: Arithmetic Overflow - MIPS
- Next Thread: protected mode switch
| Thread Tools | Search this Thread |





