Add primes to the examples
parent
68e6b02c07
commit
310a4f58d7
@ -0,0 +1,95 @@
|
|||||||
|
# memory structure prt_next_val, counter, current_number, numbers...
|
||||||
|
|
||||||
|
set 0x03 rgp
|
||||||
|
write
|
||||||
|
set 0x02 rgp
|
||||||
|
set 0x03 rgd
|
||||||
|
write
|
||||||
|
set 0x01 rgp
|
||||||
|
set 0x02 rgd
|
||||||
|
write
|
||||||
|
|
||||||
|
# loop through all numbers until the current one to check by divisibility
|
||||||
|
label 0x03
|
||||||
|
set 0x01 rgp
|
||||||
|
load # load the current counter value
|
||||||
|
copy rgd rgi
|
||||||
|
set 0x02 rgp
|
||||||
|
load # load the current number
|
||||||
|
mod
|
||||||
|
copy rgo rgd # copy the modulus result to rgd
|
||||||
|
clear rgi
|
||||||
|
set 0x01 rgl
|
||||||
|
je # check if the result is 0
|
||||||
|
set 0x01 rgp
|
||||||
|
load
|
||||||
|
set 0x01 rgi
|
||||||
|
add
|
||||||
|
copy rgo rgd
|
||||||
|
write # increase the counter by one and write it back
|
||||||
|
set 0x02 rgp
|
||||||
|
load # load the current number
|
||||||
|
set 0x02 rgi
|
||||||
|
nrt
|
||||||
|
set 0x01 rgp
|
||||||
|
load # load the current counter
|
||||||
|
copy rgd rgi
|
||||||
|
copy rgo rgd
|
||||||
|
set 0x04 rgl
|
||||||
|
je # jump to 0x04 if the counter has reached the square root of the current number
|
||||||
|
set 0x03 rgl
|
||||||
|
goto # repeat if the counter is still smaller than the current number
|
||||||
|
|
||||||
|
# -- exit jump to avoid undefined behaviour
|
||||||
|
set 0xFF rgl
|
||||||
|
goto
|
||||||
|
# -- write the current number and load the next
|
||||||
|
label 0x04
|
||||||
|
set 0x02 rgp
|
||||||
|
set 0xFF rgi
|
||||||
|
set 0xFF rgd
|
||||||
|
mul # calculate 0xFF * 0xFF
|
||||||
|
copy rgo rgi
|
||||||
|
load
|
||||||
|
set 0xFF rgl
|
||||||
|
jg # jump to the end if the current number is larger than 0xFF * 0xFF
|
||||||
|
set 0x00 rgp
|
||||||
|
load # load the current pointer value
|
||||||
|
set 0x01 rgi
|
||||||
|
add # increase the value by 1
|
||||||
|
copy rgo rgd
|
||||||
|
write # write back the increased value
|
||||||
|
set 0x02 rgp
|
||||||
|
load # load the current number
|
||||||
|
print rgd
|
||||||
|
copy rgd rgo # temporarily store the number in rgo
|
||||||
|
set 0x00 rgp
|
||||||
|
load # load the pointer value
|
||||||
|
copy rgd rgp
|
||||||
|
copy rgo rgd # load the current number back into rgd
|
||||||
|
write # write the current number
|
||||||
|
set 0x01 rgl
|
||||||
|
goto # goto the part that increases the current value
|
||||||
|
|
||||||
|
|
||||||
|
# -- exit jump to avoid undefined behaviour
|
||||||
|
set 0xFF rgl
|
||||||
|
goto
|
||||||
|
# -- skips to the next number
|
||||||
|
label 0x01
|
||||||
|
set 0x02 rgp
|
||||||
|
load # load the current number
|
||||||
|
set 0x02 rgi
|
||||||
|
add # add 2 to it
|
||||||
|
copy rgo rgd
|
||||||
|
write # write it back
|
||||||
|
set 0x01 rgp
|
||||||
|
set 0x02 rgd
|
||||||
|
write # set the counter back to 2
|
||||||
|
set 0x03 rgl
|
||||||
|
goto # go back to the beginning
|
||||||
|
|
||||||
|
label 0xFF
|
||||||
|
debug
|
||||||
|
clear rgd
|
||||||
|
exit rgd
|
Loading…
Reference in New Issue