Chapter 1: Q9E (page 2)
A.9 [25] Write and test a MIPS assembly language program to compute and print the first 100 prime numbers. A number n is prime if no numbers except 1 and n divide it evenly. You should implement two routines: ■ test_prime (n) Return 1 if n is prime and 0 if n is not prime. ■ main () Iterate over the integers, testing if each is prime. Print the first 100 numbers that are prime. Test your programs by running them on SPIM.
Short Answer
Corresponding tested on SPIM MIPS assembly language program:
.data
Space:
.ascii “\n”
..text
..global main
main:
li $s0, 2
li $s1, 100
li $s2, 0
loop: addi $a0, $s0, 0
jal prime_test
addi $s0, $s0, 1
beqz $v0, loop
addi $s2, $s2, 1
addi $s3, $v0, 0
li $v0, 1
addi $a0, $s0, -1
syscall #print the prime number
li $v0, 4
la $a0, space
syscall
bne $s1, $s2, loop
li $v0, 10 # exit
syscall
prime_test: li $t0, 2
test loop: beq $t0, $a0, test_exit_true a
divide $a0
div $a0, $t0
mfhi $t1
addi $t0, $t0, 1
bnez $t1, test_loop
addi $v0, $zero, 0
jr $ra
test_exit_true: addi $v0, $zero, 1
jr $ra