-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathprime.asm
More file actions
46 lines (35 loc) · 829 Bytes
/
prime.asm
File metadata and controls
46 lines (35 loc) · 829 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
.data
prime_text: .asciiz "--Prime--\n"
no_prime_text: .asciiz "--No prime--\n"
### Pseudo-code:
# int n = input()
# for (int i = 2; i < n; i++):
# if (n % i == 0):
# print("--No prime--")
# break
# print("--Prime--")
.text
main:
li $v0, 5 # read int n
syscall
move $s0, $v0 # move int n to store register
li $t0, 2 # int i = 2
prime_loop:
ble $s0, $t0, is_prime # if n >= i: is_prime
div $s0, $t0 # LO = s / i; HI = s % i;
mfhi $t1 # remainder to $t1
beqz $t1, is_not_prime # if s%i == 0: is_not_prime
addi $t0, $t0, 1 # i++
j prime_loop
is_prime:
la $a0, prime_text # load address of prime_text
li $v0, 4 # print prime text
syscall
j exit
is_not_prime:
la $a0, no_prime_text # load address of no_prime_text
li $v0, 4 # print no_prime_text
syscall
exit:
li, $v0, 10 # exit
syscall