Attached is a cute prime number printer.

It strikes me that we need a central place to put these things - it'd
really help people get stuck into the lowlevel stuff.

How about an examples/ directory in the CVS tree? Alternatively, I
could set up a "learning parrot assembler" website of some sort,
although Simon's recent article on perl.com was damn good.

Leon

ps the assembler doesn't grok "if I5, NEXT4, NEXT3" or comments
on lines which just have labels
-- 
Leon Brocard.............................http://www.astray.com/
Nanoware...............................http://www.nanoware.org/

... My name is Inigo Montoya. You killed my father. Prepare to die
# Some simple code to print out the primes up to 100
# Leon Brocard <[EMAIL PROTECTED]>

        # I1 holds the number we're currently checking for primality
        set     I1, 1
        # I2 holds the highest number we want to check for primality
        set     I2, 100
        print   "The primes up to "
        print   I2
        print   " are:\n"
        # I1 counts up to I2
REDO:   gt      I1, I2, OVER, NEXT1
NEXT1:
        # I3 counts from 2 up to I4 (I1/2)
        set     I3, 2
        set     I4, 2
        div     I4, I1, I4
LOOP:   gt      I3, I4, PRIME, NEXT2
NEXT2:  
        # Check if I3 is a factor of I1
        mod     I5, I1, I3
        if_i_ic I5, NEXT4, NEXT3
NEXT3:
        # We've found a factor, so it can't be a prime and
        # we can skip right out of this loop and to the next
        # number
        branch  NEXT
NEXT4:  inc     I3
        branch  LOOP
PRIME:
        # We haven't found a factor so it must be a prime
        print   I1
        print   "\n"
NEXT:   
        # Move on to the next number
        inc     I1
        branch  REDO
OVER:   end

Reply via email to